diff --git a/.gitignore b/.gitignore index 31d8998..e68686c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,13 @@ dist/ .vite/ .runtime/ .cache/ +.secrets/ +# Reproducible upstream source/build worktrees. Their revisions and artifact +# hashes are recorded under config/ and fetched by the build scripts. +CAMotics/ +OpenCAMLib/ +cnc_wams_gpt6/ +working_ocl/ native/occt-history/dist/ public/native/occt-history/ __pycache__/ diff --git a/README.md b/README.md index f1ffd9b..a4a5e0e 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ FreeCAD-aligned web CAD frontend baseline for the BitBybit runtime boundary. - Chinese implementation plan in `docs/web-cad-implementation-plan.zh-CN.md` - Full 34-module FreeCAD 1.1.1 scope, Bitbybit/OCCT source-build track and executable task ledger in [docs/freecad-complete-parity-backlog.zh-CN.md](docs/freecad-complete-parity-backlog.zh-CN.md) - Executable reference-oracle and R0-R9 delivery order in [docs/freecad-reference-execution-roadmap.zh-CN.md](docs/freecad-reference-execution-roadmap.zh-CN.md) +- Detailed owner lanes, 83-task WBS, dependencies and gates in [docs/freecad-full-parity-execution-wbs.zh-CN.md](docs/freecad-full-parity-execution-wbs.zh-CN.md) +- Reproducible 34-module source inventory in [config/freecad-source-inventory.json](config/freecad-source-inventory.json), generated and checked with `./npmw run generate:freecad-inventory` and `./npmw run check:freecad-inventory` +- Source-traceable TypeId/property candidate inventory in [config/freecad-type-property-inventory.json](config/freecad-type-property-inventory.json), checked with `./npmw run check:freecad-type-properties` +- Locked FreeCAD 1.1.1 planegcs WASM subset with Dedicated Worker verification for line/circle/curve constraints, SnellsLaw, Ellipse InternalAlignment helpers and clamped cubic B-spline Weight The current milestone is a facade-first integration slice. Part Design document transactions and history are executable in the mock domain adapter; the internal SQLite WASM + OPFS Persistence Worker, schema and in-memory fallback are bundled behind `facade.project`. FreeCAD/OCCT geometry, solver behavior, FCStd interoperability and full workbench semantics remain staged behind the documented P3-P7 gates. diff --git a/chrome-cam-linuxcnc-machine-harness.html b/chrome-cam-linuxcnc-machine-harness.html new file mode 100644 index 0000000..2ad9397 --- /dev/null +++ b/chrome-cam-linuxcnc-machine-harness.html @@ -0,0 +1,5 @@ + + + CAM LinuxCNC WASM Machine Harness +
running
+ diff --git a/chrome-camotics-wasm-harness.html b/chrome-camotics-wasm-harness.html new file mode 100644 index 0000000..af4c867 --- /dev/null +++ b/chrome-camotics-wasm-harness.html @@ -0,0 +1,12 @@ + + + + + + CAMotics WASM Harness + + +
Running CAMotics WASM...
+ + + diff --git a/chrome-fcstd-golden-harness.html b/chrome-fcstd-golden-harness.html new file mode 100644 index 0000000..fffbd0b --- /dev/null +++ b/chrome-fcstd-golden-harness.html @@ -0,0 +1,16 @@ + + + + + + + Chrome FCStd Golden Harness + + +
+

Chrome FCStd Golden Harness

+

Initializing Bitbybit...

+
+ + + diff --git a/chrome-fcstd-semantic-harness.html b/chrome-fcstd-semantic-harness.html new file mode 100644 index 0000000..abf5979 --- /dev/null +++ b/chrome-fcstd-semantic-harness.html @@ -0,0 +1,5 @@ + + + Chrome FCStd semantic round-trip harness +
Initializing FCStd semantic harness.
+ diff --git a/chrome-geometry-feature-harness.html b/chrome-geometry-feature-harness.html new file mode 100644 index 0000000..793765f --- /dev/null +++ b/chrome-geometry-feature-harness.html @@ -0,0 +1,13 @@ + + + + + + + Bitbybit geometry feature harness + + +
Initializing Bitbybit geometry feature harness.
+ + + diff --git a/chrome-part-primitives-harness.html b/chrome-part-primitives-harness.html new file mode 100644 index 0000000..aea4a8b --- /dev/null +++ b/chrome-part-primitives-harness.html @@ -0,0 +1,5 @@ + + + Bitbybit Part primitive harness +
Initializing Part primitive harness.
+ diff --git a/config/camotics-gui-tpl-artifact.json b/config/camotics-gui-tpl-artifact.json new file mode 100644 index 0000000..3e1a833 --- /dev/null +++ b/config/camotics-gui-tpl-artifact.json @@ -0,0 +1,38 @@ +{ + "schemaVersion": 1, + "status": "pass", + "source": { + "path": "CAMotics", + "revision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "version": "1.3" + }, + "build": { + "command": "scons -C CAMotics with_gui=1 with_tpl=1 strict=0 cxxstd=c++17 v8_compress_pointers=0 camotics tplang -j4", + "gui": true, + "tpl": true, + "qtModules": ["QtCore", "QtGui", "QtOpenGL", "QtNetwork", "QtWidgets", "QtWebSockets"], + "compiler": "g++ (Debian 14.2.0-19) 14.2.0", + "sconsVersion": "4.8.1" + }, + "artifacts": { + "CAMotics/camotics": { + "bytes": 6332544, + "sha256": "4a592f91e6987f87aba596dbcaa9ce8826b5f5249361eafe6f7638d039efa658" + }, + "CAMotics/tplang": { + "bytes": 4062360, + "sha256": "7d4ae6e81a7382aa355615690c1a9cfbf00be52cd5c5277e7c421795ceef9b1d" + } + }, + "smoke": { + "camotics": {"command": "QT_QPA_PLATFORM=offscreen CAMotics/camotics --help", "exitCode": 0, "contains": ["Usage:", "--version"]}, + "tplang": {"command": "CAMotics/tplang --help", "exitCode": 0, "contains": ["Usage:", "--linearize", "--json-out"]} + }, + "browserBoundary": { + "nativeGuiExecutable": true, + "browserNativeGuiExecutable": false, + "browserSweepWasmKernel": true, + "fullBrowserProgram": false, + "canonicalGcodeParser": "linuxcnc-wasm" + } +} diff --git a/config/camotics-native-artifact.json b/config/camotics-native-artifact.json new file mode 100644 index 0000000..2d7cc09 --- /dev/null +++ b/config/camotics-native-artifact.json @@ -0,0 +1,124 @@ +{ + "schemaVersion": 2, + "status": "pass", + "source": { + "path": "CAMotics", + "repository": "https://github.com/CauldronDevelopmentLLC/CAMotics.git", + "revision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "version": "1.3" + }, + "cbang": { + "path": ".cache/camotics-native/cbang", + "repository": "https://github.com/CauldronDevelopmentLLC/cbang.git", + "revision": "9b6672a0e2b800a909d799ffa3ab46774cf171b8", + "version": "1.7.2", + "v8PointerCompression": false + }, + "build": { + "mode": "release-native-qt5-tpl-cli", + "compiler": "g++ (Debian 14.2.0-19) 14.2.0", + "sconsVersion": "SCons by Steven Knight et al.:", + "nodeV8PackageVersion": "20.19.2+dfsg-1+deb13u2", + "qtVersion": "5.15.15", + "options": [ + "strict=0", + "cxxstd=c++17", + "v8_compress_pointers=0" + ], + "withGui": true, + "withTpl": true, + "browserExecutable": false + }, + "artifacts": { + "CAMotics/camotics": { + "bytes": 6332544, + "sha256": "4a592f91e6987f87aba596dbcaa9ce8826b5f5249361eafe6f7638d039efa658", + "mode": "100775" + }, + "CAMotics/tplang": { + "bytes": 4062360, + "sha256": "7d4ae6e81a7382aa355615690c1a9cfbf00be52cd5c5277e7c421795ceef9b1d", + "mode": "100775" + } + }, + "cliArtifacts": { + "CAMotics/camsim": { + "bytes": 4566168, + "sha256": "e5446f5089afc402ef5302e41673b24bdb2dfffec020f77c5c31b92466def8a1", + "mode": "100775" + }, + "CAMotics/gcodetool": { + "bytes": 3435664, + "sha256": "0df147ba191be9a14bf828b6a9a2b8d1344927b0870540dd16da2e9dd004a8fc", + "mode": "100775" + }, + "CAMotics/planner": { + "bytes": 4258968, + "sha256": "c2ddbad1e63519796d48fc59e4bb146c4694e5f9a992805657279eb2957ebcca", + "mode": "100775" + }, + "CAMotics/build/camotics.so": { + "bytes": 5354352, + "sha256": "a05293ffff45608ab78a954c0886a3b308a8443f89d5b64aa4dc0e258d8bb707", + "mode": "100775" + } + }, + "cliSmoke": { + "CAMotics/camsim": { + "exitCode": 0, + "containsUsage": true + }, + "CAMotics/gcodetool": { + "exitCode": 0, + "containsUsage": true + }, + "CAMotics/planner": { + "exitCode": 0, + "containsUsage": true + } + }, + "tplTests": { + "command": "cd CAMotics/tests/tplTests && ../testHarness --no-color", + "passed": 10, + "failed": 0, + "outputSha256": "d950c742211b31732a0c2e3eb5b13d142f55c93ce5ed316d426ca64de50c3aeb" + }, + "tplExample": { + "input": "CAMotics/examples/box/box.tpl", + "bytes": 1875, + "lines": 118, + "sha256": "bedef74675d294d94f1e820531c605cb0a0c50f16cad1c01af58d01aa0072ee9" + }, + "guiSmoke": { + "status": "pass", + "processAliveBeforeTerminate": true, + "browserRuntime": false, + "window": { + "title": "CAMotics", + "width": 1200, + "height": 800, + "depth": 24, + "mapState": "IsViewable" + }, + "startupBannerSha256": "4eef1b2b798a03772a6803dc9b70432e1fdc4f404d56f236f803e173a66e3b2a", + "startupStderrSha256": "222d98d486e328bf627d4dde8fae9c7d65b31685fb6cf5d871ff8bf316719811" + }, + "pipelineBoundary": { + "workspaceNativeGuiAvailable": true, + "workspaceNativeTplAvailable": true, + "workspaceNativeCliAvailable": true, + "browserNativeGuiAvailable": false, + "browserNativeTplAvailable": false, + "nativeRole": "host-native-qt5-tpl-cli-sidecar", + "generationAuthority": "camotics-source-stage", + "canonicalGcodeParser": "linuxcnc-wasm", + "camoticsParsesCanonicalPipelineGcode": false, + "order": [ + "cad", + "opencamlib-wasm", + "camotics-source-stage", + "gcode", + "linuxcnc-wasm-parse-execute" + ] + } +} diff --git a/config/camotics-wasm-artifact.json b/config/camotics-wasm-artifact.json new file mode 100644 index 0000000..0185fa3 --- /dev/null +++ b/config/camotics-wasm-artifact.json @@ -0,0 +1,58 @@ +{ + "schemaVersion": 1, + "status": "pass", + "kind": "standalone-camotics-sweep-wasm-kernel", + "upstream": { + "path": "CAMotics", + "repository": "https://github.com/CauldronDevelopmentLLC/CAMotics.git", + "revision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "version": "1.3" + }, + "build": { + "script": "native/camotics-wasm/build.sh", + "compiler": "Emscripten 3.1.69", + "language": "C++17", + "standaloneWasm": true, + "optimization": "O3-lto", + "sourceFiles": { + "CAMotics/src/camotics/sim/Sweep.cpp": "5e32782ab4f258aaba09374a93647e6292088956cbccbae578fbb9dff1c77faf", + "CAMotics/src/camotics/sim/ConicSweep.cpp": "fbc00eb1b5f274d929c59338145da2f054569e831ab1309dd36f2652b61d5dab", + "CAMotics/src/camotics/sim/SpheroidSweep.cpp": "9783b9cb805c138d91e25160fdddf28913b3cb3844d912bf888e795431b68f83", + "native/camotics-wasm/camotics_sweep.cpp": "d5e28dbe64ba4619b0266b902f8956561d4a1f65f4f6da39967c9b5a98e6a147", + "native/camotics-wasm/include/cbang/geom/Rectangle.h": "400e11b1d5bcc8d950758d5cf963f5cabf779e98b48f004c08783ff513be87e0" + } + }, + "artifact": { + "path": "public/vendor/camotics/camotics-sweep.wasm", + "url": "/vendor/camotics/camotics-sweep.wasm", + "bytes": 11932, + "sha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b", + "abiVersion": 1, + "imports": [], + "requiredExports": [ + "memory", + "camotics_sweep_abi_version", + "camotics_conic_depth", + "camotics_spheroid_depth", + "camotics_conic_bbox_count" + ] + }, + "scope": { + "actualUpstreamCppCompiled": true, + "browserExecutable": true, + "conicSweep": true, + "spheroidSweep": true, + "sweepBoundingBoxes": true, + "fullCamoticsProgram": false, + "qtGuiIncluded": false, + "tplIncluded": false, + "gcodeParserIncluded": false, + "canonicalGcodeParser": "linuxcnc-wasm" + }, + "smoke": { + "conicInsideDepth": 1, + "conicOutsideDepth": -1, + "spheroidInsideDepth": 1, + "longMoveBoundingBoxes": 3 + } +} diff --git a/config/chrome-addon-verification.json b/config/chrome-addon-verification.json new file mode 100644 index 0000000..93e59d2 --- /dev/null +++ b/config/chrome-addon-verification.json @@ -0,0 +1,35 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "catalog": { + "installed": 1, + "revision": 1, + "rollbackVersion": "1.0.0" + }, + "security": { + "forgedRejected": true, + "permissionRejected": true, + "removed": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 838, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "ADDON-ALL", + "markerInstalled": 1, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-app-e2e-verification.json b/config/chrome-app-e2e-verification.json new file mode 100644 index 0000000..d4a9412 --- /dev/null +++ b/config/chrome-app-e2e-verification.json @@ -0,0 +1,441 @@ +{ + "schemaVersion": 1, + "generatedAt": "2026-08-08T17:54:57.664Z", + "browserId": "chrome", + "status": "pass", + "browser": { + "product": "Chrome/150.0.7871.128", + "protocolVersion": "1.3", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + }, + "headers": { + "coop": "same-origin", + "coep": "require-corp" + }, + "workflows": [ + "start-to-workspace", + "viewport-multi-object-box-selection", + "freecad-menus", + "command-search-dialog", + "preferences-about-dialogs", + "model-tree-context-menu", + "workbench-change", + "create-sketch-command", + "loft-section-task", + "drawer-collapse", + "cam-workbench-job-flow", + "opfs-save-reopen", + "import-format-selection", + "export-format-selection" + ], + "uiParity": { + "fileMenu": { + "items": 7, + "labels": [ + "New documentCtrl+N", + "Open...Ctrl+O", + "SaveCtrl+S", + "Save as...", + "Import...", + "Export...", + "Close documentCtrl+W" + ], + "expanded": "File" + }, + "commandDialog": { + "modal": true, + "results": 18, + "title": "Command search", + "focused": "Command search" + }, + "preferencesDialog": { + "selects": 3, + "checks": 2, + "modal": true + }, + "aboutDialog": { + "modal": true, + "baseline": true + }, + "contextMenu": { + "items": [ + "Toggle visibility Space", + "Rename F2", + "Recompute object", + "Delete" + ], + "left": 180, + "top": 330 + }, + "multiSelection": { + "count": 2, + "labels": [ + "Sketch", + "Pad" + ] + }, + "viewportBoxSelection": { + "objectCount": 2, + "topologySource": "occt-analytic", + "topologySources": { + "face": "occt-analytic", + "edge": "occt-analytic", + "vertex": "occt-analytic" + }, + "edgeCount": 15, + "vertexCount": 10, + "selectedCount": 2, + "labels": [ + "Box", + "Cylinder" + ], + "gesture": { + "mode": "crossing", + "objectIds": [ + "box", + "cylinder" + ] + } + }, + "camMenu": { + "items": 60, + "groups": [ + "Project Setup", + "Simulation and Tools", + "2D Operations", + "Machining Operations", + "Path Modification" + ], + "labels": [ + "Project SetupCreate Job", + "Fixture", + "Compound Path", + "Property Bag", + "Post Process", + "Export Template", + "Sanity Check", + "Simulation and ToolsSimulators", + "CAM Simulator", + "CAM Simulator GL", + "CAMotics", + "Inspect Path", + "Select Loop", + "Stop Processing", + "Toggle Operation", + "ToolBit Library", + "Tool Controller", + "Create ToolBit", + "ToolBit Dock", + "Load ToolBit", + "Save ToolBit", + "Save ToolBit As", + "2D OperationsProfile", + "Pocket Shape", + "Mill Face", + "Helix", + "Adaptive", + "Slot", + "Area", + "Area Workplane", + "Drilling", + "Tapping", + "Thread Milling", + "Engrave", + "Deburr", + "V-Carve", + "Probe", + "Path Shape", + "Custom Operation", + "Path Shape Tool Controller", + "Machining OperationsDrilling Operations", + "Engraving Operations", + "3D Operations", + "Pocket 3D", + "Path ModificationCopy Operation", + "Copy Path", + "Simple Copy", + "Array", + "Dressup Operations", + "Array Dress-up", + "Axis Map Dress-up", + "Dogbone Dress-up", + "Drag Knife Dress-up", + "Lead In/Out Dress-up", + "Path Boundary Dress-up", + "Ramp Entry Dress-up", + "Holding Tags Dress-up", + "Z Correct Dress-up", + "Set Start Point", + "Comment" + ] + } + }, + "desktop": { + "path": "/workspace/pump-housing", + "workbench": "Part Design", + "persistenceMode": "sqlite-opfs", + "bodyHorizontalOverflow": 0, + "overflowingControls": 0, + "canvas": { + "width": 892, + "height": 679, + "source": "bitbybit-occt", + "uniqueColors": 36, + "glError": 0 + }, + "panelsSeparated": true, + "commandGroups": 5, + "comboTabs": [ + "Model", + "Tasks 1" + ], + "selectionView": true, + "statusBar": true, + "kernelPreviewSource": "bitbybit-occt" + }, + "loftTask": { + "sectionCount": 1, + "checkedSectionCount": 1, + "labels": [ + "Sketch (sketch)" + ], + "listVerticalOverflow": 0, + "panelHorizontalOverflow": 0 + }, + "cam": { + "jobTask": { + "stockModes": 4, + "fields": 5, + "actions": [ + "OK", + "Apply", + "Cancel" + ] + }, + "toolTask": { + "selects": 2, + "inputs": 13 + }, + "operationTask": { + "inputs": 5, + "selects": 2 + }, + "undoRedo": { + "undo": { + "pathPoints": 0, + "redoEnabled": true + }, + "redo": { + "pathPoints": 5, + "undoEnabled": true + } + }, + "extendedTasks": { + "fixture": { + "inputs": 7, + "section": true, + "labels": [ + "Fixture ID", + "Min X", + "Min Y", + "Min Z", + "Max X", + "Max Y", + "Max Z" + ] + }, + "toolBitLoad": { + "inputs": 1, + "textareas": 1, + "schemaVersion": true + }, + "drilling": { + "inputs": 5, + "selects": 2, + "labels": [ + "Final Depth mm", + "Step Down mm", + "Step Over %", + "Horizontal Feed mm/min", + "Vertical Feed mm/min", + "DirectionClimbConventionalEither", + "Coolant ModeNoneFloodMist" + ] + }, + "dragKnife": { + "inputs": 1, + "selects": 1, + "knifeOffset": true + }, + "post": { + "inputs": 4, + "selects": 4, + "labels": [ + "Post Processorgrbllinuxcncmach3-mach4centroidmarlinmasso-g3snapmaker", + "Axis Configuration3-axis4-axis5-axis", + "Rotary AxisABC", + "Rotary Start deg", + "Rotary End deg", + "Tilt AxisABC", + "Tilt Start deg", + "Tilt End deg" + ], + "note": "LinuxCNC WASM - XYZBC RTCP; rotary limit checks are enforced before posting." + } + }, + "ui": { + "workbench": "CAM", + "commandGroups": 4, + "toolbarCommands": 60, + "jobTree": true, + "treeRows": 7, + "operations": 1, + "generated": true, + "toolpathPoints": 5, + "toolpathOperations": 1, + "toolpathLegend": true, + "horizontalOverflow": 0 + } + }, + "persistenceRoundTrip": { + "path": "/workspace/pump-housing", + "documentLabel": "Pump Housing / CAM", + "persistenceMode": "sqlite-opfs" + }, + "importFlow": { + "path": "/import", + "accept": ".FCStd,.fcstd,.step,.stp,.iges,.igs,.brep,.brp", + "exchangeHint": true + }, + "exportFlow": { + "path": "/export", + "formats": { + "STEP": { + "disabled": false, + "selected": true + }, + "IGES": { + "disabled": false, + "selected": false + }, + "STL": { + "disabled": false, + "selected": false + }, + "BREP": { + "disabled": false, + "selected": false + }, + "GLB / GLTF": { + "disabled": true, + "selected": false + }, + "Web CAD package": { + "disabled": true, + "selected": false + } + }, + "selectedAfterInteraction": "STL" + }, + "mobile": { + "path": "/start", + "viewport": { + "width": 390, + "height": 844, + "devicePixelRatio": 2 + }, + "bodyHorizontalOverflow": 0, + "visibleHeading": true, + "visibleActions": true + }, + "accessibility": { + "checked": 15, + "missing": [] + }, + "screenReader": { + "nodes": 162, + "controls": 16, + "namedControls": 16, + "unnamedControls": 0, + "landmarks": 0 + }, + "keyboard": { + "steps": 8, + "named": 8, + "unnamedVisible": 0, + "sequence": [ + { + "tag": "DIV", + "name": "BitBybit Web FreeCAD start page", + "visible": true + }, + { + "tag": "BUTTON", + "name": "Help", + "visible": true + }, + { + "tag": "BUTTON", + "name": "Account and sync", + "visible": true + }, + { + "tag": "BUTTON", + "name": "Open project", + "visible": true + }, + { + "tag": "BUTTON", + "name": "New document", + "visible": true + }, + { + "tag": "BUTTON", + "name": "Create blank document", + "visible": true + }, + { + "tag": "BUTTON", + "name": "Browse examples", + "visible": true + }, + { + "tag": "BUTTON", + "name": "Open a projectBrowse local files", + "visible": true + } + ] + }, + "pwa": { + "manifestLinked": true, + "manifestStatus": 200, + "name": "BitBybit CAD Studio", + "startUrl": "/start", + "scope": "/", + "display": "standalone" + }, + "offline": { + "path": "/start", + "shell": true, + "heading": true, + "mode": "online-shell" + }, + "screenshots": { + "desktop": { + "path": "fixtures/chrome-app-e2e/desktop-workspace.png", + "byteLength": 108999, + "sha256": "33456e593549e88e561d1168eb80644b362fd941725bf4fff76500a14a6d7949" + }, + "cam": { + "path": "fixtures/chrome-app-e2e/cam-workbench.png", + "byteLength": 118390, + "sha256": "5349262af666380bbc96f2932eed2613547ae60870a1d8b9fe44d8ed4831b4ab" + }, + "mobile": { + "path": "fixtures/chrome-app-e2e/mobile-start.png", + "byteLength": 130367, + "sha256": "c3873002bf12dde3a7731a511eb651880a6733ce68b149167d1ff84d6e436b69" + } + }, + "pageErrors": [] +} diff --git a/config/chrome-assembly-verification.json b/config/chrome-assembly-verification.json new file mode 100644 index 0000000..141538d --- /dev/null +++ b/config/chrome-assembly-verification.json @@ -0,0 +1,64 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "geometry": { + "components": 2, + "validShapes": 2, + "releasedShapes": 0 + }, + "solver": { + "status": "solved", + "iterations": 2, + "coincident": "solved", + "distance": "solved", + "shaftX": 5, + "diagnostics": 0, + "workerStatus": "solved", + "angleStatus": "solved", + "angleYaw": 1.5707963267948966 + }, + "tools": { + "bomRows": 2, + "collisionCount": 1, + "explodedMoved": true, + "variantX": 7, + "motionFrames": 5, + "motionEndX": 9 + }, + "scale": { + "components": 1000, + "bomRows": 10, + "durationMs": 6.685000061988831, + "budgetMs": 1000 + }, + "fcstd": { + "bytes": 727, + "objects": 4, + "links": 1, + "reopenedObjects": 4, + "roundTrip": true, + "released": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 980, + "hash": "93bbadc1517ccf2443c74578e92bea6d13c01b02976a53630707f5e7002a6066", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "ASM-TOOLS", + "markerComponents": 2, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-bim-verification.json b/config/chrome-bim-verification.json new file mode 100644 index 0000000..db4137c --- /dev/null +++ b/config/chrome-bim-verification.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "model": { + "sites": 1, + "buildings": 1, + "levels": 1, + "spaces": 1, + "materials": 1, + "elements": 1, + "scheduleRows": 1, + "ifc4Bytes": 492, + "ifc2x3Bytes": 494, + "ifc4Schema": "IFC4", + "ifc2x3Schema": "IFC2X3", + "ifc4Entities": 7, + "ifc4Hierarchy": 4, + "ifc4PropertySets": 1, + "ifc4Classifications": 1, + "ifc2x3RoundTrip": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 848, + "hash": "7a55c8b5c5f1f5354c2819c6289c9ae60351f7c0d6d1844e51eea2785ce7fad8", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "BIM-IFC", + "elements": 1, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-cam-linuxcnc-machine-verification.json b/config/chrome-cam-linuxcnc-machine-verification.json new file mode 100644 index 0000000..156cd60 --- /dev/null +++ b/config/chrome-cam-linuxcnc-machine-verification.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "status": "pass", + "stages": [ + "CAD", + "OCL", + "CAMotics", + "GCODE", + "LinuxCNC WASM" + ], + "openCamLib": { + "backend": "upstream-opencamlib-wasm", + "sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560", + "artifactSha256": "0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89", + "algorithm": "path-drop-cutter", + "surfaceModel": "cad-operation-plane", + "triangleCount": 2, + "inputPoints": 5, + "outputPoints": 48, + "sampling": 1 + }, + "gcode": { + "bytes": 2758, + "hasM428": true, + "hasM429": true, + "hasG93": true, + "hasG94": true, + "hasB": true, + "hasC359": true, + "hasC361": true + }, + "machine": { + "backend": "linuxcnc-wasm", + "status": "accepted", + "dryRunStatus": "dry-run", + "parserAuthority": "linuxcnc-wasm", + "lines": 65, + "blocks": 138, + "trajectorySegments": 48 + }, + "browserId": "chrome", + "browser": { + "product": "150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-cam-native-simulation-verification.json b/config/chrome-cam-native-simulation-verification.json new file mode 100644 index 0000000..9d64e45 --- /dev/null +++ b/config/chrome-cam-native-simulation-verification.json @@ -0,0 +1,134 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "capabilities": { + "openCamLib": { + "status": "available", + "backend": "upstream-opencamlib-wasm", + "sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560", + "artifactSha256": "0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89", + "algorithms": [ + "path-drop-cutter", + "adaptive-path-drop-cutter", + "waterline", + "adaptive-waterline" + ] + }, + "solidRemoval": { + "status": "available", + "backend": "bitbybit-occt-wasm", + "model": "sampled-flat-end-brep", + "nativeSolid": true, + "freeCadNativeEquivalent": false, + "sweepModes": [ + "sampled-flat-end", + "continuous-segment" + ] + }, + "camotics": { + "status": "native-host-available", + "backend": "camotics-native-host-qt5-tpl", + "sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "cbangRevision": "9b6672a0e2b800a909d799ffa3ab46774cf171b8", + "sourcePaths": [ + "CAMotics/src/gcode/machine/GCodeMachine.cpp", + "CAMotics/src/tplang/GCodeModule.cpp", + "CAMotics/src/camotics/sim/ToolSweep.cpp" + ], + "workspaceNativeExecutable": true, + "nativeGuiPath": "CAMotics/camotics", + "nativeTplPath": "CAMotics/tplang", + "nativeArtifactEvidence": "config/camotics-native-artifact.json", + "browserExecutable": false, + "browserWasmKernelExecutable": true, + "nativeCliPath": "CAMotics/camsim", + "wasmKernel": { + "backend": "camotics-upstream-sweep-wasm", + "artifactSha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b", + "scope": [ + "conic-sweep", + "spheroid-sweep", + "sweep-bounding-boxes" + ], + "fullCamoticsProgram": false, + "gcodeParserIncluded": false + }, + "generationAuthority": "camotics-source-stage", + "parserAuthority": "linuxcnc-wasm", + "camoticsParsesCanonicalGcode": false, + "reason": "CAMotics 1.3 native Qt5 GUI and TPL compiler are workspace-verified host sidecars with pinned C! 1.7.2 and V8 ABI settings. The browser executes a standalone upstream Conic/Spheroid sweep WASM subset, not the native ELF, Qt GUI, TPL compiler, or full program; browser G-code generation preserves source-stage motion semantics and sends canonical G-code to LinuxCNC WASM." + } + }, + "openCamLib": { + "backend": "upstream-opencamlib-wasm", + "sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560", + "artifactSha256": "0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89", + "triangles": 2, + "points": 14, + "minimumZ": 2, + "maximumZ": 2, + "deterministic": true + }, + "camotics": { + "backend": "camotics-source-stage-contract", + "sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "nativeExecutable": false, + "lineCount": 18, + "gcodeBytes": 164, + "gcodeHash": "0a7731201c19564c7b00950ee6432b4201918811a70b00db501a3663750fb792", + "parserAuthority": "linuxcnc-wasm", + "camoticsParsesCanonicalGcode": false + }, + "pipeline": { + "stages": [ + "cad", + "opencamlib-wasm", + "camotics-source-stage", + "gcode", + "linuxcnc-wasm-parse-execute" + ], + "canonicalGcodeAuthority": "linuxcnc-wasm", + "camoticsSemanticParser": false, + "linuxcncWasmExecution": "handoff-required" + }, + "solidRemoval": { + "backend": "bitbybit-occt-wasm", + "model": "sampled-flat-end-brep", + "sweepMode": "sampled-flat-end", + "nativeSolid": true, + "freeCadNativeEquivalent": false, + "sampleCount": 7, + "stockVolume": 299.99999999999994, + "removedVolume": 12, + "remainingVolume": 287.99999999999994, + "structuralValid": true, + "solids": 1, + "meshVertices": 48, + "meshTriangles": 28, + "brepBytes": 4885, + "brepHash": "76237c323f4614488e527b92c9ad7e3d8b6b5db968b5d7a481da26da59fe00be" + }, + "curvedSolidRemoval": { + "backend": "bitbybit-occt-wasm", + "model": "continuous-segment-sweep-brep", + "sweepMode": "continuous-segment", + "sampleCount": 13, + "stockVolume": 299.99999999999994, + "removedVolume": 13.876647806980372, + "remainingVolume": 286.12335219301957, + "structuralValid": true, + "solids": 1, + "meshVertices": 506, + "meshTriangles": 652 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-cam-verification.json b/config/chrome-cam-verification.json new file mode 100644 index 0000000..0404d48 --- /dev/null +++ b/config/chrome-cam-verification.json @@ -0,0 +1,100 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "extended": { + "commandSurface": 60, + "operationKinds": 22, + "dressupKinds": 9, + "toolAssetRoundTrip": true, + "jobAssetRoundTrip": true, + "metadataRoundTrip": true, + "metadataComments": 1, + "metadataProperties": 3, + "metadataCompounds": 1, + "undoRedo": true, + "startPointChanged": true, + "materialRemoval": true, + "removalTimelinePoints": 23, + "fixtureCollision": true, + "multiAxis": true + }, + "geometry": { + "sourceShape": "shape-msjl38sz-1", + "valid": true, + "volume": 30 + }, + "job": { + "stockMode": "from-base-bound-box", + "tools": 2, + "controllers": 2, + "operations": 3, + "operationKinds": [ + "profile", + "pocket", + "drilling" + ], + "operationStatuses": [ + "generated", + "generated", + "generated" + ], + "pathPoints": 23, + "dressups": 1, + "setup": { + "safeHeightOffset": 1, + "clearanceHeightOffset": 2, + "coolantMode": "flood" + }, + "sanity": "pass", + "sanityIssues": 0, + "simulation": "pass", + "collisions": 0, + "collisionFixture": 1, + "simulationDiagnostics": 0, + "postprocessors": [ + "grbl", + "linuxcnc", + "mach3-mach4", + "centroid", + "marlin", + "masso-g3", + "snapmaker" + ], + "post": "linuxcnc", + "postHashes": { + "grbl": "9c61705ba595d923d2b44af6ac3c241084ceba2e09f79b1fea73480b4b6a0335", + "linuxcnc": "dc7cb5950e6726652bdec45bcc5050e57df90bc02d5474981534835a6dc67ea6", + "mach3-mach4": "3a19dd81b0aeec7f39e801912af13f66d6cdca564a094c558a6fc7fa5a829140", + "centroid": "ae2e7a7567ef16627bc9ec3279763c492d1a4836905133fdf438a1f7e9043a3d", + "marlin": "f31fe4e2bc177cb4b9d5942f807d26df1a15d8081c244d9b38ac18ad7323e84b", + "masso-g3": "7503170abe807b3be53c599efd3626a3b471809875c898107ce3f7aa378247cb", + "snapmaker": "ee8e3b7cc0403e62e3f382023bec7d67e04edf64c2be69543ecaf6a504c5c638" + }, + "unsafePostRejected": true, + "gcodeBytes": 1055, + "gcodeHash": "dc7cb5950e6726652bdec45bcc5050e57df90bc02d5474981534835a6dc67ea6", + "deterministic": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 2478, + "hash": "a5259a9b16395ed0d76f5b7f06303aec72ab5f6b4c1aa3b05bd094f794ec88a7", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "CAM-ALL", + "operations": 3, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-camotics-wasm-verification.json b/config/chrome-camotics-wasm-verification.json new file mode 100644 index 0000000..7d89f08 --- /dev/null +++ b/config/chrome-camotics-wasm-verification.json @@ -0,0 +1,27 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "kernel": { + "backend": "camotics-upstream-sweep-wasm", + "sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "artifactSha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b", + "abiVersion": 1, + "imports": 0, + "fullCamoticsProgram": false, + "gcodeParserIncluded": false + }, + "sweep": { + "conicInsideDepth": 1, + "conicOutsideDepth": -1, + "spheroidInsideDepth": 1, + "longMoveBoundingBoxes": 3, + "deterministic": true + }, + "parserAuthority": "linuxcnc-wasm", + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-data-verification.json b/config/chrome-data-verification.json new file mode 100644 index 0000000..51d865e --- /dev/null +++ b/config/chrome-data-verification.json @@ -0,0 +1,78 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "adapters": { + "total": 7, + "supported": 4, + "proxy": 3 + }, + "records": { + "total": 7, + "proxy": 3, + "manifestBytes": 18893 + }, + "points": { + "sourceCount": 6, + "parsedFormats": [ + "pts", + "pcd", + "ply" + ], + "mergedCount": 12, + "croppedCount": 4, + "polygonCroppedCount": 4, + "reducedCount": 1, + "structured": { + "width": 3, + "height": 2, + "cells": 6 + }, + "centered": { + "x": 0, + "y": 0, + "z": 0 + }, + "exportBytes": { + "asc": 36, + "pts": 38, + "xyz": 36, + "csv": 42, + "pcd": 168, + "ply": 139 + } + }, + "reverseEngineering": { + "planeRms": 1.725911830690932e-16, + "sphereRadius": 2, + "cylinderRadius": 3, + "cylinderHeight": 8, + "polynomialRms": 0, + "segmentCount": 2, + "segmentSizes": [ + 2, + 2 + ] + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 8049, + "hash": "cddf902c92cbe1b131aaf8a1bc800f3a7acb0bddc234acaa41130f9e0d6d0860", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "DATA-ALL", + "records": 7, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-draft-verification.json b/config/chrome-draft-verification.json new file mode 100644 index 0000000..54c0ec9 --- /dev/null +++ b/config/chrome-draft-verification.json @@ -0,0 +1,59 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "workingPlane": { + "worldPoint": { + "x": 10, + "y": 22, + "z": 33 + }, + "snapped": { + "x": 1, + "y": 2.5 + } + }, + "objects": { + "total": 9, + "lines": 2, + "wires": 1, + "circles": 1, + "clones": 5, + "arrays": 4, + "layers": 2, + "sourceDependencies": 5 + }, + "operations": { + "moved": true, + "rotated": true, + "scaled": true, + "offsetLength": 8, + "trimmedLength": 4, + "cloneTranslation": { + "x": 10, + "y": 0 + }, + "arrayCount": 4 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 1566, + "hash": "80ed54a852ec54887444b8c003ddd17dcf0cdf73322d2745cb768000306b27b5", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "DRAFT-OPS", + "markerObjects": 9, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-engineering-verification.json b/config/chrome-engineering-verification.json new file mode 100644 index 0000000..a929cb4 --- /dev/null +++ b/config/chrome-engineering-verification.json @@ -0,0 +1,65 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "integrity": { + "complete": true, + "artifacts": 4, + "kinds": 4, + "missingKinds": 0, + "missingRefs": 0, + "projectVersion": 8, + "artifactVersions": [ + 2, + 2, + 2, + 2 + ], + "reopenedComplete": true + }, + "workflow": { + "assemblyComponents": 2, + "bimElements": 1, + "meshTriangles": 12, + "surfacePatches": 5, + "exports": { + "assemblyBytes": 718, + "ifcBytes": 437, + "meshObjBytes": 340, + "surfaceObjBytes": 641 + }, + "edited": { + "assemblyX": 6, + "fireRating": "A1", + "meshMinX": -2.75, + "surfaceOffset": 0.5 + } + }, + "scale": { + "components": 1000, + "bomRows": 20, + "durationMs": 5.044999957084656, + "budgetMs": 1000 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 10035, + "hash": "9e550b295f8f5cb124c341b276437bbfa4b486928a83430538b4151ba8ce1e8e", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "ENG-CLOSURE", + "artifacts": 4, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-fault-injection-verification.json b/config/chrome-fault-injection-verification.json new file mode 100644 index 0000000..1e35d16 --- /dev/null +++ b/config/chrome-fault-injection-verification.json @@ -0,0 +1,35 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "dedicated-worker", + "crossOriginIsolated": true, + "sharedArrayBuffer": true, + "status": "pass", + "lifecycle": { + "initialAvailable": true, + "completed": "completed", + "cancelled": "cancelled", + "crashInjected": true, + "unavailableAfterCrash": true, + "workerFactoryCount": 3, + "recovered": "completed", + "stale": "stale", + "recoveredEnd": { + "x": 5, + "y": 0 + }, + "nativeInitialAvailable": true, + "nativeCrashInjected": true, + "nativeUnavailableAfterCrash": true, + "nativeWorkerFactoryCount": 2, + "nativeRecoveredAvailable": true + }, + "opfs": { + "markerBytes": 0, + "markerRemoved": true + }, + "activeWorkersBeforeDispose": 3, + "activeNativeWorkersBeforeDispose": 2, + "activeWorkersAfterDispose": 3, + "activeNativeWorkersAfterDispose": 2 +} diff --git a/config/chrome-fcstd-golden-verification.json b/config/chrome-fcstd-golden-verification.json new file mode 100644 index 0000000..65372c4 --- /dev/null +++ b/config/chrome-fcstd-golden-verification.json @@ -0,0 +1,15030 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "bitbybitVersion": "1.1.1", + "browserId": "chrome", + "geometryProvider": "Bitbybit OCCT", + "unknownDifferencesFail": true, + "scenarioCount": 100, + "reports": [ + { + "id": "part-box", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 1e-7, + "scalar": 1e-7 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 20.0000001, + 30.0000001 + ] + } + }, + "massProperties": { + "volume": 6000, + "surfaceArea": 2200, + "centerOfMass": [ + 5, + 10, + 15 + ] + } + }, + "fcstd": { + "archiveBytes": 1503, + "brepBytes": 2545, + "brepHash": "17f06138", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 20.0000001, + 30.0000001 + ] + } + }, + "massProperties": { + "volume": 6000, + "surfaceArea": 2200, + "centerOfMass": [ + 5, + 10, + 15 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15416, + "importedBytes": 15416, + "declaredUnit": "millimeter", + "sourceVolume": 6000, + "importedVolume": 6000, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 6000, + "importedVolume": 6000, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2545, + "importedBytes": 2545, + "declaredUnit": "unknown", + "sourceVolume": 6000, + "importedVolume": 6000, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 1e-7, + "scalar": 1e-7 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.0000001, + -5.0000001, + -1e-7 + ], + "max": [ + 5.0000001, + 5.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 1570.7963267948965, + "surfaceArea": 785.3981633974482, + "centerOfMass": [ + 7.237528875152536e-17, + 1.913605534020981e-17, + 9.999999999999998 + ] + } + }, + "fcstd": { + "archiveBytes": 1225, + "brepBytes": 1078, + "brepHash": "9ab68a92", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.0000001, + -5.0000001, + -1e-7 + ], + "max": [ + 5.0000001, + 5.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 1570.7963267948978, + "surfaceArea": 785.3981633974487, + "centerOfMass": [ + 6.513775987637277e-16, + -1.2297249181180763e-16, + 10.000000000000002 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5656, + "importedBytes": 5656, + "declaredUnit": "millimeter", + "sourceVolume": 1570.7963267948965, + "importedVolume": 1570.7963267948967, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7047, + "importedBytes": 7047, + "declaredUnit": "millimeter", + "sourceVolume": 1570.7963267948965, + "importedVolume": 1570.7963267948967, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1078, + "importedBytes": 1078, + "declaredUnit": "unknown", + "sourceVolume": 1570.7963267948965, + "importedVolume": 1570.7963267948978, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 1e-7, + "scalar": 1e-7 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.0000001, + -5.0000001, + -5.0000001 + ], + "max": [ + 5.0000001, + 5.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 523.598775598299, + "surfaceArea": 314.1592653589793, + "centerOfMass": [ + -6.831173468593155e-17, + -6.762015639822762e-17, + -1.1723955140041649e-16 + ] + } + }, + "fcstd": { + "archiveBytes": 1229, + "brepBytes": 893, + "brepHash": "ed3fde61", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.0000001, + -5.0000001, + -5.0000001 + ], + "max": [ + 5.0000001, + 5.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 523.5987755982987, + "surfaceArea": 314.1592653589793, + "centerOfMass": [ + -1.3576788633007798e-16, + -7.033744310939134e-17, + -3.1974423109204494e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2121, + "importedBytes": 2121, + "declaredUnit": "millimeter", + "sourceVolume": 523.598775598299, + "importedVolume": 523.598775598299, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4131, + "importedBytes": 4131, + "declaredUnit": "millimeter", + "sourceVolume": 523.598775598299, + "importedVolume": 523.5987755833329, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 893, + "importedBytes": 893, + "declaredUnit": "unknown", + "sourceVolume": 523.598775598299, + "importedVolume": 523.5987755982987, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 1e-7, + "scalar": 1e-7 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.0000001, + -5.0000001, + -1e-7 + ], + "max": [ + 5.0000001, + 5.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 408.4070449666731, + "surfaceArea": 320.7005185614376, + "centerOfMass": [ + -4.523455546970335e-16, + 1.5629603927181889e-16, + 3.653846153846154 + ] + } + }, + "fcstd": { + "archiveBytes": 1318, + "brepBytes": 1234, + "brepHash": "b60aab0a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.0000001, + -5.0000001, + -1e-7 + ], + "max": [ + 5.0000001, + 5.0000001, + 10.000000100000047 + ] + } + }, + "massProperties": { + "volume": 408.4070449666741, + "surfaceArea": 320.7005185614384, + "centerOfMass": [ + 8.350994855945214e-16, + 4.8741663245044607e-17, + 3.6538461538461613 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5723, + "importedBytes": 5723, + "declaredUnit": "millimeter", + "sourceVolume": 408.4070449666731, + "importedVolume": 408.40704496656105, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7290, + "importedBytes": 7290, + "declaredUnit": "millimeter", + "sourceVolume": 408.4070449666731, + "importedVolume": 408.4070449666732, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1234, + "importedBytes": 1234, + "declaredUnit": "unknown", + "sourceVolume": 408.4070449666731, + "importedVolume": 408.4070449666741, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-through-hole", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 1e-7, + "scalar": 1e-7 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 20.0000001, + 20.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 6429.203673205102, + "surfaceArea": 2871.238898038469, + "centerOfMass": [ + 10, + 9.999999999999998, + 10.000000000000002 + ] + } + }, + "fcstd": { + "archiveBytes": 1673, + "brepBytes": 3452, + "brepHash": "70290b0d", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 20.0000001, + 20.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 6429.2036732051, + "surfaceArea": 2871.238898038468, + "centerOfMass": [ + 10, + 10, + 10 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19028, + "importedBytes": 19028, + "declaredUnit": "millimeter", + "sourceVolume": 6429.203673205102, + "importedVolume": 6429.203673205047, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 6429.203673205102, + "importedVolume": 6429.203673229049, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3452, + "importedBytes": 3452, + "declaredUnit": "unknown", + "sourceVolume": 6429.203673205102, + "importedVolume": 6429.2036732051, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-001", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 4.0000001, + 7.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 104.99999999999999, + "surfaceArea": 141.99999999999997, + "centerOfMass": [ + 2.5000000000000004, + 4.5, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1516, + "brepBytes": 2470, + "brepHash": "5daaeb75", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 4.0000001, + 7.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 104.99999999999999, + "surfaceArea": 141.99999999999997, + "centerOfMass": [ + 2.5000000000000004, + 4.5, + 4.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15377, + "importedBytes": 15377, + "declaredUnit": "millimeter", + "sourceVolume": 104.99999999999999, + "importedVolume": 104.99999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 104.99999999999999, + "importedVolume": 104.99999999999999, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2470, + "importedBytes": 2470, + "declaredUnit": "unknown", + "sourceVolume": 104.99999999999999, + "importedVolume": 104.99999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-002", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 3.9999999, + 1.9999999 + ], + "max": [ + 6.0000001, + 11.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 280, + "surfaceArea": 276, + "centerOfMass": [ + 4, + 7.5, + 7 + ] + } + }, + "fcstd": { + "archiveBytes": 1514, + "brepBytes": 2504, + "brepHash": "7c45be25", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 3.9999999, + 1.9999999 + ], + "max": [ + 6.0000001, + 11.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 280, + "surfaceArea": 276, + "centerOfMass": [ + 4, + 7.5, + 7 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15399, + "importedBytes": 15399, + "declaredUnit": "millimeter", + "sourceVolume": 280, + "importedVolume": 280, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 280, + "importedVolume": 280, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2504, + "importedBytes": 2504, + "declaredUnit": "unknown", + "sourceVolume": 280, + "importedVolume": 280, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-003", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 5.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 15.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 585, + "surfaceArea": 454, + "centerOfMass": [ + 5.5, + 10.5, + 6.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1521, + "brepBytes": 2504, + "brepHash": "5a8a9867", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 5.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 15.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 585, + "surfaceArea": 454, + "centerOfMass": [ + 5.5, + 10.5, + 6.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15399, + "importedBytes": 15399, + "declaredUnit": "millimeter", + "sourceVolume": 585, + "importedVolume": 585, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 585, + "importedVolume": 585, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2504, + "importedBytes": 2504, + "declaredUnit": "unknown", + "sourceVolume": 585, + "importedVolume": 585, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-004", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 0.9999999, + 0.9999999 + ], + "max": [ + 10.0000001, + 12.0000001, + 17.0000001 + ] + } + }, + "massProperties": { + "volume": 1056, + "surfaceArea": 676, + "centerOfMass": [ + 7, + 6.5, + 9 + ] + } + }, + "fcstd": { + "archiveBytes": 1518, + "brepBytes": 2529, + "brepHash": "29e88faa", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 0.9999999, + 0.9999999 + ], + "max": [ + 10.0000001, + 12.0000001, + 17.0000001 + ] + } + }, + "massProperties": { + "volume": 1056, + "surfaceArea": 676, + "centerOfMass": [ + 7, + 6.5, + 9 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15412, + "importedBytes": 15412, + "declaredUnit": "millimeter", + "sourceVolume": 1056, + "importedVolume": 1056, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 1056, + "importedVolume": 1056, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2529, + "importedBytes": 2529, + "declaredUnit": "unknown", + "sourceVolume": 1056, + "importedVolume": 1056, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-005", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 2.9999999, + 1.9999999 + ], + "max": [ + 7.0000001, + 16.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 546, + "surfaceArea": 422, + "centerOfMass": [ + 3.5, + 9.5, + 5 + ] + } + }, + "fcstd": { + "archiveBytes": 1524, + "brepBytes": 2495, + "brepHash": "469769bd", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 2.9999999, + 1.9999999 + ], + "max": [ + 7.0000001, + 16.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 546, + "surfaceArea": 422, + "centerOfMass": [ + 3.5, + 9.5, + 5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15392, + "importedBytes": 15392, + "declaredUnit": "millimeter", + "sourceVolume": 546, + "importedVolume": 546, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 546, + "importedVolume": 546, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2495, + "importedBytes": 2495, + "declaredUnit": "unknown", + "sourceVolume": 546, + "importedVolume": 546, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-006", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 4.9999999, + -1e-7 + ], + "max": [ + 9.0000001, + 9.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 288, + "surfaceArea": 280, + "centerOfMass": [ + 5, + 7, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1510, + "brepBytes": 2470, + "brepHash": "a7cd71bb", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 4.9999999, + -1e-7 + ], + "max": [ + 9.0000001, + 9.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 288, + "surfaceArea": 280, + "centerOfMass": [ + 5, + 7, + 4.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 288, + "importedVolume": 288, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 288, + "importedVolume": 288, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2470, + "importedBytes": 2470, + "declaredUnit": "unknown", + "sourceVolume": 288, + "importedVolume": 288, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-007", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 6.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 648, + "surfaceArea": 468, + "centerOfMass": [ + 6.5, + 3, + 7 + ] + } + }, + "fcstd": { + "archiveBytes": 1514, + "brepBytes": 2504, + "brepHash": "57c4338b", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 6.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 648, + "surfaceArea": 468, + "centerOfMass": [ + 6.5, + 3, + 7 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15401, + "importedBytes": 15401, + "declaredUnit": "millimeter", + "sourceVolume": 648, + "importedVolume": 648, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 648, + "importedVolume": 648, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2504, + "importedBytes": 2504, + "declaredUnit": "unknown", + "sourceVolume": 648, + "importedVolume": 648, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-008", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 1.9999999, + 1.9999999 + ], + "max": [ + 13.0000001, + 10.0000001, + 17.0000001 + ] + } + }, + "massProperties": { + "volume": 1200, + "surfaceArea": 700, + "centerOfMass": [ + 8, + 6, + 9.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1527, + "brepBytes": 2529, + "brepHash": "4362781c", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 1.9999999, + 1.9999999 + ], + "max": [ + 13.0000001, + 10.0000001, + 17.0000001 + ] + } + }, + "massProperties": { + "volume": 1200, + "surfaceArea": 700, + "centerOfMass": [ + 8, + 6, + 9.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15414, + "importedBytes": 15414, + "declaredUnit": "millimeter", + "sourceVolume": 1200, + "importedVolume": 1200, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 1200, + "importedVolume": 1200, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2529, + "importedBytes": 2529, + "declaredUnit": "unknown", + "sourceVolume": 1200, + "importedVolume": 1200, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-009", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 3.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 14.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 99.99999999999997, + "surfaceArea": 160, + "centerOfMass": [ + 5, + 9, + 2.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1517, + "brepBytes": 2495, + "brepHash": "090406a6", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 3.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 14.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 99.99999999999997, + "surfaceArea": 160, + "centerOfMass": [ + 5, + 9, + 2.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15392, + "importedBytes": 15392, + "declaredUnit": "millimeter", + "sourceVolume": 99.99999999999997, + "importedVolume": 99.99999999999997, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 99.99999999999997, + "importedVolume": 99.99999999999997, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2495, + "importedBytes": 2495, + "declaredUnit": "unknown", + "sourceVolume": 99.99999999999997, + "importedVolume": 99.99999999999997, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-010", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 5.9999999, + 0.9999999 + ], + "max": [ + 3.0000001, + 18.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 288, + "surfaceArea": 312, + "centerOfMass": [ + 1.5, + 12, + 5 + ] + } + }, + "fcstd": { + "archiveBytes": 1515, + "brepBytes": 2495, + "brepHash": "7b292c94", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 5.9999999, + 0.9999999 + ], + "max": [ + 3.0000001, + 18.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 288, + "surfaceArea": 312, + "centerOfMass": [ + 1.5, + 12, + 5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15392, + "importedBytes": 15392, + "declaredUnit": "millimeter", + "sourceVolume": 288, + "importedVolume": 288, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 288, + "importedVolume": 288, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2495, + "importedBytes": 2495, + "declaredUnit": "unknown", + "sourceVolume": 288, + "importedVolume": 288, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-011", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 0.9999999, + 1.9999999 + ], + "max": [ + 5.0000001, + 4.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 132, + "surfaceArea": 178, + "centerOfMass": [ + 3, + 2.5, + 7.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1516, + "brepBytes": 2495, + "brepHash": "70a2c37f", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 0.9999999, + 1.9999999 + ], + "max": [ + 5.0000001, + 4.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 132, + "surfaceArea": 178, + "centerOfMass": [ + 3, + 2.5, + 7.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15392, + "importedBytes": 15392, + "declaredUnit": "millimeter", + "sourceVolume": 132, + "importedVolume": 132, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 132, + "importedVolume": 132, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2495, + "importedBytes": 2495, + "declaredUnit": "unknown", + "sourceVolume": 132, + "importedVolume": 132, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-012", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 2.9999999, + -1e-7 + ], + "max": [ + 7.0000001, + 8.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 350, + "surfaceArea": 329.99999999999994, + "centerOfMass": [ + 4.499999999999999, + 5.5, + 7 + ] + } + }, + "fcstd": { + "archiveBytes": 1506, + "brepBytes": 2495, + "brepHash": "5b6db87f", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 2.9999999, + -1e-7 + ], + "max": [ + 7.0000001, + 8.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 350, + "surfaceArea": 329.99999999999994, + "centerOfMass": [ + 4.499999999999999, + 5.5, + 7 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15392, + "importedBytes": 15392, + "declaredUnit": "millimeter", + "sourceVolume": 350, + "importedVolume": 350, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 350, + "importedVolume": 350, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2495, + "importedBytes": 2495, + "declaredUnit": "unknown", + "sourceVolume": 350, + "importedVolume": 350, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-013", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 4.9999999, + 0.9999999 + ], + "max": [ + 9.0000001, + 12.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 168, + "surfaceArea": 188, + "centerOfMass": [ + 6, + 8.5, + 3 + ] + } + }, + "fcstd": { + "archiveBytes": 1520, + "brepBytes": 2479, + "brepHash": "e83e4e8e", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 4.9999999, + 0.9999999 + ], + "max": [ + 9.0000001, + 12.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 168, + "surfaceArea": 188, + "centerOfMass": [ + 6, + 8.5, + 3 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15388, + "importedBytes": 15388, + "declaredUnit": "millimeter", + "sourceVolume": 168, + "importedVolume": 168, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 168, + "importedVolume": 168, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2479, + "importedBytes": 2479, + "declaredUnit": "unknown", + "sourceVolume": 168, + "importedVolume": 168, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-014", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + -1e-7, + 1.9999999 + ], + "max": [ + 11.0000001, + 9.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 441.00000000000006, + "surfaceArea": 349.99999999999994, + "centerOfMass": [ + 7.5, + 4.5, + 5.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1517, + "brepBytes": 2479, + "brepHash": "0176aee4", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + -1e-7, + 1.9999999 + ], + "max": [ + 11.0000001, + 9.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 441.00000000000006, + "surfaceArea": 349.99999999999994, + "centerOfMass": [ + 7.5, + 4.5, + 5.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15388, + "importedBytes": 15388, + "declaredUnit": "millimeter", + "sourceVolume": 441.00000000000006, + "importedVolume": 441.00000000000006, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 441.00000000000006, + "importedVolume": 441.00000000000006, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2479, + "importedBytes": 2479, + "declaredUnit": "unknown", + "sourceVolume": 441.00000000000006, + "importedVolume": 441.00000000000006, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-015", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 1.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 13.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 880, + "surfaceArea": 556, + "centerOfMass": [ + 4, + 7.5, + 5 + ] + } + }, + "fcstd": { + "archiveBytes": 1515, + "brepBytes": 2520, + "brepHash": "b4e74d49", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 1.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 13.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 880, + "surfaceArea": 556, + "centerOfMass": [ + 4, + 7.5, + 5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15405, + "importedBytes": 15405, + "declaredUnit": "millimeter", + "sourceVolume": 880, + "importedVolume": 880, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 880, + "importedVolume": 880, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2520, + "importedBytes": 2520, + "declaredUnit": "unknown", + "sourceVolume": 880, + "importedVolume": 880, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-016", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 3.9999999, + 0.9999999 + ], + "max": [ + 10.0000001, + 17.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 1521, + "surfaceArea": 806, + "centerOfMass": [ + 5.5, + 10.5, + 7.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1506, + "brepBytes": 2529, + "brepHash": "a4115040", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 0.9999999, + 3.9999999, + 0.9999999 + ], + "max": [ + 10.0000001, + 17.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 1521, + "surfaceArea": 806, + "centerOfMass": [ + 5.5, + 10.5, + 7.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15414, + "importedBytes": 15414, + "declaredUnit": "millimeter", + "sourceVolume": 1521, + "importedVolume": 1521, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 1521, + "importedVolume": 1521, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2529, + "importedBytes": 2529, + "declaredUnit": "unknown", + "sourceVolume": 1521, + "importedVolume": 1521, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-017", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 5.9999999, + 1.9999999 + ], + "max": [ + 12.0000001, + 10.0000001, + 18.0000001 + ] + } + }, + "massProperties": { + "volume": 639.9999999999999, + "surfaceArea": 528, + "centerOfMass": [ + 7.000000000000001, + 8, + 10.000000000000002 + ] + } + }, + "fcstd": { + "archiveBytes": 1527, + "brepBytes": 2529, + "brepHash": "efd56055", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 5.9999999, + 1.9999999 + ], + "max": [ + 12.0000001, + 10.0000001, + 18.0000001 + ] + } + }, + "massProperties": { + "volume": 639.9999999999999, + "surfaceArea": 528, + "centerOfMass": [ + 7.000000000000001, + 8, + 10.000000000000002 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15414, + "importedBytes": 15414, + "declaredUnit": "millimeter", + "sourceVolume": 639.9999999999999, + "importedVolume": 639.9999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 639.9999999999999, + "importedVolume": 639.9999999999999, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2529, + "importedBytes": 2529, + "declaredUnit": "unknown", + "sourceVolume": 639.9999999999999, + "importedVolume": 639.9999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-018", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 0.9999999, + -1e-7 + ], + "max": [ + 5.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 72, + "surfaceArea": 120, + "centerOfMass": [ + 4, + 4, + 3 + ] + } + }, + "fcstd": { + "archiveBytes": 1507, + "brepBytes": 2470, + "brepHash": "0686de46", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 2.9999999, + 0.9999999, + -1e-7 + ], + "max": [ + 5.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 72, + "surfaceArea": 120, + "centerOfMass": [ + 4, + 4, + 3 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 72, + "importedVolume": 72, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 72, + "importedVolume": 72, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2470, + "importedBytes": 2470, + "declaredUnit": "unknown", + "sourceVolume": 72, + "importedVolume": 72, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-019", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 2.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 11.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 216, + "surfaceArea": 246, + "centerOfMass": [ + 5.5, + 7, + 5.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1508, + "brepBytes": 2488, + "brepHash": "e4b9e2a8", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 2.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 11.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 216, + "surfaceArea": 246, + "centerOfMass": [ + 5.5, + 7, + 5.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15397, + "importedBytes": 15397, + "declaredUnit": "millimeter", + "sourceVolume": 216, + "importedVolume": 216, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 216, + "importedVolume": 216, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2488, + "importedBytes": 2488, + "declaredUnit": "unknown", + "sourceVolume": 216, + "importedVolume": 216, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-box-020", + "operation": "box", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 4.9999999, + 1.9999999 + ], + "max": [ + 4.0000001, + 15.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 480, + "surfaceArea": 416, + "centerOfMass": [ + 2, + 10, + 8 + ] + } + }, + "fcstd": { + "archiveBytes": 1516, + "brepBytes": 2520, + "brepHash": "41262270", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + 4.9999999, + 1.9999999 + ], + "max": [ + 4.0000001, + 15.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 480, + "surfaceArea": 416, + "centerOfMass": [ + 2, + 10, + 8 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15405, + "importedBytes": 15405, + "declaredUnit": "millimeter", + "sourceVolume": 480, + "importedVolume": 480, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 480, + "importedVolume": 480, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2520, + "importedBytes": 2520, + "declaredUnit": "unknown", + "sourceVolume": 480, + "importedVolume": 480, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-001", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.5000001, + 0.4999999, + 0.9999999 + ], + "max": [ + 0.5000001, + 3.5000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 56.548667764616276, + "surfaceArea": 89.53539062730911, + "centerOfMass": [ + -1.0000000000000002, + 2, + 5 + ] + } + }, + "fcstd": { + "archiveBytes": 1224, + "brepBytes": 1048, + "brepHash": "2f4f3681", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.5000001, + 0.4999999, + 0.9999999 + ], + "max": [ + 0.5000001, + 3.5000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 56.548667764616326, + "surfaceArea": 89.53539062730914, + "centerOfMass": [ + -1, + 2, + 4.999999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5616, + "importedBytes": 5616, + "declaredUnit": "millimeter", + "sourceVolume": 56.548667764616276, + "importedVolume": 56.548667764616276, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 56.548667764616276, + "importedVolume": 56.54866776461628, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1048, + "importedBytes": 1048, + "declaredUnit": "unknown", + "sourceVolume": 56.548667764616276, + "importedVolume": 56.548667764616326, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-002", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + 1.9999999, + 1.9999999 + ], + "max": [ + 1e-7, + 6.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 138.23007675795088, + "surfaceArea": 163.3628179866692, + "centerOfMass": [ + -2, + 4, + 7.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1244, + "brepBytes": 1097, + "brepHash": "8966de3e", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + 1.9999999, + 1.9999999 + ], + "max": [ + 1e-7, + 6.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 138.230076757951, + "surfaceArea": 163.36281798666926, + "centerOfMass": [ + -2, + 3.999999999999999, + 7.499999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5660, + "importedBytes": 5660, + "declaredUnit": "millimeter", + "sourceVolume": 138.23007675795088, + "importedVolume": 138.23007675795088, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 138.23007675795088, + "importedVolume": 138.2300767579509, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1097, + "importedBytes": 1097, + "declaredUnit": "unknown", + "sourceVolume": 138.23007675795088, + "importedVolume": 138.230076757951, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-003", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.5000001, + -1.5000001, + -1e-7 + ], + "max": [ + -0.4999999, + 3.5000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 274.8893571891069, + "surfaceArea": 259.18139392115796, + "centerOfMass": [ + -3, + 1, + 6.999999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1238, + "brepBytes": 1074, + "brepHash": "aaf2bc6b", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.5000001, + -1.5000001, + -1e-7 + ], + "max": [ + -0.4999999, + 3.5000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 274.8893571891071, + "surfaceArea": 259.181393921158, + "centerOfMass": [ + -2.999999999999999, + 1, + 7 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5623, + "importedBytes": 5623, + "declaredUnit": "millimeter", + "sourceVolume": 274.8893571891069, + "importedVolume": 274.8893571891069, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 274.8893571891069, + "importedVolume": 274.8893571891069, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1074, + "importedBytes": 1074, + "declaredUnit": "unknown", + "sourceVolume": 274.8893571891069, + "importedVolume": 274.8893571891071, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-004", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + -1e-7, + 0.9999999 + ], + "max": [ + 3.0000001, + 6.0000001, + 18.0000001 + ] + } + }, + "massProperties": { + "volume": 480.6636759992384, + "surfaceArea": 376.9911184307752, + "centerOfMass": [ + -6.799965854922725e-16, + 2.999999999999999, + 9.499999999999998 + ] + } + }, + "fcstd": { + "archiveBytes": 1217, + "brepBytes": 1033, + "brepHash": "b82c4afc", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + -1e-7, + 0.9999999 + ], + "max": [ + 3.0000001, + 6.0000001, + 18.0000001 + ] + } + }, + "massProperties": { + "volume": 480.66367599923865, + "surfaceArea": 376.9911184307753, + "centerOfMass": [ + -2.8086815487724284e-16, + 3, + 9.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5607, + "importedBytes": 5607, + "declaredUnit": "millimeter", + "sourceVolume": 480.6636759992384, + "importedVolume": 480.6636759992384, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 480.6636759992384, + "importedVolume": 480.66367599923836, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1033, + "importedBytes": 1033, + "declaredUnit": "unknown", + "sourceVolume": 480.6636759992384, + "importedVolume": 480.66367599923865, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-005", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.5000001, + -3.5000001, + 1.9999999 + ], + "max": [ + 2.5000001, + 3.5000001, + 22.0000001 + ] + } + }, + "massProperties": { + "volume": 769.6902001294994, + "surfaceArea": 516.791991515521, + "centerOfMass": [ + -1.0000000000000002, + 2.798017063980895e-17, + 12.000000000000004 + ] + } + }, + "fcstd": { + "archiveBytes": 1231, + "brepBytes": 1099, + "brepHash": "ee9b9fcf", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.5000001, + -3.5000001, + 1.9999999 + ], + "max": [ + 2.5000001, + 3.5000001, + 22.0000001 + ] + } + }, + "massProperties": { + "volume": 769.6902001295001, + "surfaceArea": 516.7919915155211, + "centerOfMass": [ + -0.9999999999999988, + 2.2768919707894805e-17, + 12 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5671, + "importedBytes": 5671, + "declaredUnit": "millimeter", + "sourceVolume": 769.6902001294994, + "importedVolume": 769.6902001294993, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 769.6902001294994, + "importedVolume": 769.6902001294993, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1099, + "importedBytes": 1099, + "declaredUnit": "unknown", + "sourceVolume": 769.6902001294994, + "importedVolume": 769.6902001295001, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-006", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 2.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 301.5928947446201, + "surfaceArea": 251.3274122871834, + "centerOfMass": [ + -2.000000000000001, + 1.9999999999999996, + 3 + ] + } + }, + "fcstd": { + "archiveBytes": 1220, + "brepBytes": 1032, + "brepHash": "488a32fd", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 2.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 301.5928947446203, + "surfaceArea": 251.32741228718368, + "centerOfMass": [ + -1.9999999999999996, + 2, + 2.9999999999999996 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5608, + "importedBytes": 5608, + "declaredUnit": "millimeter", + "sourceVolume": 301.5928947446201, + "importedVolume": 301.59289474462014, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 301.5928947446201, + "importedVolume": 301.59289474462014, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1032, + "importedBytes": 1032, + "declaredUnit": "unknown", + "sourceVolume": 301.5928947446201, + "importedVolume": 301.5928947446203, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-007", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -7.5000001, + -0.5000001, + 0.9999999 + ], + "max": [ + 1.5000001, + 8.5000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 572.55526111674, + "surfaceArea": 381.7035074111598, + "centerOfMass": [ + -2.9999999999999982, + 4, + 5.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1221, + "brepBytes": 1051, + "brepHash": "a644ae41", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -7.5000001, + -0.5000001, + 0.9999999 + ], + "max": [ + 1.5000001, + 8.5000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 572.5552611167403, + "surfaceArea": 381.7035074111601, + "centerOfMass": [ + -2.9999999999999982, + 4, + 5.499999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5619, + "importedBytes": 5619, + "declaredUnit": "millimeter", + "sourceVolume": 572.55526111674, + "importedVolume": 572.55526111674, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 572.55526111674, + "importedVolume": 572.5552611167398, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1051, + "importedBytes": 1051, + "declaredUnit": "unknown", + "sourceVolume": 572.55526111674, + "importedVolume": 572.5552611167403, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-008", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.0000001, + -1e-7, + 1.9999999 + ], + "max": [ + 1.0000001, + 2.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 37.69911184307751, + "surfaceArea": 81.68140899333463, + "centerOfMass": [ + -1.8847731445709732e-16, + 0.9999999999999998, + 8 + ] + } + }, + "fcstd": { + "archiveBytes": 1222, + "brepBytes": 1034, + "brepHash": "b10f1250", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.0000001, + -1e-7, + 1.9999999 + ], + "max": [ + 1.0000001, + 2.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 37.69911184307754, + "surfaceArea": 81.68140899333463, + "centerOfMass": [ + 4.71193286142743e-17, + 1, + 8 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5607, + "importedBytes": 5607, + "declaredUnit": "millimeter", + "sourceVolume": 37.69911184307751, + "importedVolume": 37.69911184307752, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 37.69911184307751, + "importedVolume": 37.69911184307752, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1034, + "importedBytes": 1034, + "declaredUnit": "unknown", + "sourceVolume": 37.69911184307751, + "importedVolume": 37.69911184307754, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-009", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.5000001, + 1.4999999, + -1e-7 + ], + "max": [ + 0.5000001, + 4.5000001, + 15.0000001 + ] + } + }, + "massProperties": { + "volume": 106.02875205865551, + "surfaceArea": 155.50883635269477, + "centerOfMass": [ + -1.0000000000000002, + 3.0000000000000004, + 7.500000000000001 + ] + } + }, + "fcstd": { + "archiveBytes": 1232, + "brepBytes": 1054, + "brepHash": "2b7e334a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.5000001, + 1.4999999, + -1e-7 + ], + "max": [ + 0.5000001, + 4.5000001, + 15.0000001 + ] + } + }, + "massProperties": { + "volume": 106.0287520586556, + "surfaceArea": 155.50883635269477, + "centerOfMass": [ + -0.9999999999999998, + 3, + 7.500000000000002 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5620, + "importedBytes": 5620, + "declaredUnit": "millimeter", + "sourceVolume": 106.02875205865551, + "importedVolume": 106.02875205865553, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 106.02875205865551, + "importedVolume": 106.0287520586555, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1054, + "importedBytes": 1054, + "declaredUnit": "unknown", + "sourceVolume": 106.02875205865551, + "importedVolume": 106.0287520586556, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-010", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + 0.9999999 + ], + "max": [ + 1e-7, + 2.0000001, + 19.0000001 + ] + } + }, + "massProperties": { + "volume": 226.19467105846508, + "surfaceArea": 251.32741228718342, + "centerOfMass": [ + -2, + -5.2069929100099904e-17, + 10.000000000000002 + ] + } + }, + "fcstd": { + "archiveBytes": 1232, + "brepBytes": 1083, + "brepHash": "b5ff34b2", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + 0.9999999 + ], + "max": [ + 1e-7, + 2.0000001, + 19.0000001 + ] + } + }, + "massProperties": { + "volume": 226.1946710584653, + "surfaceArea": 251.32741228718348, + "centerOfMass": [ + -1.9999999999999996, + -6.623683748724373e-17, + 9.999999999999998 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5663, + "importedBytes": 5663, + "declaredUnit": "millimeter", + "sourceVolume": 226.19467105846508, + "importedVolume": 226.19467105846508, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 226.19467105846508, + "importedVolume": 226.19467105846513, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1083, + "importedBytes": 1083, + "declaredUnit": "unknown", + "sourceVolume": 226.19467105846508, + "importedVolume": 226.1946710584653, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-011", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.5000001, + -0.5000001, + 1.9999999 + ], + "max": [ + -0.4999999, + 4.5000001, + 23.0000001 + ] + } + }, + "massProperties": { + "volume": 412.3340357836604, + "surfaceArea": 369.13713679680075, + "centerOfMass": [ + -2.999999999999999, + 1.9999999999999996, + 12.499999999999998 + ] + } + }, + "fcstd": { + "archiveBytes": 1229, + "brepBytes": 1073, + "brepHash": "9d48b3d1", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.5000001, + -0.5000001, + 1.9999999 + ], + "max": [ + -0.4999999, + 4.5000001, + 23.0000001 + ] + } + }, + "massProperties": { + "volume": 412.33403578366074, + "surfaceArea": 369.13713679680075, + "centerOfMass": [ + -2.999999999999999, + 2, + 12.499999999999998 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5623, + "importedBytes": 5623, + "declaredUnit": "millimeter", + "sourceVolume": 412.3340357836604, + "importedVolume": 412.3340357836604, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 412.3340357836604, + "importedVolume": 412.3340357836603, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1073, + "importedBytes": 1073, + "declaredUnit": "unknown", + "sourceVolume": 412.3340357836604, + "importedVolume": 412.33403578366074, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-012", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + 0.9999999, + -1e-7 + ], + "max": [ + 3.0000001, + 7.0000001, + 7.0000001 + ] + } + }, + "massProperties": { + "volume": 197.920337176157, + "surfaceArea": 188.49555921538763, + "centerOfMass": [ + -4.308052901876509e-16, + 3.9999999999999996, + 3.499999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1219, + "brepBytes": 1027, + "brepHash": "d840ac8a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + 0.9999999, + -1e-7 + ], + "max": [ + 3.0000001, + 7.0000001, + 7.0000001 + ] + } + }, + "massProperties": { + "volume": 197.9203371761571, + "surfaceArea": 188.49555921538774, + "centerOfMass": [ + -5.3850661273456336e-17, + 4, + 3.5000000000000004 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5603, + "importedBytes": 5603, + "declaredUnit": "millimeter", + "sourceVolume": 197.920337176157, + "importedVolume": 197.920337176157, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 197.920337176157, + "importedVolume": 197.92033717615695, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1027, + "importedBytes": 1027, + "declaredUnit": "unknown", + "sourceVolume": 197.920337176157, + "importedVolume": 197.9203371761571, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-013", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.5000001, + -2.5000001, + 0.9999999 + ], + "max": [ + 2.5000001, + 4.5000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 384.8451000647498, + "surfaceArea": 296.88050576423547, + "centerOfMass": [ + -0.9999999999999999, + 1, + 6.000000000000001 + ] + } + }, + "fcstd": { + "archiveBytes": 1223, + "brepBytes": 1087, + "brepHash": "c2bc7338", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.5000001, + -2.5000001, + 0.9999999 + ], + "max": [ + 2.5000001, + 4.5000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 384.84510006475006, + "surfaceArea": 296.8805057642356, + "centerOfMass": [ + -0.9999999999999996, + 1, + 6 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5620, + "importedBytes": 5620, + "declaredUnit": "millimeter", + "sourceVolume": 384.8451000647498, + "importedVolume": 384.84510006474966, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 384.8451000647498, + "importedVolume": 384.84510006474966, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1087, + "importedBytes": 1087, + "declaredUnit": "unknown", + "sourceVolume": 384.8451000647498, + "importedVolume": 384.84510006475006, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-014", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -1.0000001, + 1.9999999 + ], + "max": [ + 2.0000001, + 7.0000001, + 15.0000001 + ] + } + }, + "massProperties": { + "volume": 653.4512719466769, + "surfaceArea": 427.2566008882119, + "centerOfMass": [ + -2.000000000000001, + 3, + 8.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1221, + "brepBytes": 1038, + "brepHash": "793a4d59", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -1.0000001, + 1.9999999 + ], + "max": [ + 2.0000001, + 7.0000001, + 15.0000001 + ] + } + }, + "massProperties": { + "volume": 653.4512719466774, + "surfaceArea": 427.2566008882121, + "centerOfMass": [ + -2.0000000000000004, + 3, + 8.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5612, + "importedBytes": 5612, + "declaredUnit": "millimeter", + "sourceVolume": 653.4512719466769, + "importedVolume": 653.451271946677, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 653.4512719466769, + "importedVolume": 653.4512719466769, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1038, + "importedBytes": 1038, + "declaredUnit": "unknown", + "sourceVolume": 653.4512719466769, + "importedVolume": 653.4512719466774, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-015", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -7.5000001, + -4.5000001, + -1e-7 + ], + "max": [ + 1.5000001, + 4.5000001, + 16.0000001 + ] + } + }, + "massProperties": { + "volume": 1017.8760197630929, + "surfaceArea": 579.6238445873167, + "centerOfMass": [ + -3.0000000000000013, + -4.952621440283963e-17, + 8 + ] + } + }, + "fcstd": { + "archiveBytes": 1244, + "brepBytes": 1099, + "brepHash": "cbc039d1", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -7.5000001, + -4.5000001, + -1e-7 + ], + "max": [ + 1.5000001, + 4.5000001, + 16.0000001 + ] + } + }, + "massProperties": { + "volume": 1017.8760197630936, + "surfaceArea": 579.623844587317, + "centerOfMass": [ + -3, + -1.5472327260034947e-16, + 8 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5671, + "importedBytes": 5671, + "declaredUnit": "millimeter", + "sourceVolume": 1017.8760197630929, + "importedVolume": 1017.8760197630932, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 1017.8760197630929, + "importedVolume": 1017.8760197630929, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1099, + "importedBytes": 1099, + "declaredUnit": "unknown", + "sourceVolume": 1017.8760197630929, + "importedVolume": 1017.8760197630936, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-016", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.0000001, + 0.9999999, + 0.9999999 + ], + "max": [ + 1.0000001, + 3.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 59.690260418206066, + "surfaceArea": 125.66370614359172, + "centerOfMass": [ + -8.92787279007303e-17, + 2, + 10.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1218, + "brepBytes": 1033, + "brepHash": "d5f25e74", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.0000001, + 0.9999999, + 0.9999999 + ], + "max": [ + 1.0000001, + 3.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 59.6902604182061, + "surfaceArea": 125.66370614359172, + "centerOfMass": [ + 1.487978798345504e-17, + 2, + 10.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5607, + "importedBytes": 5607, + "declaredUnit": "millimeter", + "sourceVolume": 59.690260418206066, + "importedVolume": 59.690260418206066, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 59.690260418206066, + "importedVolume": 59.690260418206066, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1033, + "importedBytes": 1033, + "declaredUnit": "unknown", + "sourceVolume": 59.690260418206066, + "importedVolume": 59.6902604182061, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-017", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.5000001, + 2.4999999, + 1.9999999 + ], + "max": [ + 0.5000001, + 5.5000001, + 7.0000001 + ] + } + }, + "massProperties": { + "volume": 35.34291735288517, + "surfaceArea": 61.26105674500097, + "centerOfMass": [ + -1.0000000000000004, + 4, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1219, + "brepBytes": 1031, + "brepHash": "ba10b296", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.5000001, + 2.4999999, + 1.9999999 + ], + "max": [ + 0.5000001, + 5.5000001, + 7.0000001 + ] + } + }, + "massProperties": { + "volume": 35.342917352885195, + "surfaceArea": 61.261056745001, + "centerOfMass": [ + -0.9999999999999998, + 4, + 4.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5616, + "importedBytes": 5616, + "declaredUnit": "millimeter", + "sourceVolume": 35.34291735288517, + "importedVolume": 35.34291735288518, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 35.34291735288517, + "importedVolume": 35.34291735288517, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1031, + "importedBytes": 1031, + "declaredUnit": "unknown", + "sourceVolume": 35.34291735288517, + "importedVolume": 35.342917352885195, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-018", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -1.0000001, + -1e-7 + ], + "max": [ + 1e-7, + 3.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 100.53096491487335, + "surfaceArea": 125.66370614359172, + "centerOfMass": [ + -2.000000000000001, + 1, + 4.000000000000001 + ] + } + }, + "fcstd": { + "archiveBytes": 1244, + "brepBytes": 1092, + "brepHash": "8e2ecf25", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -1.0000001, + -1e-7 + ], + "max": [ + 1e-7, + 3.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 100.53096491487344, + "surfaceArea": 125.66370614359178, + "centerOfMass": [ + -2.0000000000000004, + 1, + 4 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5656, + "importedBytes": 5656, + "declaredUnit": "millimeter", + "sourceVolume": 100.53096491487335, + "importedVolume": 100.53096491487337, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 100.53096491487335, + "importedVolume": 100.5309649148734, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1092, + "importedBytes": 1092, + "declaredUnit": "unknown", + "sourceVolume": 100.53096491487335, + "importedVolume": 100.53096491487344, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-019", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.5000001, + 0.4999999, + 0.9999999 + ], + "max": [ + -0.4999999, + 5.5000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 215.98449493429825, + "surfaceArea": 212.05750411731103, + "centerOfMass": [ + -3, + 3, + 6.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1228, + "brepBytes": 1073, + "brepHash": "33f0c657", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -5.5000001, + 0.4999999, + 0.9999999 + ], + "max": [ + -0.4999999, + 5.5000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 215.98449493429843, + "surfaceArea": 212.05750411731114, + "centerOfMass": [ + -2.9999999999999996, + 3.0000000000000004, + 6.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5623, + "importedBytes": 5623, + "declaredUnit": "millimeter", + "sourceVolume": 215.98449493429825, + "importedVolume": 215.98449493429828, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 215.98449493429825, + "importedVolume": 215.98449493429828, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1073, + "importedBytes": 1073, + "declaredUnit": "unknown", + "sourceVolume": 215.98449493429825, + "importedVolume": 215.98449493429843, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cylinder-020", + "operation": "cylinder", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + -3.0000001, + 1.9999999 + ], + "max": [ + 3.0000001, + 3.0000001, + 16.0000001 + ] + } + }, + "massProperties": { + "volume": 395.84067435231395, + "surfaceArea": 320.44245066615895, + "centerOfMass": [ + -9.334114620732437e-16, + 7.469447204755915e-17, + 8.999999999999998 + ] + } + }, + "fcstd": { + "archiveBytes": 1236, + "brepBytes": 1078, + "brepHash": "2b4fc49e", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + -3.0000001, + 1.9999999 + ], + "max": [ + 3.0000001, + 3.0000001, + 16.0000001 + ] + } + }, + "massProperties": { + "volume": 395.8406743523142, + "surfaceArea": 320.44245066615906, + "centerOfMass": [ + -5.3850661273456336e-17, + 8.923310689384042e-17, + 9.000000000000002 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5658, + "importedBytes": 5658, + "declaredUnit": "millimeter", + "sourceVolume": 395.84067435231395, + "importedVolume": 395.840674352314, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 395.84067435231395, + "importedVolume": 395.8406743523139, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1078, + "importedBytes": 1078, + "declaredUnit": "unknown", + "sourceVolume": 395.84067435231395, + "importedVolume": 395.8406743523142, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-001", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -0.33333343333333326, + -2.333333433333333, + 0.6666665666666668 + ], + "max": [ + 2.333333433333333, + 0.33333343333333326, + 3.333333433333333 + ] + } + }, + "massProperties": { + "volume": 9.928984189123296, + "surfaceArea": 22.340214425527417, + "centerOfMass": [ + 0.9999999999999998, + -1, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1220, + "brepBytes": 883, + "brepHash": "7d75d14c", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -0.33333343333333326, + -2.333333433333333, + 0.6666665666666668 + ], + "max": [ + 2.333333433333333, + 0.33333343333333326, + 3.333333433333333 + ] + } + }, + "massProperties": { + "volume": 9.928984189123295, + "surfaceArea": 22.34021442552741, + "centerOfMass": [ + 1, + -1, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2115, + "importedBytes": 2115, + "declaredUnit": "millimeter", + "sourceVolume": 9.928984189123296, + "importedVolume": 9.928984189115852, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4536, + "importedBytes": 4536, + "declaredUnit": "millimeter", + "sourceVolume": 9.928984189123296, + "importedVolume": 9.92898418139276, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 883, + "importedBytes": 883, + "declaredUnit": "unknown", + "sourceVolume": 9.928984189123296, + "importedVolume": 9.928984189123295, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-002", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 0.3333332333333335, + -3.6666667666666664, + -1.6666667666666666 + ], + "max": [ + 3.6666667666666664, + -0.3333332333333335, + 1.6666667666666666 + ] + } + }, + "massProperties": { + "volume": 19.392547244381436, + "surfaceArea": 34.906585039886586, + "centerOfMass": [ + 2, + -2, + 1.0547118733938978e-17 + ] + } + }, + "fcstd": { + "archiveBytes": 1218, + "brepBytes": 883, + "brepHash": "4e786e15", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 0.3333332333333335, + -3.6666667666666664, + -1.6666667666666666 + ], + "max": [ + 3.6666667666666664, + -0.3333332333333335, + 1.6666667666666666 + ] + } + }, + "massProperties": { + "volume": 19.392547244381433, + "surfaceArea": 34.90658503988658, + "centerOfMass": [ + 2, + -2, + 1.2295719997723605e-16 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2116, + "importedBytes": 2116, + "declaredUnit": "millimeter", + "sourceVolume": 19.392547244381436, + "importedVolume": 19.392547244393075, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4455, + "importedBytes": 4455, + "declaredUnit": "millimeter", + "sourceVolume": 19.392547244381436, + "importedVolume": 19.39254725546268, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 883, + "importedBytes": 883, + "declaredUnit": "unknown", + "sourceVolume": 19.392547244381436, + "importedVolume": 19.392547244381433, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-003", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 0.9999999, + -5.0000001, + -1e-7 + ], + "max": [ + 5.0000001, + -0.9999999, + 4.0000001 + ] + } + }, + "massProperties": { + "volume": 33.51032163829113, + "surfaceArea": 50.26548245743669, + "centerOfMass": [ + 3, + -3, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1209, + "brepBytes": 818, + "brepHash": "3010f282", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 0.9999999, + -5.0000001, + -1e-7 + ], + "max": [ + 5.0000001, + -0.9999999, + 4.0000001 + ] + } + }, + "massProperties": { + "volume": 33.510321638291124, + "surfaceArea": 50.26548245743668, + "centerOfMass": [ + 3, + -3, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2091, + "importedBytes": 2091, + "declaredUnit": "millimeter", + "sourceVolume": 33.51032163829113, + "importedVolume": 33.51032163829113, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4374, + "importedBytes": 4374, + "declaredUnit": "millimeter", + "sourceVolume": 33.51032163829113, + "importedVolume": 33.51032163733332, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 818, + "importedBytes": 818, + "declaredUnit": "unknown", + "sourceVolume": 33.51032163829113, + "importedVolume": 33.510321638291124, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-004", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 1.666666566666667, + -6.333333433333333, + -2.333333433333333 + ], + "max": [ + 6.333333433333333, + -1.666666566666667, + 2.333333433333333 + ] + } + }, + "massProperties": { + "volume": 53.21314963858266, + "surfaceArea": 68.41690667817771, + "centerOfMass": [ + 4, + -4, + -1.9663571062967427e-17 + ] + } + }, + "fcstd": { + "archiveBytes": 1220, + "brepBytes": 881, + "brepHash": "b5e0f1c3", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 1.666666566666667, + -6.333333433333333, + -2.333333433333333 + ], + "max": [ + 6.333333433333333, + -1.666666566666667, + 2.333333433333333 + ] + } + }, + "massProperties": { + "volume": 53.213149638582635, + "surfaceArea": 68.4169066781777, + "centerOfMass": [ + 4, + -4, + -7.169516033658081e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2116, + "importedBytes": 2116, + "declaredUnit": "millimeter", + "sourceVolume": 53.21314963858266, + "importedVolume": 53.21314963855987, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4455, + "importedBytes": 4455, + "declaredUnit": "millimeter", + "sourceVolume": 53.21314963858266, + "importedVolume": 53.21314961425607, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 881, + "importedBytes": 881, + "declaredUnit": "unknown", + "sourceVolume": 53.21314963858266, + "importedVolume": 53.213149638582635, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-005", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 2.333333233333333, + -2.666666766666667, + -0.6666667666666669 + ], + "max": [ + 7.666666766666667, + 2.666666766666667, + 4.666666766666667 + ] + } + }, + "massProperties": { + "volume": 79.43187351298641, + "surfaceArea": 89.36085770210968, + "centerOfMass": [ + 5, + 1.7244858696066157e-17, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1220, + "brepBytes": 878, + "brepHash": "4c1ede2f", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 2.333333233333333, + -2.666666766666667, + -0.6666667666666669 + ], + "max": [ + 7.666666766666667, + 2.666666766666667, + 4.666666766666667 + ] + } + }, + "massProperties": { + "volume": 79.43187351298639, + "surfaceArea": 89.36085770210968, + "centerOfMass": [ + 5, + -2.568326556400993e-17, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2114, + "importedBytes": 2114, + "declaredUnit": "millimeter", + "sourceVolume": 79.43187351298641, + "importedVolume": 79.43187351301617, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4536, + "importedBytes": 4536, + "declaredUnit": "millimeter", + "sourceVolume": 79.43187351298641, + "importedVolume": 79.43187354050293, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 878, + "importedBytes": 878, + "declaredUnit": "unknown", + "sourceVolume": 79.43187351298641, + "importedVolume": 79.43187351298639, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-006", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + -4.0000001, + -3.0000001 + ], + "max": [ + 3.0000001, + 2.0000001, + 3.0000001 + ] + } + }, + "massProperties": { + "volume": 113.09733552923252, + "surfaceArea": 113.09733552923255, + "centerOfMass": [ + -3.806633129471995e-17, + -1.0000000000000002, + 1.3569392523196364e-16 + ] + } + }, + "fcstd": { + "archiveBytes": 1217, + "brepBytes": 857, + "brepHash": "094e3f95", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -3.0000001, + -4.0000001, + -3.0000001 + ], + "max": [ + 3.0000001, + 2.0000001, + 3.0000001 + ] + } + }, + "massProperties": { + "volume": 113.09733552923255, + "surfaceArea": 113.09733552923255, + "centerOfMass": [ + -1.021130850569548e-17, + -1, + -2.4671622769447903e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2108, + "importedBytes": 2108, + "declaredUnit": "millimeter", + "sourceVolume": 113.09733552923252, + "importedVolume": 113.09733552923255, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4374, + "importedBytes": 4374, + "declaredUnit": "millimeter", + "sourceVolume": 113.09733552923252, + "importedVolume": 113.09733552599992, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 857, + "importedBytes": 857, + "declaredUnit": "unknown", + "sourceVolume": 113.09733552923252, + "importedVolume": 113.09733552923255, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-007", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.3333334333333333, + -5.333333433333334, + -1.3333334333333335 + ], + "max": [ + 4.333333433333334, + 1.3333334333333335, + 5.333333433333334 + ] + } + }, + "massProperties": { + "volume": 155.14037795505152, + "surfaceArea": 139.62634015954637, + "centerOfMass": [ + 0.9999999999999998, + -2, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1221, + "brepBytes": 883, + "brepHash": "768ca8ed", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.3333334333333333, + -5.333333433333334, + -1.3333334333333335 + ], + "max": [ + 4.333333433333334, + 1.3333334333333335, + 5.333333433333334 + ] + } + }, + "massProperties": { + "volume": 155.14037795505152, + "surfaceArea": 139.62634015954637, + "centerOfMass": [ + 1, + -2, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2116, + "importedBytes": 2116, + "declaredUnit": "millimeter", + "sourceVolume": 155.14037795505152, + "importedVolume": 155.14037795500496, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4617, + "importedBytes": 4617, + "declaredUnit": "millimeter", + "sourceVolume": 155.14037795505152, + "importedVolume": 155.14037790407508, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 883, + "importedBytes": 883, + "declaredUnit": "unknown", + "sourceVolume": 155.14037795505152, + "importedVolume": 155.14037795505152, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-008", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.6666667666666666, + -6.666666766666666, + -3.6666667666666664 + ], + "max": [ + 5.666666766666666, + 0.6666667666666665, + 3.6666667666666664 + ] + } + }, + "massProperties": { + "volume": 206.49184305817354, + "surfaceArea": 168.94787159305105, + "centerOfMass": [ + 2, + -3, + 1.3129158833658876e-16 + ] + } + }, + "fcstd": { + "archiveBytes": 1218, + "brepBytes": 883, + "brepHash": "9488519b", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.6666667666666666, + -6.666666766666666, + -3.6666667666666664 + ], + "max": [ + 5.666666766666666, + 0.6666667666666665, + 3.6666667666666664 + ] + } + }, + "massProperties": { + "volume": 206.49184305817352, + "surfaceArea": 168.94787159305108, + "centerOfMass": [ + 2, + -2.9999999999999996, + -2.410627003130495e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2116, + "importedBytes": 2116, + "declaredUnit": "millimeter", + "sourceVolume": 206.49184305817354, + "importedVolume": 206.49184305822993, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4617, + "importedBytes": 4617, + "declaredUnit": "millimeter", + "sourceVolume": 206.49184305817354, + "importedVolume": 206.49184310858735, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 883, + "importedBytes": 883, + "declaredUnit": "unknown", + "sourceVolume": 206.49184305817354, + "importedVolume": 206.49184305817352, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-009", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 1.9999999, + -5.0000001, + 0.9999999 + ], + "max": [ + 4.0000001, + -2.9999999, + 3.0000001 + ] + } + }, + "massProperties": { + "volume": 4.188790204786391, + "surfaceArea": 12.566370614359172, + "centerOfMass": [ + 3, + -4, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1208, + "brepBytes": 818, + "brepHash": "26dc20ae", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 1.9999999, + -5.0000001, + 0.9999999 + ], + "max": [ + 4.0000001, + -2.9999999, + 3.0000001 + ] + } + }, + "massProperties": { + "volume": 4.1887902047863905, + "surfaceArea": 12.56637061435917, + "centerOfMass": [ + 3, + -4, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2091, + "importedBytes": 2091, + "declaredUnit": "millimeter", + "sourceVolume": 4.188790204786391, + "importedVolume": 4.188790204786391, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4374, + "importedBytes": 4374, + "declaredUnit": "millimeter", + "sourceVolume": 4.188790204786391, + "importedVolume": 4.188790204666665, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 818, + "importedBytes": 818, + "declaredUnit": "unknown", + "sourceVolume": 4.188790204786391, + "importedVolume": 4.1887902047863905, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-010", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 2.666666566666667, + -1.3333334333333333, + -1.3333334333333333 + ], + "max": [ + 5.333333433333333, + 1.3333334333333333, + 1.3333334333333333 + ] + } + }, + "massProperties": { + "volume": 9.928984189123295, + "surfaceArea": 22.340214425527417, + "centerOfMass": [ + 4, + 9.862805063842305e-18, + 5.770666063054097e-17 + ] + } + }, + "fcstd": { + "archiveBytes": 1217, + "brepBytes": 879, + "brepHash": "896024d5", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 2.666666566666667, + -1.3333334333333333, + -1.3333334333333333 + ], + "max": [ + 5.333333433333333, + 1.3333334333333333, + 1.3333334333333333 + ] + } + }, + "massProperties": { + "volume": 9.928984189123295, + "surfaceArea": 22.34021442552741, + "centerOfMass": [ + 4, + -3.488467899473745e-18, + 7.464731957562693e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2114, + "importedBytes": 2114, + "declaredUnit": "millimeter", + "sourceVolume": 9.928984189123295, + "importedVolume": 9.928984189115852, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4455, + "importedBytes": 4455, + "declaredUnit": "millimeter", + "sourceVolume": 9.928984189123295, + "importedVolume": 9.92898418139276, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 879, + "importedBytes": 879, + "declaredUnit": "unknown", + "sourceVolume": 9.928984189123295, + "importedVolume": 9.928984189123295, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-011", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 3.3333332333333336, + -2.6666667666666664, + 0.3333332333333335 + ], + "max": [ + 6.666666766666666, + 0.6666667666666665, + 3.6666667666666664 + ] + } + }, + "massProperties": { + "volume": 19.392547244381436, + "surfaceArea": 34.906585039886586, + "centerOfMass": [ + 5, + -1, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1220, + "brepBytes": 883, + "brepHash": "1b371c41", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + 3.3333332333333336, + -2.6666667666666664, + 0.3333332333333335 + ], + "max": [ + 6.666666766666666, + 0.6666667666666665, + 3.6666667666666664 + ] + } + }, + "massProperties": { + "volume": 19.392547244381433, + "surfaceArea": 34.90658503988658, + "centerOfMass": [ + 5, + -1, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2115, + "importedBytes": 2115, + "declaredUnit": "millimeter", + "sourceVolume": 19.392547244381436, + "importedVolume": 19.392547244393075, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4455, + "importedBytes": 4455, + "declaredUnit": "millimeter", + "sourceVolume": 19.392547244381436, + "importedVolume": 19.39254725546268, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 883, + "importedBytes": 883, + "declaredUnit": "unknown", + "sourceVolume": 19.392547244381436, + "importedVolume": 19.392547244381433, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-012", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -4.0000001, + -2.0000001 + ], + "max": [ + 2.0000001, + 1e-7, + 2.0000001 + ] + } + }, + "massProperties": { + "volume": 33.51032163829113, + "surfaceArea": 50.26548245743669, + "centerOfMass": [ + -1.177245194661079e-16, + -2, + 5.2041704279304205e-18 + ] + } + }, + "fcstd": { + "archiveBytes": 1217, + "brepBytes": 857, + "brepHash": "402e7bdb", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -4.0000001, + -2.0000001 + ], + "max": [ + 2.0000001, + 1e-7, + 2.0000001 + ] + } + }, + "massProperties": { + "volume": 33.510321638291124, + "surfaceArea": 50.26548245743668, + "centerOfMass": [ + -1.0976088081282279e-16, + -2, + 5.724587470723458e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2108, + "importedBytes": 2108, + "declaredUnit": "millimeter", + "sourceVolume": 33.51032163829113, + "importedVolume": 33.51032163829113, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4374, + "importedBytes": 4374, + "declaredUnit": "millimeter", + "sourceVolume": 33.51032163829113, + "importedVolume": 33.51032163733332, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 857, + "importedBytes": 857, + "declaredUnit": "unknown", + "sourceVolume": 33.51032163829113, + "importedVolume": 33.510321638291124, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-013", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.333333433333333, + -5.333333433333333, + -0.33333343333333304 + ], + "max": [ + 3.333333433333333, + -0.666666566666667, + 4.333333433333333 + ] + } + }, + "massProperties": { + "volume": 53.21314963858266, + "surfaceArea": 68.41690667817771, + "centerOfMass": [ + 0.9999999999999999, + -3, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1222, + "brepBytes": 882, + "brepHash": "0aa5e6e6", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1.333333433333333, + -5.333333433333333, + -0.33333343333333304 + ], + "max": [ + 3.333333433333333, + -0.666666566666667, + 4.333333433333333 + ] + } + }, + "massProperties": { + "volume": 53.21314963858265, + "surfaceArea": 68.4169066781777, + "centerOfMass": [ + 0.9999999999999999, + -3, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2116, + "importedBytes": 2116, + "declaredUnit": "millimeter", + "sourceVolume": 53.21314963858266, + "importedVolume": 53.21314963855987, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4617, + "importedBytes": 4617, + "declaredUnit": "millimeter", + "sourceVolume": 53.21314963858266, + "importedVolume": 53.21314961425607, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 882, + "importedBytes": 882, + "declaredUnit": "unknown", + "sourceVolume": 53.21314963858266, + "importedVolume": 53.21314963858265, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-014", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -0.6666667666666669, + -6.666666766666667, + -2.666666766666667 + ], + "max": [ + 4.666666766666667, + -1.333333233333333, + 2.666666766666667 + ] + } + }, + "massProperties": { + "volume": 79.43187351298641, + "surfaceArea": 89.36085770210968, + "centerOfMass": [ + 2, + -4, + -1.5493249044817856e-16 + ] + } + }, + "fcstd": { + "archiveBytes": 1221, + "brepBytes": 881, + "brepHash": "cae8265b", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -0.6666667666666669, + -6.666666766666667, + -2.666666766666667 + ], + "max": [ + 4.666666766666667, + -1.333333233333333, + 2.666666766666667 + ] + } + }, + "massProperties": { + "volume": 79.4318735129864, + "surfaceArea": 89.36085770210968, + "centerOfMass": [ + 2, + -4, + 4.954803928258762e-17 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2116, + "importedBytes": 2116, + "declaredUnit": "millimeter", + "sourceVolume": 79.43187351298641, + "importedVolume": 79.43187351301616, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4536, + "importedBytes": 4536, + "declaredUnit": "millimeter", + "sourceVolume": 79.43187351298641, + "importedVolume": 79.43187354050293, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 881, + "importedBytes": 881, + "declaredUnit": "unknown", + "sourceVolume": 79.43187351298641, + "importedVolume": 79.4318735129864, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-sphere-015", + "operation": "sphere", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1e-7, + -3.0000001, + -1.0000001 + ], + "max": [ + 6.0000001, + 3.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 113.09733552923252, + "surfaceArea": 113.09733552923255, + "centerOfMass": [ + 3, + -5.680953245832188e-17, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1210, + "brepBytes": 815, + "brepHash": "ee1aef8b", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1e-7, + -3.0000001, + -1.0000001 + ], + "max": [ + 6.0000001, + 3.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 113.09733552923255, + "surfaceArea": 113.09733552923255, + "centerOfMass": [ + 3, + -3.9044645906713184e-17, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 2090, + "importedBytes": 2090, + "declaredUnit": "millimeter", + "sourceVolume": 113.09733552923252, + "importedVolume": 113.09733552923255, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "iges": { + "sourceBytes": 4374, + "importedBytes": 4374, + "declaredUnit": "millimeter", + "sourceVolume": 113.09733552923252, + "importedVolume": 113.09733552599992, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "face", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + }, + "brep": { + "sourceBytes": 815, + "importedBytes": 815, + "declaredUnit": "unknown", + "sourceVolume": 113.09733552923252, + "importedVolume": 113.09733552923255, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-001", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 4.0000001, + 4.0000001, + 4.0000001 + ] + } + }, + "massProperties": { + "volume": 68.06784082777885, + "surfaceArea": 99.08790332175414, + "centerOfMass": [ + 0.9999999999999998, + 1, + 0.730769230769231 + ] + } + }, + "fcstd": { + "archiveBytes": 1296, + "brepBytes": 1205, + "brepHash": "22fae1f1", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 4.0000001, + 4.0000001, + 4.0000001 + ] + } + }, + "massProperties": { + "volume": 68.0678408277789, + "surfaceArea": 99.08790332175418, + "centerOfMass": [ + 1.0000000000000002, + 1, + 0.7307692307692295 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5675, + "importedBytes": 5675, + "declaredUnit": "millimeter", + "sourceVolume": 68.06784082777885, + "importedVolume": 68.06784082782625, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 68.06784082777885, + "importedVolume": 68.0678408277789, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1205, + "importedBytes": 1205, + "declaredUnit": "unknown", + "sourceVolume": 68.06784082777885, + "importedVolume": 68.0678408277789, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-002", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 6.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 152.3672436991049, + "surfaceArea": 169.6460032938488, + "centerOfMass": [ + 1.9999999999999993, + 2.0000000000000004, + 2.149484536082474 + ] + } + }, + "fcstd": { + "archiveBytes": 1281, + "brepBytes": 1148, + "brepHash": "eece6c60", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 6.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 152.36724369910507, + "surfaceArea": 169.64600329384893, + "centerOfMass": [ + 2.000000000000001, + 2, + 2.1494845360824733 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5671, + "importedBytes": 5671, + "declaredUnit": "millimeter", + "sourceVolume": 152.3672436991049, + "importedVolume": 152.36724369904178, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 152.3672436991049, + "importedVolume": 152.36724369910505, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1148, + "importedBytes": 1148, + "declaredUnit": "unknown", + "sourceVolume": 152.3672436991049, + "importedVolume": 152.36724369910507, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-003", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 8.0000001, + 8.0000001, + 6.000000100000001 + ] + } + }, + "massProperties": { + "volume": 285.8849314766712, + "surfaceArea": 258.58578483962543, + "centerOfMass": [ + 3, + 2.999999999999999, + 1.5576923076923075 + ] + } + }, + "fcstd": { + "archiveBytes": 1302, + "brepBytes": 1209, + "brepHash": "5073ab93", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 8.0000001, + 8.0000001, + 6.000000100000002 + ] + } + }, + "massProperties": { + "volume": 285.8849314766715, + "surfaceArea": 258.58578483962566, + "centerOfMass": [ + 3.0000000000000004, + 2.9999999999999996, + 1.5576923076923073 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5675, + "importedBytes": 5675, + "declaredUnit": "millimeter", + "sourceVolume": 285.8849314766712, + "importedVolume": 285.88493147671034, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 285.8849314766712, + "importedVolume": 285.8849314766712, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1209, + "importedBytes": 1209, + "declaredUnit": "unknown", + "sourceVolume": 285.8849314766712, + "importedVolume": 285.8849314766715, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-004", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 6.0000001, + 10.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 328.8200310757317, + "surfaceArea": 312.1284942410284, + "centerOfMass": [ + -3.457418252461402e-16, + 3.999999999999999, + 2.178343949044586 + ] + } + }, + "fcstd": { + "archiveBytes": 1296, + "brepBytes": 1157, + "brepHash": "88d2a013", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 6.0000001, + 10.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 328.8200310757321, + "surfaceArea": 312.12849424102865, + "centerOfMass": [ + 9.940077475826519e-16, + 3.999999999999999, + 2.1783439490445846 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5673, + "importedBytes": 5673, + "declaredUnit": "millimeter", + "sourceVolume": 328.8200310757317, + "importedVolume": 328.820031075708, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 328.8200310757317, + "importedVolume": 328.8200310757319, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1157, + "importedBytes": 1157, + "declaredUnit": "unknown", + "sourceVolume": 328.8200310757317, + "importedVolume": 328.8200310757321, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-005", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 8.0000001, + 12.0000001, + 8.000000100000001 + ] + } + }, + "massProperties": { + "volume": 537.2123437638547, + "surfaceArea": 428.9317942588251, + "centerOfMass": [ + 1, + 4.999999999999999, + 1.6052631578947378 + ] + } + }, + "fcstd": { + "archiveBytes": 1306, + "brepBytes": 1223, + "brepHash": "f41b6a1a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -6.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 8.0000001, + 12.0000001, + 8.000000100000028 + ] + } + }, + "massProperties": { + "volume": 537.2123437638555, + "surfaceArea": 428.9317942588257, + "centerOfMass": [ + 1.0000000000000016, + 5, + 1.605263157894738 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5675, + "importedBytes": 5675, + "declaredUnit": "millimeter", + "sourceVolume": 537.2123437638547, + "importedVolume": 537.212343763409, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 537.2123437638547, + "importedVolume": 537.2123437638548, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1223, + "importedBytes": 1223, + "declaredUnit": "unknown", + "sourceVolume": 537.2123437638547, + "importedVolume": 537.2123437638555, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-006", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1e-7, + -2.0000001, + -1e-7 + ], + "max": [ + 4.0000001, + 2.0000001, + 10.000000100000001 + ] + } + }, + "massProperties": { + "volume": 96.86577348568528, + "surfaceArea": 129.72805584346057, + "centerOfMass": [ + 2, + 4.32492571269748e-17, + 4.527027027027028 + ] + } + }, + "fcstd": { + "archiveBytes": 1332, + "brepBytes": 1271, + "brepHash": "37b23d9e", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1e-7, + -2.0000001, + -1e-7 + ], + "max": [ + 4.0000001, + 2.0000001, + 10.000000100000006 + ] + } + }, + "massProperties": { + "volume": 96.86577348568542, + "surfaceArea": 129.7280558434607, + "centerOfMass": [ + 2.0000000000000004, + 2.656439436041628e-17, + 4.527027027027029 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5741, + "importedBytes": 5741, + "declaredUnit": "millimeter", + "sourceVolume": 96.86577348568528, + "importedVolume": 96.8657734856863, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 96.86577348568528, + "importedVolume": 96.86577348568531, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1271, + "importedBytes": 1271, + "declaredUnit": "unknown", + "sourceVolume": 96.86577348568528, + "importedVolume": 96.86577348568542, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-007", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1e-7, + -2.0000001, + -1.0000001 + ], + "max": [ + 6.0000001, + 4.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 218.8642882000889, + "surfaceArea": 214.34082963588023, + "centerOfMass": [ + 3, + 0.9999999999999999, + 3.776315789473685 + ] + } + }, + "fcstd": { + "archiveBytes": 1300, + "brepBytes": 1179, + "brepHash": "9bda9eb9", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -1e-7, + -2.0000001, + -1.0000001 + ], + "max": [ + 6.0000001, + 4.0000001, + 10.000000100000038 + ] + } + }, + "massProperties": { + "volume": 218.86428820008945, + "surfaceArea": 214.34082963588082, + "centerOfMass": [ + 2.999999999999999, + 0.9999999999999999, + 3.7763157894736934 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5692, + "importedBytes": 5692, + "declaredUnit": "millimeter", + "sourceVolume": 218.8642882000889, + "importedVolume": 218.86428820008578, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 218.8642882000889, + "importedVolume": 218.864288200089, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1179, + "importedBytes": 1179, + "declaredUnit": "unknown", + "sourceVolume": 218.8642882000889, + "importedVolume": 218.86428820008945, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-008", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 4.0000001, + 6.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 229.3362637120549, + "surfaceArea": 227.76546738525994, + "centerOfMass": [ + 9.294771671856853e-17, + 1.9999999999999998, + 3.410958904109588 + ] + } + }, + "fcstd": { + "archiveBytes": 1276, + "brepBytes": 1156, + "brepHash": "f2d1d3ed", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 4.0000001, + 6.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 229.33626371205514, + "surfaceArea": 227.76546738526008, + "centerOfMass": [ + 6.816165892695018e-16, + 1.9999999999999998, + 3.4109589041095867 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5657, + "importedBytes": 5657, + "declaredUnit": "millimeter", + "sourceVolume": 229.3362637120549, + "importedVolume": 229.33626371229897, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 229.3362637120549, + "importedVolume": 229.33626371205506, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1156, + "importedBytes": 1156, + "declaredUnit": "unknown", + "sourceVolume": 229.3362637120549, + "importedVolume": 229.33626371205514, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-009", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 6.0000001, + 8.0000001, + 12.000000100000001 + ] + } + }, + "massProperties": { + "volume": 422.02061313222896, + "surfaceArea": 338.06308796290364, + "centerOfMass": [ + 1, + 2.9999999999999996, + 2.983870967741936 + ] + } + }, + "fcstd": { + "archiveBytes": 1299, + "brepBytes": 1192, + "brepHash": "573f0514", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 6.0000001, + 8.0000001, + 12.000000100000001 + ] + } + }, + "massProperties": { + "volume": 422.02061313222913, + "surfaceArea": 338.0630879629035, + "centerOfMass": [ + 1.000000000000001, + 3, + 2.98387096774193 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5679, + "importedBytes": 5679, + "declaredUnit": "millimeter", + "sourceVolume": 422.02061313222896, + "importedVolume": 422.0206131324418, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 422.02061313222896, + "importedVolume": 422.0206131322291, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1192, + "importedBytes": 1192, + "declaredUnit": "unknown", + "sourceVolume": 422.02061313222896, + "importedVolume": 422.02061313222913, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-010", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 8.0000001, + 10.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 692.7211801165492, + "surfaceArea": 466.65471360235665, + "centerOfMass": [ + 1.9999999999999993, + 4, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1300, + "brepBytes": 1162, + "brepHash": "7bf3b103", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 8.0000001, + 10.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 692.7211801165495, + "surfaceArea": 466.6547136023564, + "centerOfMass": [ + 2.000000000000001, + 4, + 4.499999999999993 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5677, + "importedBytes": 5677, + "declaredUnit": "millimeter", + "sourceVolume": 692.7211801165492, + "importedVolume": 692.7211801157455, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 692.7211801165492, + "importedVolume": 692.7211801165497, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1162, + "importedBytes": 1162, + "declaredUnit": "unknown", + "sourceVolume": 692.7211801165492, + "importedVolume": 692.7211801165495, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-011", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 10.0000001, + 12.0000001, + 14.000000100000001 + ] + } + }, + "massProperties": { + "volume": 1052.4335389525809, + "surfaceArea": 613.5608826010837, + "centerOfMass": [ + 3.0000000000000013, + 5, + 3.9813432835820897 + ] + } + }, + "fcstd": { + "archiveBytes": 1307, + "brepBytes": 1227, + "brepHash": "b0f0c192", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -4.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 10.0000001, + 12.0000001, + 14.000000100000001 + ] + } + }, + "massProperties": { + "volume": 1052.4335389525816, + "surfaceArea": 613.560882601084, + "centerOfMass": [ + 3.000000000000001, + 5, + 3.981343283582088 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5681, + "importedBytes": 5681, + "declaredUnit": "millimeter", + "sourceVolume": 1052.4335389525809, + "importedVolume": 1052.4335389517041, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 1052.4335389525809, + "importedVolume": 1052.4335389525813, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1227, + "importedBytes": 1227, + "declaredUnit": "unknown", + "sourceVolume": 1052.4335389525809, + "importedVolume": 1052.4335389525816, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-012", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 2.0000001, + 2.0000001, + 16.0000001 + ] + } + }, + "massProperties": { + "volume": 87.9645943005142, + "surfaceArea": 139.56649990543949, + "centerOfMass": [ + 2.2213397775300756e-16, + -4.5322330085555776e-17, + 5.142857142857143 + ] + } + }, + "fcstd": { + "archiveBytes": 1324, + "brepBytes": 1238, + "brepHash": "c2395af6", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 2.0000001, + 2.0000001, + 16.000000100000005 + ] + } + }, + "massProperties": { + "volume": 87.96459430051428, + "surfaceArea": 139.56649990543954, + "centerOfMass": [ + 3.029099696631918e-16, + -9.681050762957584e-17, + 5.142857142857141 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5741, + "importedBytes": 5741, + "declaredUnit": "millimeter", + "sourceVolume": 87.9645943005142, + "importedVolume": 87.96459430051385, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7290, + "importedBytes": 7290, + "declaredUnit": "millimeter", + "sourceVolume": 87.9645943005142, + "importedVolume": 87.96459430051426, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1238, + "importedBytes": 1238, + "declaredUnit": "unknown", + "sourceVolume": 87.9645943005142, + "importedVolume": 87.96459430051428, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-013", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 4.0000001, + 4.0000001, + 16.0000001 + ] + } + }, + "massProperties": { + "volume": 231.43065881444807, + "surfaceArea": 246.5175430623827, + "centerOfMass": [ + 0.9999999999999992, + 1, + 4.884615384615384 + ] + } + }, + "fcstd": { + "archiveBytes": 1298, + "brepBytes": 1177, + "brepHash": "5bc9941e", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 4.0000001, + 4.0000001, + 16.000000100000012 + ] + } + }, + "massProperties": { + "volume": 231.43065881444826, + "surfaceArea": 246.51754306238286, + "centerOfMass": [ + 1.0000000000000004, + 0.9999999999999999, + 4.884615384615383 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5679, + "importedBytes": 5679, + "declaredUnit": "millimeter", + "sourceVolume": 231.43065881444807, + "importedVolume": 231.43065881428038, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 231.43065881444807, + "importedVolume": 231.4306588144482, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1177, + "importedBytes": 1177, + "declaredUnit": "unknown", + "sourceVolume": 231.43065881444807, + "importedVolume": 231.43065881444826, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-014", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 6.0000001, + 6.0000001, + 18.0000001 + ] + } + }, + "massProperties": { + "volume": 457.1017310973149, + "surfaceArea": 371.3371946021684, + "centerOfMass": [ + 2.0000000000000004, + 2.0000000000000004, + 6.448453608247423 + ] + } + }, + "fcstd": { + "archiveBytes": 1297, + "brepBytes": 1162, + "brepHash": "755a1f33", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1e-7 + ], + "max": [ + 6.0000001, + 6.0000001, + 18.0000001 + ] + } + }, + "massProperties": { + "volume": 457.1017310973149, + "surfaceArea": 371.33719460216804, + "centerOfMass": [ + 2, + 2, + 6.448453608247411 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5677, + "importedBytes": 5677, + "declaredUnit": "millimeter", + "sourceVolume": 457.1017310973149, + "importedVolume": 457.1017310963906, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 457.1017310973149, + "importedVolume": 457.1017310973151, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1162, + "importedBytes": 1162, + "declaredUnit": "unknown", + "sourceVolume": 457.1017310973149, + "importedVolume": 457.1017310973149, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cone-015", + "operation": "cone", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 8.0000001, + 8.0000001, + 3.0000001 + ] + } + }, + "massProperties": { + "volume": 163.36281798666926, + "surfaceArea": 201.0619298297468, + "centerOfMass": [ + 3, + 2.9999999999999996, + 0.46153846153846156 + ] + } + }, + "fcstd": { + "archiveBytes": 1267, + "brepBytes": 1128, + "brepHash": "be8c8f45", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -2.0000001, + -2.0000001, + -1.0000001 + ], + "max": [ + 8.0000001, + 8.0000001, + 3.0000001 + ] + } + }, + "massProperties": { + "volume": 163.36281798666943, + "surfaceArea": 201.061929829747, + "centerOfMass": [ + 3.000000000000001, + 2.9999999999999996, + 0.4615384615384613 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 5653, + "importedBytes": 5653, + "declaredUnit": "millimeter", + "sourceVolume": 163.36281798666926, + "importedVolume": 163.3628179867339, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 7533, + "importedBytes": 7533, + "declaredUnit": "millimeter", + "sourceVolume": 163.36281798666926, + "importedVolume": 163.3628179866693, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 2, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 1128, + "importedBytes": 1128, + "declaredUnit": "unknown", + "sourceVolume": 163.36281798666926, + "importedVolume": 163.36281798666943, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-001", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 523.6504591506377, + "surfaceArea": 601.8097245096172, + "centerOfMass": [ + 4.500000000000002, + 4, + 6.000000000000002 + ] + } + }, + "fcstd": { + "archiveBytes": 1695, + "brepBytes": 3411, + "brepHash": "1a7764e3", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 523.6504591506377, + "surfaceArea": 601.8097245096171, + "centerOfMass": [ + 4.5, + 3.9999999999999982, + 5.999999999999998 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 18998, + "importedBytes": 18998, + "declaredUnit": "millimeter", + "sourceVolume": 523.6504591506377, + "importedVolume": 523.6504591506309, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 523.6504591506377, + "importedVolume": 523.650459153631, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3411, + "importedBytes": 3411, + "declaredUnit": "unknown", + "sourceVolume": 523.6504591506377, + "importedVolume": 523.6504591506377, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-002", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 990, + "surfaceArea": 598, + "centerOfMass": [ + 5, + 4.5, + 5.499999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1887, + "brepBytes": 4221, + "brepHash": "c27d0577", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 990, + "surfaceArea": 598, + "centerOfMass": [ + 5, + 4.5, + 5.499999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 24097, + "importedBytes": 24097, + "declaredUnit": "millimeter", + "sourceVolume": 990, + "importedVolume": 990, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 40, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18225, + "importedBytes": 18225, + "declaredUnit": "millimeter", + "sourceVolume": 990, + "importedVolume": 990, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 40, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 4221, + "importedBytes": 4221, + "declaredUnit": "unknown", + "sourceVolume": 990, + "importedVolume": 990, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-003", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 9.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 140, + "surfaceArea": 165.99999999999997, + "centerOfMass": [ + 5.499999999999998, + 4, + 3.499999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1549, + "brepBytes": 2620, + "brepHash": "609d40fe", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 9.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 140, + "surfaceArea": 165.99999999999997, + "centerOfMass": [ + 5.499999999999998, + 4, + 3.499999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 140, + "importedVolume": 140, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 140, + "importedVolume": 140, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2620, + "importedBytes": 2620, + "declaredUnit": "unknown", + "sourceVolume": 140, + "importedVolume": 140, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-004", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1460.7455968958293, + "surfaceArea": 1026.9336143134642, + "centerOfMass": [ + 6, + 5.499999999999999, + 6.500000000000001 + ] + } + }, + "fcstd": { + "archiveBytes": 1701, + "brepBytes": 3456, + "brepHash": "57739f64", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1460.7455968958288, + "surfaceArea": 1026.9336143134642, + "centerOfMass": [ + 6.000000000000001, + 5.5, + 6.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19030, + "importedBytes": 19030, + "declaredUnit": "millimeter", + "sourceVolume": 1460.7455968958293, + "importedVolume": 1460.7455968958204, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 1460.7455968958293, + "importedVolume": 1460.7455968997206, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3456, + "importedBytes": 3456, + "declaredUnit": "unknown", + "sourceVolume": 1460.7455968958293, + "importedVolume": 1460.7455968958288, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-005", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 12, + "edges": 28, + "vertices": 18, + "boundingBox": { + "min": [ + -1.5e-7, + -1.5e-7, + 0.99999985 + ], + "max": [ + 8.00000015, + 8.00000015, + 10.00000015 + ] + } + }, + "massProperties": { + "volume": 539, + "surfaceArea": 406, + "centerOfMass": [ + 4.032467532467533, + 3.75974025974026, + 5.435064935064935 + ] + } + }, + "fcstd": { + "archiveBytes": 2184, + "brepBytes": 5419, + "brepHash": "85da9676", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 12, + "edges": 28, + "vertices": 18, + "boundingBox": { + "min": [ + -1.5e-7, + -1.5e-7, + 0.99999985 + ], + "max": [ + 8.00000015, + 8.00000015, + 10.00000015 + ] + } + }, + "massProperties": { + "volume": 539, + "surfaceArea": 406, + "centerOfMass": [ + 4.032467532467533, + 3.75974025974026, + 5.435064935064935 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 33624, + "importedBytes": 33624, + "declaredUnit": "millimeter", + "sourceVolume": 539, + "importedVolume": 539, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 56, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 26001, + "importedBytes": 26001, + "declaredUnit": "millimeter", + "sourceVolume": 539, + "importedVolume": 539, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 56, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 5419, + "importedBytes": 5419, + "declaredUnit": "unknown", + "sourceVolume": 539, + "importedVolume": 539, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-006", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + -1.5e-7 + ], + "max": [ + 8.00000015, + 8.00000015, + 4.00000015 + ] + } + }, + "massProperties": { + "volume": 144, + "surfaceArea": 168, + "centerOfMass": [ + 5, + 5, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1591, + "brepBytes": 2691, + "brepHash": "2951acac", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + -1.5e-7 + ], + "max": [ + 8.00000015, + 8.00000015, + 4.00000015 + ] + } + }, + "massProperties": { + "volume": 144, + "surfaceArea": 168, + "centerOfMass": [ + 5, + 5, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15799, + "importedBytes": 15799, + "declaredUnit": "millimeter", + "sourceVolume": 144, + "importedVolume": 144, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 144, + "importedVolume": 144, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2691, + "importedBytes": 2691, + "declaredUnit": "unknown", + "sourceVolume": 144, + "importedVolume": 144, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-007", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 774.0155050657017, + "surfaceArea": 731.5176877775662, + "centerOfMass": [ + 5.000000000000001, + 4.5, + 6.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1704, + "brepBytes": 3446, + "brepHash": "8683e79d", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 774.0155050657015, + "surfaceArea": 731.517687777566, + "centerOfMass": [ + 5.000000000000001, + 4.5, + 6.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19017, + "importedBytes": 19017, + "declaredUnit": "millimeter", + "sourceVolume": 774.0155050657017, + "importedVolume": 774.0155050656942, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 774.0155050657017, + "importedVolume": 774.0155050689941, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3446, + "importedBytes": 3446, + "declaredUnit": "unknown", + "sourceVolume": 774.0155050657017, + "importedVolume": 774.0155050657015, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-008", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 11.0000001, + 10.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 1320, + "surfaceArea": 724, + "centerOfMass": [ + 5.499999999999998, + 4.999999999999999, + 6 + ] + } + }, + "fcstd": { + "archiveBytes": 1721, + "brepBytes": 3533, + "brepHash": "b4bd8575", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 11.0000001, + 10.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 1320, + "surfaceArea": 724, + "centerOfMass": [ + 5.499999999999998, + 4.999999999999999, + 6 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19893, + "importedBytes": 19893, + "declaredUnit": "millimeter", + "sourceVolume": 1320, + "importedVolume": 1320, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 15795, + "importedBytes": 15795, + "declaredUnit": "millimeter", + "sourceVolume": 1320, + "importedVolume": 1320, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3533, + "importedBytes": 3533, + "declaredUnit": "unknown", + "sourceVolume": 1320, + "importedVolume": 1320, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-009", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 209.99999999999997, + "surfaceArea": 213.99999999999997, + "centerOfMass": [ + 4.5, + 5.000000000000001, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1549, + "brepBytes": 2620, + "brepHash": "a9fd66b4", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 209.99999999999997, + "surfaceArea": 213.99999999999997, + "centerOfMass": [ + 4.5, + 5.000000000000001, + 4.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 209.99999999999997, + "importedVolume": 209.99999999999997, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 209.99999999999997, + "importedVolume": 209.99999999999997, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2620, + "importedBytes": 2620, + "declaredUnit": "unknown", + "sourceVolume": 209.99999999999997, + "importedVolume": 209.99999999999997, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-010", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 327.2854132355741, + "surfaceArea": 484.1017612416683, + "centerOfMass": [ + 4, + 3.5, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1705, + "brepBytes": 3390, + "brepHash": "0523b1e5", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 327.28541323557397, + "surfaceArea": 484.1017612416681, + "centerOfMass": [ + 4, + 3.4999999999999996, + 4.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 18988, + "importedBytes": 18988, + "declaredUnit": "millimeter", + "sourceVolume": 327.2854132355741, + "importedVolume": 327.2854132355679, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 327.2854132355741, + "importedVolume": 327.2854132382679, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3390, + "importedBytes": 3390, + "declaredUnit": "unknown", + "sourceVolume": 327.2854132355741, + "importedVolume": 327.28541323557397, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-011", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 719.9999999999999, + "surfaceArea": 483.99999999999994, + "centerOfMass": [ + 4.500000000000001, + 4, + 6 + ] + } + }, + "fcstd": { + "archiveBytes": 1873, + "brepBytes": 4202, + "brepHash": "d99fe279", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 719.9999999999999, + "surfaceArea": 483.99999999999994, + "centerOfMass": [ + 4.500000000000001, + 4, + 6 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 24092, + "importedBytes": 24092, + "declaredUnit": "millimeter", + "sourceVolume": 719.9999999999999, + "importedVolume": 719.9999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 40, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18225, + "importedBytes": 18225, + "declaredUnit": "millimeter", + "sourceVolume": 719.9999999999999, + "importedVolume": 719.9999999999999, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 40, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 4202, + "importedBytes": 4202, + "declaredUnit": "unknown", + "sourceVolume": 719.9999999999999, + "importedVolume": 719.9999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-012", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 120, + "surfaceArea": 148, + "centerOfMass": [ + 4, + 4.499999999999999, + 3 + ] + } + }, + "fcstd": { + "archiveBytes": 1549, + "brepBytes": 2620, + "brepHash": "80e8a28a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 120, + "surfaceArea": 148, + "centerOfMass": [ + 4, + 4.499999999999999, + 3 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 120, + "importedVolume": 120, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 120, + "importedVolume": 120, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2620, + "importedBytes": 2620, + "declaredUnit": "unknown", + "sourceVolume": 120, + "importedVolume": 120, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-013", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1084.3805509807653, + "surfaceArea": 873.2256510455152, + "centerOfMass": [ + 5.500000000000001, + 5.000000000000002, + 7.000000000000002 + ] + } + }, + "fcstd": { + "archiveBytes": 1696, + "brepBytes": 3444, + "brepHash": "f95c0d8a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1084.3805509807653, + "surfaceArea": 873.2256510455151, + "centerOfMass": [ + 5.5, + 5, + 6.999999999999998 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19024, + "importedBytes": 19024, + "declaredUnit": "millimeter", + "sourceVolume": 1084.3805509807653, + "importedVolume": 1084.380550980757, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 1084.3805509807653, + "importedVolume": 1084.3805509843573, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3444, + "importedBytes": 3444, + "declaredUnit": "unknown", + "sourceVolume": 1084.3805509807653, + "importedVolume": 1084.3805509807653, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-014", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1716, + "surfaceArea": 862, + "centerOfMass": [ + 6, + 5.5, + 6.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1721, + "brepBytes": 3533, + "brepHash": "8ba1ac80", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1716, + "surfaceArea": 862, + "centerOfMass": [ + 6, + 5.5, + 6.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19893, + "importedBytes": 19893, + "declaredUnit": "millimeter", + "sourceVolume": 1716, + "importedVolume": 1716, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 15795, + "importedBytes": 15795, + "declaredUnit": "millimeter", + "sourceVolume": 1716, + "importedVolume": 1716, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3533, + "importedBytes": 3533, + "declaredUnit": "unknown", + "sourceVolume": 1716, + "importedVolume": 1716, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-015", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + 0.99999985 + ], + "max": [ + 8.00000015, + 6.00000015, + 6.00000015 + ] + } + }, + "massProperties": { + "volume": 119.99999999999999, + "surfaceArea": 148, + "centerOfMass": [ + 5, + 4, + 3.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1604, + "brepBytes": 2683, + "brepHash": "007bd922", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + 0.99999985 + ], + "max": [ + 8.00000015, + 6.00000015, + 6.00000015 + ] + } + }, + "massProperties": { + "volume": 119.99999999999999, + "surfaceArea": 148, + "centerOfMass": [ + 5, + 4, + 3.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15795, + "importedBytes": 15795, + "declaredUnit": "millimeter", + "sourceVolume": 119.99999999999999, + "importedVolume": 119.99999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 119.99999999999999, + "importedVolume": 119.99999999999999, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2683, + "importedBytes": 2683, + "declaredUnit": "unknown", + "sourceVolume": 119.99999999999999, + "importedVolume": 119.99999999999999, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-016", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 9.0000001, + 8.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 523.6504591506377, + "surfaceArea": 601.8097245096172, + "centerOfMass": [ + 4.500000000000002, + 4, + 5.000000000000003 + ] + } + }, + "fcstd": { + "archiveBytes": 1692, + "brepBytes": 3411, + "brepHash": "4b03ae7b", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 9.0000001, + 8.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 523.6504591506377, + "surfaceArea": 601.8097245096171, + "centerOfMass": [ + 4.5, + 3.9999999999999982, + 4.999999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 18998, + "importedBytes": 18998, + "declaredUnit": "millimeter", + "sourceVolume": 523.6504591506377, + "importedVolume": 523.6504591506309, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 523.6504591506377, + "importedVolume": 523.650459153631, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3411, + "importedBytes": 3411, + "declaredUnit": "unknown", + "sourceVolume": 523.6504591506377, + "importedVolume": 523.6504591506377, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-017", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 990, + "surfaceArea": 598, + "centerOfMass": [ + 5.000000000000001, + 4.5, + 6.499999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1710, + "brepBytes": 3508, + "brepHash": "0c435fa0", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "massProperties": { + "volume": 990, + "surfaceArea": 598, + "centerOfMass": [ + 5.000000000000001, + 4.5, + 6.499999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19880, + "importedBytes": 19880, + "declaredUnit": "millimeter", + "sourceVolume": 990, + "importedVolume": 990, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 15795, + "importedBytes": 15795, + "declaredUnit": "millimeter", + "sourceVolume": 990, + "importedVolume": 990, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3508, + "importedBytes": 3508, + "declaredUnit": "unknown", + "sourceVolume": 990, + "importedVolume": 990, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-018", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 9.0000001, + 4.0000001 + ] + } + }, + "massProperties": { + "volume": 168, + "surfaceArea": 188, + "centerOfMass": [ + 5, + 5.5, + 2 + ] + } + }, + "fcstd": { + "archiveBytes": 1546, + "brepBytes": 2620, + "brepHash": "84d35fd0", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 9.0000001, + 4.0000001 + ] + } + }, + "massProperties": { + "volume": 168, + "surfaceArea": 188, + "centerOfMass": [ + 5, + 5.5, + 2 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 168, + "importedVolume": 168, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 168, + "importedVolume": 168, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2620, + "importedBytes": 2620, + "declaredUnit": "unknown", + "sourceVolume": 168, + "importedVolume": 168, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-019", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 12.0000001, + 11.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 1460.7455968958293, + "surfaceArea": 1026.9336143134642, + "centerOfMass": [ + 6, + 5.499999999999999, + 7.500000000000001 + ] + } + }, + "fcstd": { + "archiveBytes": 1702, + "brepBytes": 3456, + "brepHash": "6d203c50", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 12.0000001, + 11.0000001, + 14.0000001 + ] + } + }, + "massProperties": { + "volume": 1460.7455968958288, + "surfaceArea": 1026.9336143134642, + "centerOfMass": [ + 6.000000000000001, + 5.5, + 7.500000000000002 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19030, + "importedBytes": 19030, + "declaredUnit": "millimeter", + "sourceVolume": 1460.7455968958293, + "importedVolume": 1460.7455968958204, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 1460.7455968958293, + "importedVolume": 1460.7455968997206, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3456, + "importedBytes": 3456, + "declaredUnit": "unknown", + "sourceVolume": 1460.7455968958293, + "importedVolume": 1460.7455968958288, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-020", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 504.00000000000006, + "surfaceArea": 382, + "centerOfMass": [ + 4, + 3.4999999999999996, + 4.499999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1882, + "brepBytes": 4171, + "brepHash": "d085f493", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "massProperties": { + "volume": 504.00000000000006, + "surfaceArea": 382, + "centerOfMass": [ + 4, + 3.4999999999999996, + 4.499999999999999 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 24071, + "importedBytes": 24071, + "declaredUnit": "millimeter", + "sourceVolume": 504.00000000000006, + "importedVolume": 504.00000000000006, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 40, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18225, + "importedBytes": 18225, + "declaredUnit": "millimeter", + "sourceVolume": 504.00000000000006, + "importedVolume": 504.00000000000006, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 40, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 4171, + "importedBytes": 4171, + "declaredUnit": "unknown", + "sourceVolume": 504.00000000000006, + "importedVolume": 504.00000000000006, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-021", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 209.99999999999997, + "surfaceArea": 213.99999999999997, + "centerOfMass": [ + 4.5, + 5.000000000000001, + 4.5 + ] + } + }, + "fcstd": { + "archiveBytes": 1574, + "brepBytes": 2749, + "brepHash": "086b650e", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "massProperties": { + "volume": 209.99999999999997, + "surfaceArea": 213.99999999999997, + "centerOfMass": [ + 4.5, + 5.000000000000001, + 4.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 209.99999999999997, + "importedVolume": 209.99999999999997, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 209.99999999999997, + "importedVolume": 209.99999999999997, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2749, + "importedBytes": 2749, + "declaredUnit": "unknown", + "sourceVolume": 209.99999999999997, + "importedVolume": 209.99999999999997, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-022", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 774.0155050657017, + "surfaceArea": 731.5176877775662, + "centerOfMass": [ + 5.000000000000001, + 4.5, + 5.499999999999999 + ] + } + }, + "fcstd": { + "archiveBytes": 1706, + "brepBytes": 3446, + "brepHash": "cc4c8fd5", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "massProperties": { + "volume": 774.0155050657015, + "surfaceArea": 731.517687777566, + "centerOfMass": [ + 5.000000000000001, + 4.5, + 5.500000000000001 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19017, + "importedBytes": 19017, + "declaredUnit": "millimeter", + "sourceVolume": 774.0155050657017, + "importedVolume": 774.0155050656942, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 774.0155050657017, + "importedVolume": 774.0155050689941, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3446, + "importedBytes": 3446, + "declaredUnit": "unknown", + "sourceVolume": 774.0155050657017, + "importedVolume": 774.0155050657015, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-fuse-023", + "operation": "fuse", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1320, + "surfaceArea": 724, + "centerOfMass": [ + 5.5, + 5, + 7 + ] + } + }, + "fcstd": { + "archiveBytes": 1717, + "brepBytes": 3533, + "brepHash": "7764ac4a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "massProperties": { + "volume": 1320, + "surfaceArea": 724, + "centerOfMass": [ + 5.5, + 5, + 7 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19893, + "importedBytes": 19893, + "declaredUnit": "millimeter", + "sourceVolume": 1320, + "importedVolume": 1320, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 15795, + "importedBytes": 15795, + "declaredUnit": "millimeter", + "sourceVolume": 1320, + "importedVolume": 1320, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 32, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3533, + "importedBytes": 3533, + "declaredUnit": "unknown", + "sourceVolume": 1320, + "importedVolume": 1320, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-common-024", + "operation": "common", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 120, + "surfaceArea": 148, + "centerOfMass": [ + 4, + 4.499999999999999, + 3 + ] + } + }, + "fcstd": { + "archiveBytes": 1549, + "brepBytes": 2620, + "brepHash": "80e8a28a", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "massProperties": { + "volume": 120, + "surfaceArea": 148, + "centerOfMass": [ + 4, + 4.499999999999999, + 3 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 15379, + "importedBytes": 15379, + "declaredUnit": "millimeter", + "sourceVolume": 120, + "importedVolume": 120, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 12393, + "importedBytes": 12393, + "declaredUnit": "millimeter", + "sourceVolume": 120, + "importedVolume": 120, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 24, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 2620, + "importedBytes": 2620, + "declaredUnit": "unknown", + "sourceVolume": 120, + "importedVolume": 120, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "compound", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + }, + { + "id": "part-cut-025", + "operation": "cut", + "status": "pass", + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "source": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 8.0000001, + 7.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 327.2854132355741, + "surfaceArea": 484.1017612416683, + "centerOfMass": [ + 4, + 3.5, + 5.500000000000001 + ] + } + }, + "fcstd": { + "archiveBytes": 1701, + "brepBytes": 3402, + "brepHash": "64853a57", + "shapeResources": 1, + "references": 1 + }, + "imported": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 8.0000001, + 7.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 327.28541323557397, + "surfaceArea": 484.1017612416681, + "centerOfMass": [ + 4, + 3.4999999999999996, + 5.5 + ] + } + }, + "formatRoundTrips": { + "step": { + "sourceBytes": 19001, + "importedBytes": 19001, + "declaredUnit": "millimeter", + "sourceVolume": 327.2854132355741, + "importedVolume": 327.2854132355679, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "iges": { + "sourceBytes": 18306, + "importedBytes": 18306, + "declaredUnit": "millimeter", + "sourceVolume": 327.2854132355741, + "importedVolume": 327.2854132382679, + "sourceSolids": 1, + "importedSolids": 0, + "importedShapeType": "compound", + "importedStructuralValid": false, + "importedStructuralErrors": 26, + "structuralNormalization": "format-topology-normalization", + "status": "pass" + }, + "brep": { + "sourceBytes": 3402, + "importedBytes": 3402, + "declaredUnit": "unknown", + "sourceVolume": 327.2854132355741, + "importedVolume": 327.28541323557397, + "sourceSolids": 1, + "importedSolids": 1, + "importedShapeType": "solid", + "importedStructuralValid": true, + "importedStructuralErrors": 0, + "structuralNormalization": "none", + "status": "pass" + } + }, + "comparisons": { + "sourceVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsFreecad": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + }, + "importedVsSource": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + } + } + ], + "productRecompute": { + "status": "pass", + "placedBox": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + 3.9999999, + 3.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 14.0000001, + 5.0000001 + ] + } + }, + "massProperties": { + "volume": 99.99999999999997, + "surfaceArea": 160, + "centerOfMass": [ + 5, + 9, + 2.5 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + }, + "cut": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 20.0000001, + 20.0000001, + 20.0000001 + ] + } + }, + "massProperties": { + "volume": 6429.203673205102, + "surfaceArea": 2871.238898038469, + "centerOfMass": [ + 10, + 9.999999999999998, + 10.000000000000002 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "compound", + "actual": "solid" + } + ] + } + }, + "sphereTrim": { + "quality": { + "shapeType": "compound", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 5, + "edges": 9, + "vertices": 6, + "boundingBox": { + "min": [ + -2.500000150000001, + -1.500000012246468e-7, + -3.5355340559327386 + ], + "max": [ + 5.00000015, + 5.00000015, + 3.5355340559327377 + ] + } + }, + "massProperties": { + "volume": 154.2667686860544, + "surfaceArea": 164.49789591909345, + "centerOfMass": [ + 1.2736915910830255, + 2.2060985489290434, + -9.85091397362013e-17 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [ + { + "classification": "kernel-container-normalization", + "domain": "identity", + "path": "shapeType", + "expected": "solid", + "actual": "compound" + } + ] + } + }, + "torus": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -12.988706503508727, + -12.988706503508727, + -2.0000001 + ], + "max": [ + 12.988706503508727, + 12.988706503508727, + 2.0000001 + ] + } + }, + "massProperties": { + "volume": 592.1762640653612, + "surfaceArea": 617.3090052940797, + "centerOfMass": [ + -2.1432865669708585, + 2.1432865669708585, + -2.933379885594854e-16 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + }, + "prism": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 8, + "edges": 18, + "vertices": 12, + "boundingBox": { + "min": [ + -2.0000001, + -2.606937542828117, + -1e-7 + ], + "max": [ + 3.76326990708465, + 1.7320509075688775, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 103.92304845413264, + "surfaceArea": 141.93867507061736, + "centerOfMass": [ + 0.8816349035423249, + -0.43744331762961997, + 4.999999999999999 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + }, + "wedge": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 10.0000001, + 10.0000001 + ] + } + }, + "massProperties": { + "volume": 813.3333333333333, + "surfaceArea": 527.5647024893402, + "centerOfMass": [ + 4.536885245901638, + 4.631147540983607, + 4.536885245901639 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + }, + "ellipsoid": { + "quality": { + "shapeType": "solid", + "isNull": false, + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "boundingBox": { + "min": [ + -8.000000099999998, + -6.928203330275511, + -2.0000001 + ], + "max": [ + 4.0000001, + 6.928203330275507, + 2.0000001 + ] + } + }, + "massProperties": { + "volume": 133.9826640573845, + "surfaceArea": 139.22113956658873, + "centerOfMass": [ + -0.0008887523215164245, + -4.729663803498425e-16, + -7.2890264297487e-17 + ] + }, + "comparison": { + "status": "pass", + "differences": [], + "knownDifferences": [] + } + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } + }, + "summary": { + "passed": 100, + "failed": 0, + "knownDifferences": 20, + "unknownDifferences": 0, + "operationCounts": { + "box": 21, + "common": 8, + "cone": 16, + "cut": 10, + "cylinder": 21, + "fuse": 8, + "sphere": 16 + }, + "totalArchiveBytes": 142071, + "totalBrepBytes": 195457, + "formatRoundTrips": { + "step": { + "passed": 100, + "totalBytes": 1065760, + "maximumVolumeDelta": 9.242739906767383e-10, + "topologyNormalizations": 84, + "importedShapeTypes": { + "solid": 100 + } + }, + "iges": { + "passed": 100, + "totalBytes": 1035342, + "maximumVolumeDelta": 5.097643906992744e-8, + "topologyNormalizations": 84, + "importedShapeTypes": { + "compound": 84, + "face": 16 + } + }, + "brep": { + "passed": 100, + "totalBytes": 195457, + "maximumVolumeDelta": 1.8189894035458565e-12, + "topologyNormalizations": 0, + "importedShapeTypes": { + "compound": 16, + "solid": 84 + } + } + } + }, + "beforeRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "status": "pass", + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + }, + "pageErrors": [] +} diff --git a/config/chrome-fcstd-roundtrip-verification.json b/config/chrome-fcstd-roundtrip-verification.json new file mode 100644 index 0000000..5d05ad5 --- /dev/null +++ b/config/chrome-fcstd-roundtrip-verification.json @@ -0,0 +1,57 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "baseline": { + "freecadVersion": "1.1.1", + "bitbybitVersion": "1.1.1" + }, + "directions": [ + "freecad-web-freecad", + "web-freecad-web" + ], + "scenarios": [ + { + "id": "freecad-web-freecad-core", + "direction": "freecad-web-freecad", + "status": "pass", + "differences": [], + "domains": [ + "objectTree", + "properties", + "gui", + "resources" + ] + }, + { + "id": "web-freecad-web-core", + "direction": "web-freecad-web", + "status": "pass", + "differences": [], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ] + } + ], + "persistence": { + "mode": "sqlite-opfs", + "bytes": 1969, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "FC-10", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-fcstd-semantic-verification.json b/config/chrome-fcstd-semantic-verification.json new file mode 100644 index 0000000..0ee75c4 --- /dev/null +++ b/config/chrome-fcstd-semantic-verification.json @@ -0,0 +1,56 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "objectNames": [ + "Source", + "Spreadsheet", + "Cut", + "Sketch" + ], + "expression": "Spreadsheet.Width * 2", + "link": "Source", + "linkSub": { + "objectId": "Source", + "subElement": "Face1" + }, + "linkSubList": [ + { + "objectId": "Source", + "subElement": "Face1" + }, + { + "objectId": "Source", + "subElement": "Face2" + } + ], + "sketchGeometryIds": [ + "profile" + ], + "dependencyRelations": [ + "expression", + "link", + "topo-ref", + "topo-ref-list" + ], + "archiveBytes": 1807, + "guiViews": [ + "Front", + "Top" + ], + "shapeResource": { + "path": "Part/Source.Shape.brp", + "byteLength": 20, + "elementMap": "1", + "elementMapEntries": 1 + }, + "opfs": { + "markerSuite": "FC-06", + "archiveBytes": 1807, + "markerRemoved": true + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-fem-verification.json b/config/chrome-fem-verification.json new file mode 100644 index 0000000..71d56ff --- /dev/null +++ b/config/chrome-fem-verification.json @@ -0,0 +1,45 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "geometry": { + "sourceShape": "shape-msi9tz1t-1", + "valid": true, + "vertices": 8, + "volume": 39.99999999999999 + }, + "solve": { + "status": "solved", + "strategy": "local-reference", + "nodes": 2, + "nodeSets": 1, + "resultFields": [ + "displacement", + "stress" + ], + "maxDisplacement": 0.00125, + "maxStress": 25, + "csvBytes": 80 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 664, + "hash": "55d2c9b06f0e451acad3a9295facd864f37044a5e39446447591c015b435b336", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "FEM-ALL", + "nodes": 2, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-geometry-features-verification.json b/config/chrome-geometry-features-verification.json new file mode 100644 index 0000000..6fe4853 --- /dev/null +++ b/config/chrome-geometry-features-verification.json @@ -0,0 +1,270 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "geometryProvider": "Bitbybit OCCT", + "operations": [ + { + "name": "fcstd-brep-import", + "shapeId": "shape-msi3gc2p-3", + "meshVertices": 24, + "meshTriangles": 12, + "topology": { + "faces": 6, + "edges": 12, + "vertices": 8 + } + }, + { + "name": "extrude", + "shapeId": "shape-msi3gc3x-5", + "meshVertices": 24, + "meshTriangles": 12 + }, + { + "name": "revolution", + "shapeId": "shape-msi3gc4e-6", + "meshVertices": 188, + "meshTriangles": 176 + }, + { + "name": "fillet-selected-edge", + "shapeId": "shape-msi3gc64-8", + "meshVertices": 54, + "meshTriangles": 40 + }, + { + "name": "chamfer-selected-edge", + "shapeId": "shape-msi3gc6i-a", + "meshVertices": 30, + "meshTriangles": 16 + }, + { + "name": "draft-selected-face", + "shapeId": "shape-msi3gc7d-c", + "meshVertices": 24, + "meshTriangles": 12 + }, + { + "name": "thickness", + "shapeId": "shape-msi3gc9p-e", + "meshVertices": 48, + "meshTriangles": 28 + }, + { + "name": "hole-counterbore", + "shapeId": "shape-msi3gclb-i", + "meshVertices": 322, + "meshTriangles": 248 + }, + { + "name": "hole-countersink", + "shapeId": "shape-msi3gcy0-m", + "meshVertices": 476, + "meshTriangles": 350 + }, + { + "name": "hole-counterdrill", + "shapeId": "shape-msi3gdce-r", + "meshVertices": 530, + "meshTriangles": 402 + }, + { + "name": "hole-angled-drill-point", + "shapeId": "shape-msi3gdo2-v", + "meshVertices": 439, + "meshTriangles": 323 + }, + { + "name": "hole-angled-included-depth", + "shapeId": "shape-msi3gdz7-z", + "meshVertices": 439, + "meshTriangles": 323 + }, + { + "name": "hole-tapered", + "shapeId": "shape-msi3ge0m-12", + "meshVertices": 186, + "meshTriangles": 220 + }, + { + "name": "loft", + "shapeId": "shape-msi3ge1k-13", + "meshVertices": 28, + "meshTriangles": 20 + }, + { + "name": "loft-ruled", + "shapeId": "shape-msi3ge21-14", + "meshVertices": 28, + "meshTriangles": 20 + }, + { + "name": "loft-additive", + "shapeId": "shape-msi3ge70-16", + "meshVertices": 48, + "meshTriangles": 28 + }, + { + "name": "loft-subtractive", + "shapeId": "shape-msi3ge87-18", + "meshVertices": 52, + "meshTriangles": 32 + }, + { + "name": "pipe", + "shapeId": "shape-msi3ge93-19", + "meshVertices": 24, + "meshTriangles": 12 + }, + { + "name": "extrude-two-sided", + "shapeId": "shape-msi3ge9z-1c", + "meshVertices": 24, + "meshTriangles": 12 + }, + { + "name": "revolution-symmetric", + "shapeId": "shape-msi3gebl-1f", + "meshVertices": 132, + "meshTriangles": 120 + }, + { + "name": "revolution-two-angles", + "shapeId": "shape-msi3gedv-1i", + "meshVertices": 16, + "meshTriangles": 8 + }, + { + "name": "pad-two-sided", + "shapeId": "shape-msi3geem-1l", + "meshVertices": 24, + "meshTriangles": 12 + }, + { + "name": "pocket-two-sided", + "shapeId": "shape-msi3gemb-1o", + "meshVertices": 216, + "meshTriangles": 144 + }, + { + "name": "pad-tapered", + "shapeId": "shape-msi3gen7-1p", + "meshVertices": 28, + "meshTriangles": 20, + "volume": 98.7734437461102 + }, + { + "name": "pocket-tapered", + "shapeId": "shape-msi3geos-1r", + "meshVertices": 52, + "meshTriangles": 40, + "volume": 810.4374375507407 + }, + { + "name": "pocket-through-all", + "shapeId": "shape-msi3gepy-1t", + "meshVertices": 48, + "meshTriangles": 32, + "volume": 960 + }, + { + "name": "pocket-up-to-face", + "shapeId": "shape-msi3geqo-1v", + "meshVertices": 48, + "meshTriangles": 32, + "volume": 960 + }, + { + "name": "pad-midplane", + "shapeId": "shape-msi3ger1-1w", + "meshVertices": 24, + "meshTriangles": 12, + "volume": 95.99999999999999 + }, + { + "name": "linear-pattern-spacing", + "shapeId": "shape-msi3geru-20", + "meshVertices": 72, + "meshTriangles": 36 + }, + { + "name": "polar-pattern-spacing", + "shapeId": "shape-msi3gesr-24", + "meshVertices": 72, + "meshTriangles": 36 + } + ], + "beforeRelease": { + "shapeCount": 1076, + "kernelReferenceCount": 1062 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "fcstdBrep": { + "resourcePath": "Part/Box.Shape.brp", + "references": 1, + "sourceBytes": 2573, + "topology": { + "faces": 6, + "edges": 12, + "vertices": 8 + }, + "massProperties": { + "source": { + "volume": 24, + "surfaceArea": 52, + "centerOfMass": [ + 9.540979117872439e-18, + 4.625929269271485e-18, + 3.700743415417188e-17 + ] + }, + "imported": { + "volume": 24, + "surfaceArea": 52, + "centerOfMass": [ + 9.540979117872439e-18, + 4.625929269271485e-18, + 3.700743415417188e-17 + ] + } + }, + "emptyRejected": true, + "cancelledBeforeImport": true, + "cancelledResultReleased": true + }, + "exchangeFormats": { + "iges": { + "sourceBytes": 12393, + "sourceVolume": 24, + "importedVolume": 24, + "importedFaces": 6, + "importedEdges": 24, + "importedVertices": 24 + } + }, + "performance": { + "durationMs": 7560.079999923706, + "operationCount": 30, + "averageOperationMs": 252.00266666412352, + "peakShapeCount": 75, + "stressObjectCount": 1000, + "stressDurationMs": 130.1799999475479, + "stressPeakShapeCount": 1075, + "triangleStress": { + "radius": 100, + "precision": 0.01, + "triangles": 100520, + "vertices": 50420, + "durationMs": 2931.8450000286102 + } + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + }, + "pageErrors": [] +} diff --git a/config/chrome-inspection-verification.json b/config/chrome-inspection-verification.json new file mode 100644 index 0000000..29f9fe9 --- /dev/null +++ b/config/chrome-inspection-verification.json @@ -0,0 +1,49 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "shape": { + "volume": 120, + "area": 148, + "valid": true, + "solids": 1, + "faces": 6, + "vertices": 8 + }, + "measurements": { + "distance": 5, + "angle": 90, + "volume": 120, + "area": 148, + "deviation": 0.009999999999999787, + "deviationStatus": "resolved", + "sectionArea": 24.000002000000038, + "topoRefs": 2, + "stableRefs": 1, + "unresolvedRefs": [ + "Face2" + ], + "csvRows": 6 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 823, + "hash": "85640b462b63bfa773b23b0799541af30db1dce095df77d3ae3bf9fd6cf89b86", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "INSP-ALL", + "measurements": 5, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-mesh-verification.json b/config/chrome-mesh-verification.json new file mode 100644 index 0000000..d8db6fc --- /dev/null +++ b/config/chrome-mesh-verification.json @@ -0,0 +1,55 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "geometry": { + "sourceShape": "shape-msi8t4og-1", + "vertices": 8, + "triangles": 12, + "boundaryEdges": 0, + "nonManifoldEdges": 0, + "degenerateTriangles": 0, + "selfIntersections": 0, + "surfaceArea": 304 + }, + "operations": { + "welded": 16, + "transformedMin": [ + -6.5, + -1, + -3 + ], + "objBytes": 340, + "objHash": "5e92b07b682e0a4a0133b556494a2c11cacf97ed901579efde985dd270a1213a", + "plyBytes": 479, + "stlBytes": 1371, + "lodTriangles": 6, + "workerLodTriangles": 6 + }, + "repairs": { + "selfIntersectionFixture": 1, + "nonManifoldFixture": 1, + "holeFilledTriangles": 1 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 259, + "hash": "47984c2196fe7d53e5e9bc8f25796ab0da32a24fdefef0c688ae5d3f8ec78dd1", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "MESH-CORE", + "triangles": 12, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-native-chamfer-history-verification.json b/config/chrome-native-chamfer-history-verification.json new file mode 100644 index 0000000..27e5b22 --- /dev/null +++ b/config/chrome-native-chamfer-history-verification.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "geometry-and-history-workers", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet", + "chamfer" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 150, + "relations": { + "modified": 6, + "generated": 72, + "deleted": 72 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "structuralValid": true, + "solids": 1, + "volume": 215.52000000000004 + }, + "opfs": { + "markerCreated": true, + "markerSuite": "chamfer", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-draft-history-verification.json b/config/chrome-native-draft-history-verification.json new file mode 100644 index 0000000..13200ff --- /dev/null +++ b/config/chrome-native-draft-history-verification.json @@ -0,0 +1,64 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "geometry-and-history-workers", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 5, + "relations": { + "modified": 4, + "generated": 1, + "deleted": 0 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "structuralValid": true, + "solids": 1, + "volume": 63.999999999999986 + }, + "opfs": { + "markerCreated": true, + "markerSuite": "draft", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-fillet-history-verification.json b/config/chrome-native-fillet-history-verification.json new file mode 100644 index 0000000..de8ca14 --- /dev/null +++ b/config/chrome-native-fillet-history-verification.json @@ -0,0 +1,61 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "geometry-and-history-workers", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 150, + "relations": { + "modified": 6, + "generated": 72, + "deleted": 72 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "structuralValid": true, + "solids": 1, + "volume": 215.79398223686158 + }, + "opfs": { + "markerCreated": true, + "markerSuite": "fillet", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-groove-history-verification.json b/config/chrome-native-groove-history-verification.json new file mode 100644 index 0000000..b94022e --- /dev/null +++ b/config/chrome-native-groove-history-verification.json @@ -0,0 +1,491 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "rotate", + "pad", + "pocket", + "loft", + "pipe", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 2, + "sourceObjects": [ + "Base", + "Profile", + "chrome-native-groove-history:native-stage:0:result" + ], + "relations": { + "modified": 1, + "generated": 0, + "deleted": 1 + }, + "stages": [ + { + "stageId": "chrome-native-groove-history:native-stage:0", + "operation": "revolution", + "inputObjectIds": [ + "Profile" + ], + "resultObjectId": "chrome-native-groove-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 14, + "recordCount": 23 + }, + { + "stageId": "chrome-native-groove-history:native-stage:1", + "operation": "cut", + "inputObjectIds": [ + "Base", + "chrome-native-groove-history:native-stage:0:result" + ], + "resultObjectId": "chrome-native-groove-history:native-stage:1:result", + "ordinal": 1, + "topologyEntries": 40, + "recordCount": 2 + } + ] + }, + "twoAngleHistory": { + "recordCount": 2, + "sourceObjects": [ + "Base", + "Profile", + "chrome-native-groove-two-angles-history:native-stage:0:result", + "chrome-native-groove-two-angles-history:native-stage:1:result" + ], + "structuralValid": true, + "graphStructuralValid": false, + "graphStructuralErrors": 40, + "graphStructuralWarnings": 0, + "graphStructuralIssues": [ + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 0 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 1 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 2 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 3 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 4 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 5 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 6 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 7 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 8 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 9 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 10 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 11 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 12 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 13 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 14 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 15 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 16 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 17 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 18 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 19 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 20 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 21 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 22 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 23 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 24 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 25 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 26 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 27 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 32 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 33 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 34 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 35 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 40 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 41 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 42 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 43 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 44 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 45 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 46 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 47 + }, + "description": "CoEdgeDef has no Curve2D representation" + } + ], + "unexplainedStructuralErrors": 0, + "solids": 1, + "volume": 790.5752220392302, + "stages": [ + { + "stageId": "chrome-native-groove-two-angles-history:native-stage:0", + "operation": "rotate", + "inputObjectIds": [ + "Profile" + ], + "resultObjectId": "chrome-native-groove-two-angles-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 9, + "recordCount": 13 + }, + { + "stageId": "chrome-native-groove-two-angles-history:native-stage:1", + "operation": "revolution", + "inputObjectIds": [ + "chrome-native-groove-two-angles-history:native-stage:0:result" + ], + "resultObjectId": "chrome-native-groove-two-angles-history:native-stage:1:result", + "ordinal": 1, + "topologyEntries": 26, + "recordCount": 25 + }, + { + "stageId": "chrome-native-groove-two-angles-history:native-stage:2", + "operation": "cut", + "inputObjectIds": [ + "Base", + "chrome-native-groove-two-angles-history:native-stage:1:result" + ], + "resultObjectId": "GrooveTwoAngles", + "ordinal": 2, + "topologyEntries": 52, + "recordCount": 2 + } + ] + }, + "base": { + "boundingBox": { + "min": [ + -5.0000001, + -1e-7, + -4.0000001 + ], + "max": [ + 5.0000001, + 10.0000001, + 4.0000001 + ] + }, + "volume": 799.9999999999998 + }, + "result": { + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0, + "solids": 1, + "faces": 10, + "edges": 18, + "vertices": 12, + "volume": 781.1504440784611 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "opfs": { + "markerOperation": "groove", + "markerRemoved": true + } +} diff --git a/config/chrome-native-history-verification.json b/config/chrome-native-history-verification.json new file mode 100644 index 0000000..d1f1f6c --- /dev/null +++ b/config/chrome-native-history-verification.json @@ -0,0 +1,41 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 87, + "relations": { + "deleted": 69, + "modified": 18 + } + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-hole-history-verification.json b/config/chrome-native-hole-history-verification.json new file mode 100644 index 0000000..5a59c7e --- /dev/null +++ b/config/chrome-native-hole-history-verification.json @@ -0,0 +1,101 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "geometry-and-history-workers", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "loft", + "pipe", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 8, + "relations": { + "modified": 6, + "generated": 0, + "deleted": 2 + }, + "sourceObjects": [ + "Base", + "chrome-native-hole-history:native-stage:0:result" + ], + "stages": [ + { + "stageId": "chrome-native-hole-history:native-stage:0", + "operation": "hole", + "inputObjectIds": [], + "resultObjectId": "chrome-native-hole-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 8, + "recordCount": 0 + }, + { + "stageId": "chrome-native-hole-history:native-stage:1", + "operation": "cut", + "inputObjectIds": [ + "Base", + "chrome-native-hole-history:native-stage:0:result" + ], + "resultObjectId": "chrome-native-hole-history:native-stage:1:result", + "ordinal": 1, + "topologyEntries": 32, + "recordCount": 8 + } + ], + "sourceStageIds": [ + "chrome-native-hole-history:native-stage:0" + ], + "resultStageIds": [ + "chrome-native-hole-history:native-stage:1" + ] + }, + "result": { + "structuralValid": true, + "solids": 1, + "volume": 968.584073464102 + }, + "opfs": { + "markerCreated": true, + "markerSuite": "hole", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-linear-pattern-history-verification.json b/config/chrome-native-linear-pattern-history-verification.json new file mode 100644 index 0000000..7bc784f --- /dev/null +++ b/config/chrome-native-linear-pattern-history-verification.json @@ -0,0 +1,67 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 66, + "relations": { + "modified": 64, + "generated": 0, + "deleted": 2 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 12, + "nativeStructuralValid": true, + "nativeSolids": 1, + "nativeVolume": 11.999999999999995 + }, + "opfs": { + "markerSuite": "linear-pattern", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-loft-history-verification.json b/config/chrome-native-loft-history-verification.json new file mode 100644 index 0000000..62edf4e --- /dev/null +++ b/config/chrome-native-loft-history-verification.json @@ -0,0 +1,73 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "loft", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 24, + "relations": { + "modified": 0, + "generated": 24, + "deleted": 0 + }, + "sourceObjects": [ + "FirstSection", + "SecondSection" + ] + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 20 + }, + "opfs": { + "markerPayload": { + "operation": "loft", + "sections": 2, + "ruled": false + }, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-mirrored-history-verification.json b/config/chrome-native-mirrored-history-verification.json new file mode 100644 index 0000000..2436de7 --- /dev/null +++ b/config/chrome-native-mirrored-history-verification.json @@ -0,0 +1,69 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 66, + "relations": { + "modified": 64, + "generated": 0, + "deleted": 2 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 3, + "nativeStructuralValid": true, + "nativeSolids": 1, + "nativeVolume": 2.999999999999999 + }, + "opfs": { + "markerSuite": "mirrored", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-multi-transform-history-verification.json b/config/chrome-native-multi-transform-history-verification.json new file mode 100644 index 0000000..75d7d69 --- /dev/null +++ b/config/chrome-native-multi-transform-history-verification.json @@ -0,0 +1,119 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "loft", + "pipe", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 311, + "relations": { + "modified": 88, + "generated": 222, + "deleted": 1 + }, + "sourceObjects": [ + "Base" + ], + "transformKinds": [ + "linear", + "mirrored" + ], + "stagedRecordCount": 97, + "stages": [ + { + "stageId": "multi-transform-staged-history:native-stage:0", + "operation": "linear-pattern", + "inputObjectIds": [ + "Base" + ], + "resultObjectId": "multi-transform-staged-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 58, + "recordCount": 30 + }, + { + "stageId": "multi-transform-staged-history:native-stage:1", + "operation": "mirrored", + "inputObjectIds": [ + "multi-transform-staged-history:native-stage:0:result" + ], + "resultObjectId": "MultiTransform", + "ordinal": 1, + "topologyEntries": 90, + "recordCount": 97 + } + ], + "finalRecordLineage": { + "records": 97, + "sourceObjectIds": [ + "multi-transform-staged-history:native-stage:0:result" + ], + "sourceStageIds": [ + "multi-transform-staged-history:native-stage:0" + ], + "resultStageIds": [ + "multi-transform-staged-history:native-stage:1" + ] + } + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 4.999999999999999, + "nativeStructuralValid": true, + "nativeSolids": 1, + "nativeVolume": 4.999999999999998 + }, + "opfs": { + "markerPayload": { + "operation": "multi-transform", + "transformKinds": [ + "linear", + "mirrored" + ] + }, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-pad-history-verification.json b/config/chrome-native-pad-history-verification.json new file mode 100644 index 0000000..6c309ca --- /dev/null +++ b/config/chrome-native-pad-history-verification.json @@ -0,0 +1,59 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "dedicated-worker", + "crossOriginIsolated": true, + "status": "pass", + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad" + ], + "transport": "step-text" + }, + "execution": { + "status": "completed", + "recordCount": 25, + "crossKindRecords": 12, + "relations": { + "modified": 13, + "generated": 12, + "deleted": 0 + }, + "profileKinds": [ + "vertex", + "edge", + "face" + ], + "summary": { + "shapeType": "CompSolid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 30, + "area": 62, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 2.0000001, + 3.0000001, + 5.0000001 + ] + } + } + }, + "workerDisposed": true +} diff --git a/config/chrome-native-pipe-history-verification.json b/config/chrome-native-pipe-history-verification.json new file mode 100644 index 0000000..0324e63 --- /dev/null +++ b/config/chrome-native-pipe-history-verification.json @@ -0,0 +1,74 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "loft", + "pipe", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 28, + "relations": { + "modified": 1, + "generated": 27, + "deleted": 0 + }, + "sourceObjects": [ + "Profile", + "Spine" + ] + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 20.000000000000004 + }, + "opfs": { + "markerPayload": { + "operation": "pipe", + "profiles": 1, + "spineEdges": 1 + }, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-pocket-history-verification.json b/config/chrome-native-pocket-history-verification.json new file mode 100644 index 0000000..76d88fe --- /dev/null +++ b/config/chrome-native-pocket-history-verification.json @@ -0,0 +1,147 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "loft", + "pipe", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 42, + "sourceObjects": [ + "Base", + "Profile", + "chrome-native-pocket-history:native-stage:0:result" + ], + "relations": { + "modified": 21, + "generated": 0, + "deleted": 21 + }, + "stages": [ + { + "stageId": "chrome-native-pocket-history:native-stage:0", + "operation": "pad", + "inputObjectIds": [ + "Profile" + ], + "resultObjectId": "chrome-native-pocket-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 26, + "recordCount": 25 + }, + { + "stageId": "chrome-native-pocket-history:native-stage:1", + "operation": "cut", + "inputObjectIds": [ + "Base", + "chrome-native-pocket-history:native-stage:0:result" + ], + "resultObjectId": "chrome-native-pocket-history:native-stage:1:result", + "ordinal": 1, + "topologyEntries": 44, + "recordCount": 42 + } + ] + }, + "twoSidedHistory": { + "recordCount": 20, + "structuralValid": true, + "solids": 1, + "sourceObjects": [ + "BaseTwoSided", + "Profile", + "chrome-native-pocket-two-sided-history:native-stage:0:result", + "chrome-native-pocket-two-sided-history:native-stage:1:result", + "chrome-native-pocket-two-sided-history:native-stage:2:result" + ], + "stages": [ + { + "stageId": "chrome-native-pocket-two-sided-history:native-stage:0", + "operation": "pad", + "inputObjectIds": [ + "Profile" + ], + "resultObjectId": "chrome-native-pocket-two-sided-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 26, + "recordCount": 25 + }, + { + "stageId": "chrome-native-pocket-two-sided-history:native-stage:1", + "operation": "pad", + "inputObjectIds": [ + "Profile" + ], + "resultObjectId": "chrome-native-pocket-two-sided-history:native-stage:1:result", + "ordinal": 1, + "topologyEntries": 26, + "recordCount": 25 + }, + { + "stageId": "chrome-native-pocket-two-sided-history:native-stage:2", + "operation": "fuse", + "inputObjectIds": [ + "chrome-native-pocket-two-sided-history:native-stage:0:result", + "chrome-native-pocket-two-sided-history:native-stage:1:result" + ], + "resultObjectId": "chrome-native-pocket-two-sided-history:native-stage:2:result", + "ordinal": 2, + "topologyEntries": 42, + "recordCount": 90 + }, + { + "stageId": "chrome-native-pocket-two-sided-history:native-stage:3", + "operation": "cut", + "inputObjectIds": [ + "BaseTwoSided", + "chrome-native-pocket-two-sided-history:native-stage:2:result" + ], + "resultObjectId": "PocketTwoSided", + "ordinal": 3, + "topologyEntries": 66, + "recordCount": 20 + } + ] + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-polar-pattern-history-verification.json b/config/chrome-native-polar-pattern-history-verification.json new file mode 100644 index 0000000..389e356 --- /dev/null +++ b/config/chrome-native-polar-pattern-history-verification.json @@ -0,0 +1,68 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 68, + "relations": { + "modified": 68, + "generated": 0, + "deleted": 0 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 3, + "nativeStructuralValid": true, + "nativeSolids": 1, + "nativeVolume": 3.0000000000000004 + }, + "opfs": { + "markerSuite": "polar-pattern", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-revolution-history-verification.json b/config/chrome-native-revolution-history-verification.json new file mode 100644 index 0000000..8cc886f --- /dev/null +++ b/config/chrome-native-revolution-history-verification.json @@ -0,0 +1,132 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "rotate", + "pad", + "pocket", + "loft", + "pipe", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness", + "linear-pattern", + "polar-pattern", + "mirrored", + "multi-transform" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 23, + "crossKindRecords": 10, + "relations": { + "modified": 10, + "generated": 10, + "deleted": 3 + } + }, + "twoSidedHistory": { + "recordCount": 25, + "structuralValid": true, + "graphStructuralValid": false, + "graphStructuralErrors": 4, + "graphStructuralWarnings": 0, + "graphStructuralIssues": [ + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 16 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 17 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 18 + }, + "description": "CoEdgeDef has no Curve2D representation" + }, + { + "severity": "error", + "node": { + "kind": "coedge", + "index": 19 + }, + "description": "CoEdgeDef has no Curve2D representation" + } + ], + "unexplainedStructuralErrors": 0, + "solids": 1, + "volume": 37.69911184307333, + "stages": [ + { + "stageId": "chrome-native-revolution-two-sided-history:native-stage:0", + "operation": "rotate", + "inputObjectIds": [ + "Profile" + ], + "resultObjectId": "chrome-native-revolution-two-sided-history:native-stage:0:result", + "ordinal": 0, + "topologyEntries": 9, + "recordCount": 13 + }, + { + "stageId": "chrome-native-revolution-two-sided-history:native-stage:1", + "operation": "revolution", + "inputObjectIds": [ + "chrome-native-revolution-two-sided-history:native-stage:0:result" + ], + "resultObjectId": "RevolutionTwoSided", + "ordinal": 1, + "topologyEntries": 26, + "recordCount": 25 + } + ] + }, + "result": { + "structuralValid": true, + "solids": 1, + "volume": 75.39822368615503 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-native-thickness-history-verification.json b/config/chrome-native-thickness-history-verification.json new file mode 100644 index 0000000..d79dddf --- /dev/null +++ b/config/chrome-native-thickness-history-verification.json @@ -0,0 +1,68 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "geometry-and-history-workers", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "nativeCapabilities": { + "providerId": "occt-native.history-step", + "providerVersion": "8.0.0-embind", + "occtVersion": "8.0.0", + "availability": "available", + "operations": [ + "fuse", + "cut", + "common", + "pad", + "pocket", + "revolution", + "groove", + "fillet", + "chamfer", + "hole", + "draft", + "thickness" + ], + "transport": "step-text" + }, + "history": { + "recordCount": 38, + "relations": { + "modified": 1, + "generated": 37, + "deleted": 0 + }, + "sourceObjects": [ + "Base" + ] + }, + "result": { + "bitbybitStructuralValid": false, + "bitbybitSolids": 1, + "bitbybitVolume": 64.57600000000002, + "nativeStructuralValid": true, + "nativeSolids": 1, + "nativeVolume": 64.57600000000002 + }, + "opfs": { + "markerCreated": true, + "markerSuite": "thickness", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-offline-verification.json b/config/chrome-offline-verification.json new file mode 100644 index 0000000..4e56617 --- /dev/null +++ b/config/chrome-offline-verification.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "serviceWorker": { + "registered": true, + "controlled": true, + "shellCached": true, + "staleCacheRemoved": true, + "offlineFallback": true, + "cacheNames": [ + "bitbybit-cad-shell-v1" + ] + }, + "persistence": { + "mode": "sqlite-opfs", + "bytes": 80, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "REL-01", + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-opfs-migration-verification.json b/config/chrome-opfs-migration-verification.json new file mode 100644 index 0000000..90505e5 --- /dev/null +++ b/config/chrome-opfs-migration-verification.json @@ -0,0 +1,36 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "migration": { + "sourceSchemaVersion": 1, + "migratedSchemaVersion": 6, + "migratedDocumentVersion": 3, + "migratedLabel": "Legacy OPFS project", + "migratedObjectCount": 1, + "recomputeDefaulted": true, + "reopenedSchemaVersion": 6, + "reopenedVersion": 4, + "reopenedLabel": "Migrated OPFS project", + "checkpointVersion": 4, + "recoveryIntegrity": "ok", + "reopenedRecoveryIntegrity": "ok", + "resourceRoundTrip": true, + "resourceReleased": true + }, + "rollback": { + "rejected": true, + "interruptedAfterMarker": true, + "error": "Injected migration interruption after schema version 3.", + "appliedVersionsAfterFailure": [ + 1 + ] + }, + "cleanup": { + "databasePath": "/bitbybit-rel02-301b6b76-9ab6-44ef-bf40-f2e6052e58ae.sqlite3", + "removedFiles": [ + "bitbybit-rel02-301b6b76-9ab6-44ef-bf40-f2e6052e58ae.sqlite3" + ] + } +} diff --git a/config/chrome-part-primitives-verification.json b/config/chrome-part-primitives-verification.json new file mode 100644 index 0000000..e639369 --- /dev/null +++ b/config/chrome-part-primitives-verification.json @@ -0,0 +1,54 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "operations": [ + { + "name": "ellipsoid", + "meshVertices": 603, + "meshTriangles": 1170, + "volume": 100.48699804303837 + }, + { + "name": "torus", + "meshVertices": 972, + "meshTriangles": 1820, + "volume": 98.69604401089352 + }, + { + "name": "prism", + "meshVertices": 36, + "meshTriangles": 20, + "volume": 41.569219381653056 + }, + { + "name": "wedge", + "meshVertices": 24, + "meshTriangles": 12, + "volume": 120 + }, + { + "name": "helix", + "meshVertices": 0, + "meshTriangles": 0, + "length": 25.839014719433763 + } + ], + "beforeRelease": { + "shapeCount": 5, + "kernelReferenceCount": 5 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "opfs": { + "markerSuite": "PART-ALL", + "markerOperations": 5, + "markerRemoved": true + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-partdesign-lifecycle-verification.json b/config/chrome-partdesign-lifecycle-verification.json new file mode 100644 index 0000000..123f15d --- /dev/null +++ b/config/chrome-partdesign-lifecycle-verification.json @@ -0,0 +1,93 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "structural": { + "initialOrder": [ + "sketch", + "pad", + "pocket", + "fillet" + ], + "restoredOrder": [ + "sketch", + "pad", + "pocket", + "fillet" + ], + "reorderRejected": true, + "dependencyRemovalRejected": true, + "deleted": { + "removed": [ + "fillet" + ], + "tip": "pocket", + "filletExists": false + }, + "deletionUndone": { + "tip": "fillet", + "filletExists": true + }, + "deletionRedone": { + "tip": "pocket", + "filletExists": false + }, + "restoredTip": "fillet" + }, + "initial": { + "length": 42, + "tip": "pad", + "support": "XY_Plane", + "pocketSuppressed": true, + "filletSuppressed": true, + "shapeId": "shape-msi74mj9-1", + "volume": 504, + "solids": 1, + "structuralValid": false + }, + "edited": { + "length": 31, + "tip": "pad", + "support": "XY_Plane", + "recompute": "completed", + "shapeCount": 1, + "kernelReferenceCount": 1, + "shapeId": "shape-msi74ml0-2", + "volume": 372, + "solids": 1, + "structuralValid": false + }, + "undone": { + "length": 42, + "tip": "pad", + "support": "XY_Plane", + "recompute": "completed", + "shapeCount": 1, + "kernelReferenceCount": 1, + "shapeId": "shape-msi74mln-3", + "volume": 504, + "solids": 1, + "structuralValid": false + }, + "reopened": { + "length": 42, + "tip": "pad", + "support": "XY_Plane", + "pocketSuppressed": true, + "filletSuppressed": true, + "persistedLength": 42, + "savedVersion": 24, + "activeVersion": 24, + "recompute": "completed", + "persistenceMode": "sqlite-opfs", + "shapeId": "shape-msi74moe-5", + "volume": 504, + "solids": 1, + "structuralValid": false + }, + "released": { + "shapeCount": 0, + "kernelReferenceCount": 0 + } +} diff --git a/config/chrome-partdesign-loft-verification.json b/config/chrome-partdesign-loft-verification.json new file mode 100644 index 0000000..dc70ec2 --- /dev/null +++ b/config/chrome-partdesign-loft-verification.json @@ -0,0 +1,118 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "operations": [ + { + "command": "additive-loft", + "objectId": "additive-loft", + "typeId": "PartDesign::AdditiveLoft", + "recompute": "completed", + "base": "pad", + "profile": "sketch", + "sections": [ + "sketch001" + ], + "spine": null, + "transition": null, + "tip": "additive-loft", + "shapeId": "shape-msi3obcr-2", + "volume": 504 + }, + { + "command": "additive-pipe", + "objectId": "additive-pipe", + "typeId": "PartDesign::AdditivePipe", + "recompute": "completed", + "base": "additive-loft", + "profile": "sketch003", + "sections": null, + "spine": { + "schemaVersion": 1, + "objectId": "sketch002", + "subElements": [] + }, + "transition": "Transformed", + "tip": "additive-pipe", + "shapeId": "shape-msi3obgk-4", + "volume": 524 + }, + { + "command": "subtractive-loft", + "objectId": "subtractive-loft", + "typeId": "PartDesign::SubtractiveLoft", + "recompute": "completed", + "base": "additive-pipe", + "profile": "sketch004", + "sections": [ + "sketch005" + ], + "spine": null, + "transition": null, + "tip": "subtractive-loft", + "shapeId": "shape-msi3obk0-5", + "volume": 512.0000000000001 + }, + { + "command": "subtractive-pipe", + "objectId": "subtractive-pipe", + "typeId": "PartDesign::SubtractivePipe", + "recompute": "completed", + "base": "subtractive-loft", + "profile": "sketch006", + "sections": null, + "spine": { + "schemaVersion": 1, + "objectId": "sketch007", + "subElements": [] + }, + "transition": "Transformed", + "tip": "subtractive-pipe", + "shapeId": "shape-msi3obnp-6", + "volume": 511.0000000000001 + } + ], + "failureRecovery": { + "loft": { + "status": "failed", + "code": "LOFT_SECTIONS_DUPLICATE", + "retainedShapeId": "shape-msi3obcr-2", + "previousShapeId": "shape-msi3obcr-2", + "restoredStatus": "completed", + "restoredShapeId": "shape-msi3obdt-3" + }, + "pipe": { + "status": "failed", + "code": "PIPE_PATH_BRANCH", + "retainedShapeId": "shape-msi3obnp-6", + "previousShapeId": "shape-msi3obnp-6", + "restoredStatus": "completed", + "restoredShapeId": "shape-msi3obq6-7" + } + }, + "persistence": { + "mode": "sqlite-opfs", + "savedVersion": 70, + "reopenedVersion": 70, + "objectCount": 19, + "reopenedTip": "subtractive-pipe" + }, + "opfs": { + "markerSuite": "PD-LOFT", + "markerOperations": 4, + "markerRemoved": true + }, + "beforeRelease": { + "shapeCount": 5, + "kernelReferenceCount": 5 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-partdesign-transform-verification.json b/config/chrome-partdesign-transform-verification.json new file mode 100644 index 0000000..df479cb --- /dev/null +++ b/config/chrome-partdesign-transform-verification.json @@ -0,0 +1,337 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "operations": [ + { + "command": "hole", + "objectId": "hole", + "typeId": "PartDesign::Hole", + "base": "pad", + "tip": "hole", + "recompute": "completed", + "shapeCount": 2, + "kernelReferenceCount": 2, + "shapeId": "shape-msi6khll-3", + "volume": 497.71681469282044, + "solids": 1, + "structuralValid": false, + "threaded": false, + "modelThread": false, + "threadType": "None", + "threadSize": "M6x1.0", + "threadDirection": "Right" + }, + { + "command": "fillet", + "objectId": "fillet001", + "typeId": "PartDesign::Fillet", + "base": { + "schemaVersion": 1, + "objectId": "hole", + "kind": "edge", + "persistentId": "topo-edge-c5080c7f512c3757", + "topologyVersion": 25, + "generation": 2, + "status": "new", + "signature": "edge|curve=line|length=800|range=|adjacent=plane,plane,plane|degenerated=0" + }, + "tip": "fillet001", + "recompute": "completed", + "shapeCount": 3, + "kernelReferenceCount": 3, + "shapeId": "shape-msi6khor-4", + "volume": 497.5808989123684, + "solids": 1, + "structuralValid": false + }, + { + "command": "chamfer", + "objectId": "chamfer", + "typeId": "PartDesign::Chamfer", + "base": { + "schemaVersion": 1, + "objectId": "hole", + "kind": "edge", + "persistentId": "topo-edge-1190dbb2fa02bb4d", + "topologyVersion": 25, + "generation": 2, + "status": "new", + "signature": "edge|curve=line|length=800|range=|adjacent=plane,plane|degenerated=0" + }, + "tip": "chamfer", + "recompute": "completed", + "shapeCount": 4, + "kernelReferenceCount": 4, + "shapeId": "shape-msi6khqq-5", + "volume": 497.5368146928205, + "solids": 1, + "structuralValid": false + }, + { + "command": "draft", + "objectId": "draft", + "typeId": "PartDesign::Draft", + "base": { + "schemaVersion": 1, + "objectId": "hole", + "kind": "face", + "persistentId": "topo-face-154d54dd4cc87e90", + "topologyVersion": 25, + "generation": 2, + "status": "new", + "signature": "face|surface=cylinder|area=5027|adjacent=2|edges=3|wires=0|natural=0" + }, + "tip": "draft", + "recompute": "completed", + "shapeCount": 5, + "kernelReferenceCount": 5, + "shapeId": "shape-msi6khs1-7", + "volume": 484.8175441487494, + "solids": 1, + "structuralValid": false + }, + { + "command": "thickness", + "objectId": "thickness", + "typeId": "PartDesign::Thickness", + "base": "hole", + "tip": "thickness", + "recompute": "completed", + "shapeCount": 6, + "kernelReferenceCount": 6, + "shapeId": "shape-msi6khue-9", + "volume": 505.16706481222076, + "solids": 1, + "structuralValid": false + }, + { + "command": "hole", + "objectId": "hole001", + "typeId": "PartDesign::Hole", + "base": "hole", + "tip": "hole001", + "recompute": "completed", + "shapeCount": 7, + "kernelReferenceCount": 7, + "shapeId": "shape-msi6ki2i-j", + "volume": 363.66427233552065, + "solids": 1, + "structuralValid": false, + "threaded": true, + "modelThread": false, + "threadType": "ISOMetricProfile", + "threadSize": "M1x0.25", + "threadDirection": "Right" + }, + { + "command": "hole", + "objectId": "hole002", + "typeId": "PartDesign::Hole", + "base": "hole001", + "tip": "hole002", + "recompute": "completed", + "shapeCount": 8, + "kernelReferenceCount": 8, + "shapeId": "shape-msi6kjlh-m", + "volume": 347.12633973440813, + "solids": 1, + "structuralValid": false, + "threaded": true, + "modelThread": true, + "threadType": "ISOMetricProfile", + "threadSize": "M2x0.4", + "threadDirection": "Left" + }, + { + "command": "linear-pattern", + "objectId": "linear-pattern", + "typeId": "PartDesign::LinearPattern", + "base": "hole001", + "tip": "linear-pattern", + "recompute": "completed", + "shapeCount": 9, + "kernelReferenceCount": 9, + "shapeId": "shape-msi6kk24-p", + "volume": 357.3810870283411, + "solids": 1, + "structuralValid": false, + "transformMode": "Features", + "originals": [ + "hole" + ] + }, + { + "command": "mirrored", + "objectId": "mirrored", + "typeId": "PartDesign::Mirrored", + "base": "linear-pattern", + "tip": "mirrored", + "recompute": "completed", + "shapeCount": 10, + "kernelReferenceCount": 10, + "shapeId": "shape-msi6kk4j-s", + "volume": 354.26859542168523, + "solids": 1, + "structuralValid": false, + "transformMode": "Features", + "originals": [ + "hole" + ] + }, + { + "command": "mirrored", + "objectId": "mirrored001", + "typeId": "PartDesign::Mirrored", + "base": "mirrored", + "tip": "mirrored001", + "recompute": "completed", + "shapeCount": 11, + "kernelReferenceCount": 11, + "shapeId": "shape-msi6kk61-t", + "volume": 354.26859542168523, + "solids": 1, + "structuralValid": false, + "transformMode": "Whole shape", + "originals": [] + }, + { + "command": "linear-pattern", + "objectId": "linear-pattern001", + "typeId": "PartDesign::LinearPattern", + "base": "mirrored001", + "tip": "linear-pattern001", + "recompute": "completed", + "shapeCount": 12, + "kernelReferenceCount": 12, + "shapeId": "shape-msi6kkk8-w", + "volume": 547.6164162707034, + "solids": 1, + "structuralValid": false, + "transformMode": "Whole shape", + "originals": [] + }, + { + "command": "polar-pattern", + "objectId": "polar-pattern", + "typeId": "PartDesign::PolarPattern", + "base": "linear-pattern001", + "tip": "polar-pattern", + "recompute": "completed", + "shapeCount": 13, + "kernelReferenceCount": 13, + "shapeId": "shape-msi6kl0z-z", + "volume": 1351.4339505434775, + "solids": 1, + "structuralValid": false, + "transformMode": "Whole shape", + "originals": [] + }, + { + "command": "multi-transform", + "objectId": "multi-transform", + "typeId": "PartDesign::MultiTransform", + "base": "polar-pattern", + "tip": "multi-transform", + "recompute": "completed", + "shapeCount": 14, + "kernelReferenceCount": 14, + "shapeId": "shape-msi6kmxn-13", + "volume": 2031.0345622237955, + "solids": 1, + "structuralValid": false, + "transformMode": "Whole shape", + "originals": [] + }, + { + "command": "hole", + "objectId": "hole003", + "typeId": "PartDesign::Hole", + "base": "multi-transform", + "tip": "hole003", + "recompute": "completed", + "shapeCount": 15, + "kernelReferenceCount": 15, + "shapeId": "shape-msi6kn10-17", + "volume": 1996.182518723034, + "solids": 1, + "structuralValid": false, + "threaded": false, + "modelThread": false, + "threadType": "None", + "threadSize": "M6x1.0", + "threadDirection": "Right" + } + ], + "ambiguityRecovery": { + "command": "fillet", + "status": "failed", + "code": "DRESSUP_EDGE_REFERENCE_UNRESOLVED", + "retainedShapeId": "shape-msi6khor-4", + "previousShapeId": "shape-msi6khor-4", + "restoredStatus": "completed", + "restoredShapeId": "shape-msi6khvg-a" + }, + "topologyMigration": { + "editedPadLength": 31, + "migrated": [ + { + "command": "fillet", + "objectId": "hole", + "kind": "edge", + "status": "ambiguous", + "persistentId": "topo-edge-c5080c7f512c3757" + }, + { + "command": "chamfer", + "objectId": "hole", + "kind": "edge", + "status": "ambiguous", + "persistentId": "topo-edge-1190dbb2fa02bb4d" + }, + { + "command": "draft", + "objectId": "hole", + "kind": "face", + "status": "stable", + "persistentId": "topo-face-154d54dd4cc87e90" + }, + { + "command": "thickness", + "objectId": "hole", + "kind": "face", + "status": "ambiguous", + "persistentId": "topo-face-82a09f740c619c10" + } + ], + "stable": 1, + "ambiguous": 3, + "ambiguityDiagnostics": 3, + "wrongBindings": 0 + }, + "persistence": { + "mode": "sqlite-opfs", + "savedVersion": 41, + "reopenedVersion": 41, + "reopenedTip": "hole003", + "objectCount": 21 + }, + "opfs": { + "markerSuite": "PD-TRANSFORM", + "markerOperations": 14, + "markerRemoved": true + }, + "beforeRelease": { + "shapeCount": 12, + "kernelReferenceCount": 12 + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-performance-verification.json b/config/chrome-performance-verification.json new file mode 100644 index 0000000..728e38f --- /dev/null +++ b/config/chrome-performance-verification.json @@ -0,0 +1,35 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "benchmark": { + "objects": 1000, + "triangles": 1000000, + "tableCells": 100000, + "objectMs": 0.26999998092651367, + "triangleMs": 3.1500000953674316, + "tableMs": 1.0499999523162842, + "heapBytes": 34939773, + "pass": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 408, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "QA-05", + "triangles": 1000000, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-persistence-verification.json b/config/chrome-persistence-verification.json new file mode 100644 index 0000000..0900cfd --- /dev/null +++ b/config/chrome-persistence-verification.json @@ -0,0 +1,22 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "mode": "sqlite-opfs", + "sqliteWasm": true, + "opfs": true, + "schemaVersion": 6, + "crossTabWriteLock": "web-locks" + }, + "roundTrip": { + "savedMode": "sqlite-opfs", + "loadedVersion": 7, + "loadedLabel": "Chrome OPFS persistence", + "checkpointVersion": 7, + "resourceRoundTrip": true, + "recoveryIntegrity": "ok", + "checkpointCount": 1 + } +} diff --git a/config/chrome-planegcs-verification.json b/config/chrome-planegcs-verification.json new file mode 100644 index 0000000..f87b718 --- /dev/null +++ b/config/chrome-planegcs-verification.json @@ -0,0 +1,757 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "executionContext": "dedicated-worker", + "crossOriginIsolated": true, + "sharedArrayBuffer": true, + "status": "pass", + "solve": { + "solveStatus": 0, + "startX": 0, + "startY": 0, + "endX": 5, + "endY": 0, + "residual": 0 + }, + "verticalSolve": { + "solveStatus": 0, + "startX": 0, + "startY": 0, + "endX": 0, + "endY": 5, + "residual": 0 + }, + "distanceXSolve": { + "solveStatus": 0, + "startX": 0, + "startY": 0, + "endX": 6, + "endY": 0, + "residual": 0 + }, + "distanceYSolve": { + "solveStatus": 0, + "startX": 0, + "startY": 0, + "endX": 0, + "endY": 6, + "residual": 0 + }, + "angleSolve": { + "solveStatus": 0, + "startX": 0, + "startY": 0, + "endX": 3.5355339059327666, + "endY": 3.535533905932768, + "lengthResidual": 4.1744385725905886e-14, + "residual": 2.220446049250313e-16, + "targetAngle": 0.7853981633974483 + }, + "circleRadiusSolve": { + "solveStatus": 0, + "centerX": 2, + "centerY": 3, + "radius": 4, + "residual": 0 + }, + "circleDiameterSolve": { + "solveStatus": 0, + "centerX": 2, + "centerY": 3, + "radius": 4, + "residual": 0 + }, + "equalLinesSolve": { + "solveStatus": 0, + "firstStartX": 0, + "firstStartY": 0, + "firstEndX": 4, + "firstEndY": 0, + "secondStartX": 0, + "secondStartY": 2, + "secondEndX": 2.8550078532679066, + "secondEndY": 4.801594217187551, + "residual": 1.865174681370263e-14 + }, + "equalCirclesSolve": { + "solveStatus": 0, + "firstCenterX": 2, + "firstCenterY": 3, + "firstRadius": 4, + "secondCenterX": 8, + "secondCenterY": 9, + "secondRadius": 4, + "residual": 0 + }, + "tangentCirclesSolve": { + "solveStatus": 0, + "firstCenterX": 2, + "firstCenterY": 3, + "firstRadius": 4, + "secondCenterX": 10, + "secondCenterY": 3, + "secondRadius": 4.000000000000001, + "residual": -8.881784197001252e-16 + }, + "pointSymmetrySolve": { + "solveStatus": 0, + "firstX": 1, + "firstY": 2, + "secondX": 7.000000000002508, + "secondY": 9.99999999999955, + "centerX": 4, + "centerY": 6, + "residual": 1.2740804112383381e-12 + }, + "pointOnLineSolve": { + "solveStatus": 0, + "pointX": 2, + "pointY": 0, + "startX": 0, + "startY": 0, + "endX": 4, + "endY": 0, + "residual": 0 + }, + "pointOnCircleSolve": { + "solveStatus": 0, + "pointX": 4, + "pointY": 6.464101615137755, + "centerX": 2, + "centerY": 3, + "radius": 4, + "residual": 0 + }, + "pointOnArcSolve": { + "solveStatus": 0, + "pointX": 2, + "pointY": 7, + "centerX": 2, + "centerY": 3, + "radius": 4, + "startAngle": 0, + "endAngle": 3.141592653589793, + "residual": 0 + }, + "pointOnEllipseSolve": { + "solveStatus": 0, + "pointX": 2, + "pointY": 6.000000000037419, + "centerX": 2, + "centerY": 3, + "focusX": 6, + "focusY": 3, + "minorRadius": 3, + "residual": 4.490274818635953e-11 + }, + "pointOnBsplineSolve": { + "solveStatus": 0, + "pointX": 2, + "pointY": 1.500000000000298, + "pointParameter": 0.5, + "residualX": 0, + "residualY": 2.97983859809392e-13 + }, + "bsplineWeightSolve": { + "solveStatus": 0, + "weights": [ + 1, + 1.5, + 1.25, + 1 + ], + "helper": { + "center": { + "x": 1, + "y": 2 + }, + "radius": 1.5 + }, + "alignmentResidual": 0, + "residual": 0 + }, + "parallelSolve": { + "solveStatus": 0, + "firstStartX": 0, + "firstStartY": 0, + "firstEndX": 4, + "firstEndY": 0, + "secondStartX": 0, + "secondStartY": 2, + "secondEndX": 5, + "secondEndY": 2, + "residual": 0 + }, + "perpendicularSolve": { + "solveStatus": 0, + "firstStartX": 0, + "firstStartY": 0, + "firstEndX": 4, + "firstEndY": 0, + "secondStartX": 0, + "secondStartY": 2, + "secondEndX": 0, + "secondEndY": 7, + "residual": 0 + }, + "coincidentSolve": { + "solveStatus": 0, + "firstEndX": 4, + "firstEndY": 0, + "secondStartX": 4, + "secondStartY": 0, + "residual": 0 + }, + "coincidentEndpointSolves": [ + { + "firstPoint": "start", + "secondPoint": "start", + "solveStatus": 0, + "first": { + "x": 0, + "y": 0 + }, + "second": { + "x": 0, + "y": 0 + }, + "secondLength": 5.000000000000613, + "residual": 0 + }, + { + "firstPoint": "start", + "secondPoint": "end", + "solveStatus": 0, + "first": { + "x": 0, + "y": 0 + }, + "second": { + "x": 0, + "y": 0 + }, + "secondLength": 5, + "residual": 0 + }, + { + "firstPoint": "end", + "secondPoint": "start", + "solveStatus": 0, + "first": { + "x": 4, + "y": 0 + }, + "second": { + "x": 4, + "y": 0 + }, + "secondLength": 5.000000000000001, + "residual": 0 + }, + { + "firstPoint": "end", + "secondPoint": "end", + "solveStatus": 0, + "first": { + "x": 4, + "y": 0 + }, + "second": { + "x": 4, + "y": 0 + }, + "secondLength": 5, + "residual": 0 + } + ], + "coincidentEndpointProviders": [ + { + "firstPoint": "start", + "secondPoint": "start", + "completed": "completed", + "first": { + "x": 0, + "y": 0 + }, + "second": { + "x": 0, + "y": 0 + }, + "secondLength": 5.000000000000613 + }, + { + "firstPoint": "start", + "secondPoint": "end", + "completed": "completed", + "first": { + "x": 0, + "y": 0 + }, + "second": { + "x": 0, + "y": 0 + }, + "secondLength": 5 + }, + { + "firstPoint": "end", + "secondPoint": "start", + "completed": "completed", + "first": { + "x": 4, + "y": 0 + }, + "second": { + "x": 4, + "y": 0 + }, + "secondLength": 5.000000000000001 + }, + { + "firstPoint": "end", + "secondPoint": "end", + "completed": "completed", + "first": { + "x": 4, + "y": 0 + }, + "second": { + "x": 4, + "y": 0 + }, + "secondLength": 5 + } + ], + "snellsLawSolve": { + "solveStatus": 0, + "firstStart": { + "x": 0, + "y": 0 + }, + "firstEnd": { + "x": -4, + "y": 4 + }, + "secondStart": { + "x": 0, + "y": 0 + }, + "secondEnd": { + "x": 2.3570226039551594, + "y": 4.409585518440984 + }, + "boundaryStart": { + "x": -5, + "y": 0 + }, + "boundaryEnd": { + "x": 5, + "y": 0 + }, + "ratio": 1.5, + "residual": -4.440892098500626e-16 + }, + "snellsLawProvider": { + "completed": "completed", + "degreesOfFreedom": 8, + "residual": 4.440892098500626e-16, + "first": { + "start": { + "x": 0, + "y": 0 + }, + "end": { + "x": -4, + "y": 4 + } + }, + "second": { + "start": { + "x": 0, + "y": 0 + }, + "end": { + "x": 2.3570226039551594, + "y": 4.409585518440984 + } + }, + "boundary": { + "start": { + "x": -5, + "y": 0 + }, + "end": { + "x": 5, + "y": 0 + } + } + }, + "ellipseInternalAlignmentSolves": [ + { + "alignmentType": 1, + "solveStatus": 0, + "center": { + "x": 2, + "y": 3 + }, + "focus": { + "x": 5.8756496868425785, + "y": 3.989615837018092 + }, + "minorRadius": 3, + "helperStart": { + "x": 6.844562108553224, + "y": 4.237019796272614 + }, + "helperEnd": { + "x": -2.844562108553224, + "y": 1.7629802037273854 + }, + "helperError": 0, + "residual": 7.771561172376096e-16 + }, + { + "alignmentType": 2, + "solveStatus": 0, + "center": { + "x": 2, + "y": 3 + }, + "focus": { + "x": 5.8756496868425785, + "y": 3.989615837018092 + }, + "minorRadius": 3, + "helperStart": { + "x": 1.2577881222364313, + "y": 5.906737265131934 + }, + "helperEnd": { + "x": 2.7422118777635687, + "y": 0.09326273486806569 + }, + "helperError": 0, + "residual": 5.874748045952207e-16 + }, + { + "alignmentType": 3, + "solveStatus": 0, + "center": { + "x": 2, + "y": 3 + }, + "focus": { + "x": 5.8756496868425785, + "y": 3.989615837018092 + }, + "minorRadius": 3, + "helperStart": { + "x": 5.8756496868425785, + "y": 3.989615837018092 + }, + "helperEnd": { + "x": 5.8756496868425785, + "y": 3.989615837018092 + }, + "helperError": 0, + "residual": 0 + }, + { + "alignmentType": 4, + "solveStatus": 0, + "center": { + "x": 2, + "y": 3 + }, + "focus": { + "x": 5.8756496868425785, + "y": 3.989615837018092 + }, + "minorRadius": 3, + "helperStart": { + "x": -1.875649686842579, + "y": 2.010384162981908 + }, + "helperEnd": { + "x": -1.875649686842579, + "y": 2.010384162981908 + }, + "helperError": 0, + "residual": 3.1401849173675503e-16 + } + ], + "ellipseInternalAlignmentProvider": { + "completed": "completed", + "degreesOfFreedom": 5, + "residual": 7.771561172376096e-16, + "ellipse": { + "center": { + "x": 2, + "y": 3 + }, + "majorRadius": 5, + "minorRadius": 3, + "rotation": 0.25 + } + }, + "bsplineWeightProvider": { + "completed": "completed", + "degreesOfFreedom": 11, + "residual": 0, + "bspline": { + "degree": 3, + "controlPoints": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 2 + }, + { + "x": 3, + "y": 2 + }, + { + "x": 4, + "y": 0 + } + ], + "weights": [ + 1, + 1.5, + 1.25, + 1 + ], + "knots": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "periodic": false + } + }, + "pointOnCircleProvider": { + "completed": "completed", + "point": { + "x": 4, + "y": 6.464101615137755 + } + }, + "pointOnArcProvider": { + "completed": "completed", + "point": { + "x": 2, + "y": 7 + }, + "arc": { + "center": { + "x": 2, + "y": 3 + }, + "radius": 4, + "startAngle": 0, + "endAngle": 3.141592653589793 + } + }, + "pointOnEllipseProvider": { + "completed": "completed", + "point": { + "x": 2, + "y": 6.000000000037419 + }, + "ellipse": { + "center": { + "x": 2, + "y": 3 + }, + "majorRadius": 5, + "minorRadius": 3, + "rotation": 0 + } + }, + "pointOnBsplineProvider": { + "completed": "completed", + "point": { + "x": 2, + "y": 1.5 + }, + "bspline": { + "degree": 3, + "controlPoints": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 2 + }, + { + "x": 3, + "y": 2 + }, + { + "x": 4, + "y": 0 + } + ], + "weights": [ + 1, + 1, + 1, + 1 + ], + "knots": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "periodic": false + } + }, + "blockProvider": { + "completed": "completed", + "degreesOfFreedom": 0, + "line": { + "start": { + "x": 1, + "y": 2 + }, + "end": { + "x": 4, + "y": 6 + } + } + }, + "providerLifecycle": { + "availability": "available", + "engine": "planegcs-wasm", + "supportedGeometry": [ + "point", + "line", + "circle", + "arc", + "ellipse", + "bspline" + ], + "supportedConstraints": [ + "horizontal", + "vertical", + "parallel", + "perpendicular", + "distance", + "distanceX", + "distanceY", + "angle", + "radius", + "diameter", + "equal", + "tangent", + "coincident", + "symmetric", + "pointOnObject", + "snellsLaw", + "internalAlignment", + "weight", + "block" + ], + "completed": "completed", + "verticalCompleted": "completed", + "verticalEnd": { + "x": 0, + "y": 5 + }, + "angleCompleted": "completed", + "angleEnd": { + "x": 3.5355339059327666, + "y": 3.535533905932768 + }, + "circleRadiusCompleted": "completed", + "circleRadius": { + "center": { + "x": 2, + "y": 3 + }, + "radius": 4 + }, + "circleDiameterCompleted": "completed", + "circleDiameter": { + "center": { + "x": 2, + "y": 3 + }, + "radius": 4 + }, + "equalLinesCompleted": "completed", + "equalLinesSecond": { + "start": { + "x": 0, + "y": 2 + }, + "end": { + "x": 2.8550078532679066, + "y": 4.801594217187551 + } + }, + "equalCirclesCompleted": "completed", + "equalCirclesSecond": { + "center": { + "x": 8, + "y": 9 + }, + "radius": 4 + }, + "tangentCirclesCompleted": "completed", + "tangentCirclesSecond": { + "center": { + "x": 10, + "y": 3 + }, + "radius": 4.000000000000001 + }, + "pointSymmetryCompleted": "completed", + "pointSymmetrySecond": { + "x": 7.000000000002508, + "y": 9.99999999999955 + }, + "pointOnLineCompleted": "completed", + "pointOnLinePoint": { + "x": 2, + "y": 0 + }, + "parallelCompleted": "completed", + "parallelEnd": { + "x": 5, + "y": 2 + }, + "perpendicularCompleted": "completed", + "perpendicularEnd": { + "x": 0, + "y": 7 + }, + "coincidentCompleted": "completed", + "coincidentStart": { + "x": 4, + "y": 0 + }, + "cancelled": "cancelled", + "recovered": "completed", + "stale": "stale", + "recoveredEnd": { + "x": 5, + "y": 0 + } + } +} diff --git a/config/chrome-plot-verification.json b/config/chrome-plot-verification.json new file mode 100644 index 0000000..08a366f --- /dev/null +++ b/config/chrome-plot-verification.json @@ -0,0 +1,87 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "series": { + "count": 2, + "boundSource": "Spreadsheet", + "points": 3, + "updatedValue": 16, + "legend": true + }, + "axes": { + "x": "Revision", + "y": "Length (mm)", + "xRange": [ + 0, + 2 + ], + "yRange": [ + 0, + 20 + ] + }, + "logAxis": { + "xScale": "log", + "yScale": "log", + "svgHasLogMapping": true, + "rejectedNonPositive": true + }, + "svg": { + "bytes": 1075, + "sha256": "29c4de596904c4048fdaf524b099eb0cbc1ba49c10a77d65d5d882d23638ceff", + "deterministic": true, + "paths": 2, + "accessible": true + }, + "png": { + "bytes": 19408, + "sha256": "281e93a2acd75a0dd902cdcd52bb088094a05237ac15296462ca06936a956443", + "deterministic": true, + "width": 640, + "height": 360, + "validSignature": true + }, + "csv": { + "bytes": 156, + "rows": 7, + "sha256": "5879d47bdda947b5432ef38a03a6e8299cdb4e90cfea0370e398833a9c01244a" + }, + "resources": [ + { + "mediaType": "image/svg+xml", + "hash": "29c4de596904c4048fdaf524b099eb0cbc1ba49c10a77d65d5d882d23638ceff", + "byteLength": 1075, + "roundTrip": true, + "released": true + }, + { + "mediaType": "text/csv", + "hash": "5879d47bdda947b5432ef38a03a6e8299cdb4e90cfea0370e398833a9c01244a", + "byteLength": 156, + "roundTrip": true, + "released": true + }, + { + "mediaType": "image/png", + "hash": "281e93a2acd75a0dd902cdcd52bb088094a05237ac15296462ca06936a956443", + "byteLength": 19408, + "roundTrip": true, + "released": true + } + ], + "opfs": { + "markerSuite": "PLOT-ALL", + "markerSeries": 2, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-production-document-verification.json b/config/chrome-production-document-verification.json new file mode 100644 index 0000000..9399928 --- /dev/null +++ b/config/chrome-production-document-verification.json @@ -0,0 +1,64 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "closure": { + "complete": true, + "artifacts": 4, + "missingKinds": 0, + "missingDependencies": 0, + "cycles": 0, + "documentVersion": 8, + "reopenedComplete": true, + "artifactVersions": [ + 2, + 2, + 2, + 2 + ] + }, + "workflow": { + "created": { + "spreadsheetCells": 2, + "draftObjects": 1, + "techdrawViews": 1, + "plotSeries": 1 + }, + "edited": { + "spreadsheetValue": 6, + "draftStartX": 1, + "techdrawDimension": 5, + "plotValue": 6 + }, + "exports": { + "spreadsheetCsvBytes": 31, + "draftJsonBytes": 384, + "techdrawSvgBytes": 509, + "techdrawPdfBytes": 849, + "techdrawPdfValid": true, + "plotSvgBytes": 774, + "plotCsvBytes": 52 + } + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 8568, + "hash": "81ab5272815a42162a7f977bae74a0cefc2d1e23195865ac810eceb81bd71c30", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "DOC-CLOSURE", + "artifacts": 4, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-profile-validation-verification.json b/config/chrome-profile-validation-verification.json new file mode 100644 index 0000000..8c9e747 --- /dev/null +++ b/config/chrome-profile-validation-verification.json @@ -0,0 +1,122 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "fixtures": { + "closed": { + "status": "closed", + "ringCount": 1, + "selfIntersections": 0 + }, + "open": { + "status": "open", + "ringCount": 1, + "selfIntersections": 0 + }, + "multiRing": { + "status": "multi-ring", + "ringCount": 2, + "selfIntersections": 0 + }, + "selfIntersecting": { + "status": "self-intersecting", + "ringCount": 1, + "selfIntersections": 1 + }, + "invalidNesting": { + "status": "invalid-nesting", + "ringCount": 2, + "selfIntersections": 0 + }, + "nonPlanar": { + "status": "non-planar", + "ringCount": 1, + "selfIntersections": 0 + }, + "degenerate": { + "status": "degenerate", + "ringCount": 1, + "selfIntersections": 0 + } + }, + "validationErrors": { + "closed": null, + "multiRing": null, + "open": "Profile ring 0 is open.", + "selfIntersecting": "Profile contains self-intersecting edges.", + "invalidNesting": "Profile holes must be contained directly inside the outer ring.", + "nonPlanar": "Profile ring 0 is not coplanar with the outer ring.", + "degenerate": "Profile ring 0 is collinear." + }, + "partDesignProfiles": { + "closed": { + "code": null, + "regionCount": 1 + }, + "multiRing": { + "code": null, + "outerPoints": 4, + "holeCount": 1, + "regionCount": 1 + }, + "open": { + "code": "PROFILE_OPEN" + }, + "selfIntersecting": { + "code": null, + "regionCount": 2, + "regionPoints": [ + 3, + 3 + ] + }, + "invalidNesting": { + "code": null, + "regionCount": 2, + "regionPoints": [ + 4, + 4 + ] + } + }, + "partDesignGeometry": { + "closed": { + "volume": 360, + "solids": 1, + "shapeType": "solid", + "structuralValid": false, + "structuralErrors": 20, + "structuralWarnings": 0 + }, + "multiRing": { + "volume": 320, + "solids": 1, + "shapeType": "solid", + "structuralValid": false, + "structuralErrors": 40, + "structuralWarnings": 0 + }, + "selfIntersecting": { + "volume": 80, + "solids": 2, + "shapeType": "compound", + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0 + }, + "invalidNesting": { + "volume": 370, + "solids": 2, + "shapeType": "compound", + "structuralValid": true, + "structuralErrors": 0, + "structuralWarnings": 0 + } + }, + "opfs": { + "markerSuite": "SK-11", + "markerCases": 12, + "markerRemoved": true + } +} diff --git a/config/chrome-qa08-verification.json b/config/chrome-qa08-verification.json new file mode 100644 index 0000000..9177ef2 --- /dev/null +++ b/config/chrome-qa08-verification.json @@ -0,0 +1,42 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "locales": { + "supported": 3, + "snapshots": 3, + "longLabel": true, + "decimalSamples": [ + "12.346 mm", + "12.346 mm", + "12,346 mm" + ] + }, + "accessibility": { + "checked": 4, + "missingNames": 0, + "duplicates": 0, + "unnamedFocusable": 0, + "pass": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 813, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "QA-08", + "localeCount": 3, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-robot-verification.json b/config/chrome-robot-verification.json new file mode 100644 index 0000000..36df380 --- /dev/null +++ b/config/chrome-robot-verification.json @@ -0,0 +1,43 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "geometry": { + "sourceShape": "shape-msi9vj60-1", + "valid": true, + "volume": 7.999999999999998 + }, + "trajectory": { + "joints": 3, + "waypoints": 2, + "poses": 5, + "status": "generated", + "violations": 0, + "maxReach": 6, + "homeX": 6, + "collisions": 1, + "controllerBytes": 1120, + "csvBytes": 174 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 551, + "hash": "8f750b2eaaf68e4c3523a0c97145931ad6d6d83e854985d2b4069bb10fe8de26", + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "ROBOT-ALL", + "poses": 5, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-script-verification.json b/config/chrome-script-verification.json new file mode 100644 index 0000000..195eb84 --- /dev/null +++ b/config/chrome-script-verification.json @@ -0,0 +1,42 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "macro": { + "commands": 2, + "replay": "replayed", + "executed": 2, + "bytes": 210 + }, + "security": { + "disallowedRejected": true, + "quotaRejected": true, + "noDynamicExecution": true, + "deniedCapabilities": [ + "file", + "network", + "time", + "resource" + ] + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 210, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "SCRIPT-ALL", + "commands": 2, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-secondary-formats-verification.json b/config/chrome-secondary-formats-verification.json new file mode 100644 index 0000000..190b591 --- /dev/null +++ b/config/chrome-secondary-formats-verification.json @@ -0,0 +1,120 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "formats": { + "descriptors": 8, + "records": 8, + "nativeExports": 3, + "proxyImports": 8, + "bytes": 665, + "categories": [ + "2d", + "bim", + "data", + "mesh" + ], + "matrix": [ + { + "format": "DXF", + "category": "2d", + "byteLength": 36, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "SVG", + "category": "2d", + "byteLength": 217, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "OBJ", + "category": "mesh", + "byteLength": 72, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "PLY", + "category": "mesh", + "byteLength": 49, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "STL", + "category": "mesh", + "byteLength": 59, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "PDF", + "category": "2d", + "byteLength": 48, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "IFC", + "category": "bim", + "byteLength": 136, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + }, + { + "format": "CSV", + "category": "data", + "byteLength": 48, + "imported": true, + "rejectedInvalid": true, + "byteExactRoundTrip": true, + "deterministic": true, + "proxy": true + } + ] + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 1884, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "FC-09", + "records": 8, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-security-verification.json b/config/chrome-security-verification.json new file mode 100644 index 0000000..21b28e8 --- /dev/null +++ b/config/chrome-security-verification.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "checks": { + "path": 5, + "archiveEntries": 3, + "xmlBytes": 79, + "permissionChecks": 3, + "rejectedCases": 4, + "pass": true + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 180, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "QA-07", + "checks": 4, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-sketcher-bspline-verification.json b/config/chrome-sketcher-bspline-verification.json new file mode 100644 index 0000000..291edb7 --- /dev/null +++ b/config/chrome-sketcher-bspline-verification.json @@ -0,0 +1,65 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "edit": { + "stableId": true, + "degree": 1, + "poleCount": 3, + "middlePole": { + "x": 2, + "y": 3 + }, + "weights": [ + 1, + 0.5, + 1 + ], + "knots": [ + 0, + 0, + 0.5, + 1, + 1 + ], + "periodic": true, + "sourceUnchanged": true + }, + "validationErrors": { + "invalidWeight": "spline weights must be positive finite values matching control points.", + "invalidKnots": "spline knots must be non-decreasing and have controlPointCount + degree + 1 entries.", + "invalidDegree": "spline requires at least degree + 1 control points." + }, + "roundTrip": { + "archiveBytes": 1493, + "geometryEqual": true, + "constraintsEqual": true, + "constraintTypes": [ + "weight", + "internalAlignment", + "weight" + ], + "weights": [ + 1, + 1.5, + 1.25, + 1 + ], + "knots": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "opfs": { + "markerSuite": "SK-10", + "markerFields": 8, + "markerRemoved": true + } +} diff --git a/config/chrome-sketcher-diagnostics-verification.json b/config/chrome-sketcher-diagnostics-verification.json new file mode 100644 index 0000000..2a95e52 --- /dev/null +++ b/config/chrome-sketcher-diagnostics-verification.json @@ -0,0 +1,37 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "fixtures": { + "reference": { + "status": "under-constrained", + "degreesOfFreedom": 3, + "diagnostic": true, + "unchangedEnd": true + }, + "redundant": { + "status": "under-constrained", + "diagnostic": true + }, + "conflicting": { + "status": "conflicting", + "diagnostic": true, + "notConverged": true + }, + "coincident": { + "status": "under-constrained", + "residual": 0, + "sharedPoint": true + }, + "block": { + "status": "solved", + "degreesOfFreedom": 0, + "unchanged": true + } + }, + "opfs": { + "markerSuite": "SK-06/SK-07", + "markerRemoved": true + } +} diff --git a/config/chrome-sketcher-editor-verification.json b/config/chrome-sketcher-editor-verification.json new file mode 100644 index 0000000..2f2cb78 --- /dev/null +++ b/config/chrome-sketcher-editor-verification.json @@ -0,0 +1,115 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "operations": { + "drag": { + "start": { + "x": 0, + "y": 2 + }, + "end": { + "x": 8, + "y": 2 + }, + "sourceUnchanged": true + }, + "split": { + "ids": [ + "line", + "line-2" + ], + "endpoints": [ + [ + { + "x": 0, + "y": 0 + }, + { + "x": 4, + "y": 0 + } + ], + [ + { + "x": 4, + "y": 0 + }, + { + "x": 10, + "y": 0 + } + ] + ], + "constraintTypes": [ + "coincident" + ] + }, + "extend": { + "end": { + "x": 15, + "y": 0 + }, + "sourceUnchanged": true + }, + "trim": { + "end": { + "x": 7, + "y": 0 + }, + "constraintTypes": [ + "pointOnObject" + ], + "sourceUnchanged": true + }, + "construction": { + "enabled": true, + "sourceUnchanged": true + }, + "autoConstraint": { + "suggestionReasons": [ + "coincident", + "horizontal" + ], + "appliedIds": [ + "auto-coincident-line-a.end-line-b.start", + "auto-horizontal-line-a" + ], + "sourceUnchanged": true + }, + "replay": { + "applied": 2, + "undone": 1, + "redone": 1, + "finalEnd": { + "x": 6, + "y": 0 + } + } + }, + "interactions": { + "nativeEvents": { + "pointer": 3, + "keyboard": 3 + }, + "start": { + "x": 0, + "y": 2 + }, + "end": { + "x": 8, + "y": 2 + }, + "tool": "select", + "pointerActive": false, + "applied": 1, + "undone": 1, + "redone": 1 + }, + "opfs": { + "markerSuite": "SK-09", + "markerOperations": 9, + "markerRemoved": true + } +} diff --git a/config/chrome-sketcher-stress-verification.json b/config/chrome-sketcher-stress-verification.json new file mode 100644 index 0000000..d444cd8 --- /dev/null +++ b/config/chrome-sketcher-stress-verification.json @@ -0,0 +1,37 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "stress": { + "seed": 539363331, + "models": 500, + "solves": 1000, + "durationMs": 15.394999980926514, + "averageSolveMs": 0.015394999980926513, + "maxIterations": 64, + "maxResidual": 4.577566798522237e-16, + "deterministicMismatches": 0, + "unexpectedResults": 0, + "digest": "edac8aed", + "categories": { + "constraints": 100, + "conflict": 100, + "redundant": 100, + "reference": 100, + "drag": 100 + }, + "statuses": { + "solved": 0, + "under-constrained": 400, + "conflicting": 100, + "invalid": 0 + } + }, + "opfs": { + "markerSuite": "SK-12", + "markerModels": 500, + "markerSolves": 1000, + "markerRemoved": true + } +} diff --git a/config/chrome-spreadsheet-verification.json b/config/chrome-spreadsheet-verification.json new file mode 100644 index 0000000..6223125 --- /dev/null +++ b/config/chrome-spreadsheet-verification.json @@ -0,0 +1,87 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "cells": { + "width": 6, + "length": 12, + "updatedLength": 16, + "dimension": "length" + }, + "aliases": [ + "Length", + "Width" + ], + "dependencies": [ + "A2->A1:Width", + "B1->A1:A1" + ], + "cycle": { + "detected": true, + "cells": [ + "C1", + "D1" + ] + }, + "binding": { + "alias": "Length", + "objectId": "pad", + "propertyName": "Length", + "appliedValue": 16, + "undoValue": 12, + "redoValue": 16 + }, + "expression": { + "value": 13, + "dimension": "length", + "references": [ + "Spreadsheet.Length" + ] + }, + "layout": { + "styledCells": 4, + "namedRange": "A1:A3", + "mergedRange": "A1:C3", + "shiftedFormulaAddress": "A3" + }, + "csv": { + "rows": 2, + "columns": 4, + "bytes": 46 + }, + "largeSheet": { + "cells": 10000, + "rows": 100, + "columns": 100, + "evaluationErrors": 0, + "csvBytes": 175112, + "durationMs": 53.85000002384186, + "budgetMs": 5000 + }, + "persistence": { + "mode": "sqlite-opfs", + "savedVersion": 20, + "reopenedVersion": 20, + "reopenedValue": 16 + }, + "resource": { + "hash": "7bd33d02ab448a6cfe803608d27d4d394213ee4cc2998eeaaa31176e4216a161", + "byteLength": 939, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "SS-ALL", + "markerCells": 9, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-surface-verification.json b/config/chrome-surface-verification.json new file mode 100644 index 0000000..ba894c7 --- /dev/null +++ b/config/chrome-surface-verification.json @@ -0,0 +1,36 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "model": { + "patches": 5, + "poles": 20, + "trimmed": 1, + "sewn": 1, + "continuity": "C0", + "fillKind": "bezier", + "offsetDistance": 1.5, + "topoRefs": 4, + "objBytes": 641 + }, + "persistence": { + "mode": "sqlite-opfs", + "byteLength": 846, + "roundTrip": true, + "released": true + }, + "opfs": { + "markerSuite": "SURF-CORE", + "patches": 5, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-techdraw-verification.json b/config/chrome-techdraw-verification.json new file mode 100644 index 0000000..95527c1 --- /dev/null +++ b/config/chrome-techdraw-verification.json @@ -0,0 +1,70 @@ +{ + "schemaVersion": 1, + "status": "pass", + "browserId": "chrome", + "crossOriginIsolated": true, + "page": { + "views": 2, + "sections": 1, + "dimensions": 1, + "annotations": 1, + "tolerances": 1, + "updatedDimension": 6, + "unresolvedRefs": [ + "Vertex3" + ], + "unresolvedTolerances": [ + "flatness" + ] + }, + "svg": { + "bytes": 636, + "sha256": "0762dbd1f6d4587e6f59b3596f493aceaf8da5e7fb47b0f08e89e13ba27bcfc9", + "deterministic": true, + "lines": 2, + "accessible": true + }, + "pdf": { + "bytes": 872, + "sha256": "fb66bbb3b98ca60a1d75d396124cc1f27d1a89080a82eaf23ae0525fc9709059", + "deterministic": true, + "validHeader": true, + "validXref": true + }, + "resources": [ + { + "mediaType": "image/svg+xml", + "hash": "0762dbd1f6d4587e6f59b3596f493aceaf8da5e7fb47b0f08e89e13ba27bcfc9", + "byteLength": 636, + "roundTrip": true, + "released": true + }, + { + "mediaType": "application/pdf", + "hash": "fb66bbb3b98ca60a1d75d396124cc1f27d1a89080a82eaf23ae0525fc9709059", + "byteLength": 872, + "roundTrip": true, + "released": true + }, + { + "mediaType": "application/vnd.bitbybit.techdraw+json", + "hash": "2c0493a55f851c4db55af3d87c002e8584dbb65b038a0a56e8adcdf063d5f3da", + "byteLength": 1934, + "roundTrip": true, + "released": true + } + ], + "opfs": { + "markerSuite": "TD-ALL", + "markerViews": 2, + "markerRemoved": true + }, + "afterRelease": { + "shapeCount": 0, + "kernelReferenceCount": 0 + }, + "browser": { + "product": "Chrome/150.0.7871.128", + "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36" + } +} diff --git a/config/chrome-topology-verification.json b/config/chrome-topology-verification.json new file mode 100644 index 0000000..4f858d8 --- /dev/null +++ b/config/chrome-topology-verification.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "status": "pass", + "capabilities": { + "provider": "Bitbybit OCCT", + "version": "1.1.1", + "status": "ready", + "worker": true, + "wasm": true, + "shapeCount": 0, + "kernelReferenceCount": 0, + "releasedShapeCount": 0, + "peakShapeCount": 0, + "peakKernelReferenceCount": 0 + }, + "topology": { + "faces": 6, + "edges": 12, + "vertices": 8, + "analyticFaces": 6, + "analyticEdges": 12, + "adjacencyKeys": [ + 6, + 6, + 12, + 12, + 8 + ], + "transientIndexFree": true, + "opfsTopologyRoundTrip": true + } +} diff --git a/config/compatibility-matrix.json b/config/compatibility-matrix.json index 5cc18ce..fefa529 100644 --- a/config/compatibility-matrix.json +++ b/config/compatibility-matrix.json @@ -5,36 +5,36 @@ "Part Design": { "status": "facade-partial", "level": "experimental", "commands": ["create-body", "create-sketch", "pad", "pocket", "revolution", "fillet", "chamfer", "mirrored", "multi-transform", "linear-pattern", "polar-pattern"] }, "Part": { "status": "facade-partial", "level": "experimental", "commands": ["primitive", "union", "cut", "intersection", "check-shape"] }, "Sketcher": { "status": "facade-model", "level": "experimental", "commands": ["new-sketch", "line", "arc", "circle", "rectangle", "constrain-horizontal", "constrain-vertical", "solve-sketch"] }, - "Draft": { "status": "ui-prototype", "level": "read-only", "commands": ["working-plane", "snap-settings", "draft-line", "draft-wire", "move", "rotate"] }, - "TechDraw": { "status": "ui-prototype", "level": "read-only", "commands": ["new-page", "view-part", "section-view", "dimension", "annotation"] }, - "Spreadsheet": { "status": "ui-prototype", "level": "read-only", "commands": ["new-sheet", "set-alias", "expression", "bind-property"] }, - "Assembly": { "status": "ui-prototype", "level": "read-only", "commands": ["insert-component", "coincident", "concentric", "distance", "interference"] }, - "BIM": { "status": "ui-manifest", "level": "unsupported", "commands": ["wall", "structure", "window", "ifc-export"] }, - "CAM": { "status": "ui-manifest", "level": "unsupported", "commands": ["new-job", "stock", "profile-path", "simulate", "post-process"] }, - "FEM": { "status": "ui-manifest", "level": "unsupported", "commands": ["new-analysis", "material", "mesh", "solve", "results"] }, - "Mesh": { "status": "ui-prototype", "level": "read-only", "commands": ["mesh-import", "analyze-mesh", "repair-mesh", "fill-holes", "mesh-export"] }, - "Surface": { "status": "ui-manifest", "level": "unsupported", "commands": ["bspline", "bezier", "fill-surface", "loft-surface", "trim-surface"] }, - "Inspection": { "status": "ui-manifest", "level": "unsupported", "commands": ["measure-distance", "measure-angle", "measure-area", "section", "check-dependencies"] }, - "AddonManager": { "status": "scope-only", "level": "unsupported", "commands": ["addon-list", "addon-install", "addon-update", "addon-remove"] }, + "Draft": { "status": "domain-contract", "level": "experimental", "commands": ["working-plane", "snap-settings", "draft-line", "draft-wire", "draft-circle", "move", "rotate", "scale", "offset", "array", "clone", "layer"] }, + "TechDraw": { "status": "domain-contract", "level": "experimental", "commands": ["new-page", "view-part", "section-view", "dimension", "annotation", "svg-export"] }, + "Spreadsheet": { "status": "domain-contract", "level": "experimental", "commands": ["new-sheet", "set-alias", "expression", "bind-property", "csv-export"] }, + "Assembly": { "status": "domain-contract", "level": "experimental", "commands": ["insert-component", "ground-component", "connector", "coincident", "concentric", "distance", "angle", "solve-assembly", "bom", "collision-check", "explode-view", "variant"] }, + "BIM": { "status": "domain-contract", "level": "experimental", "commands": ["wall", "structure", "window", "level", "space", "material", "quantity-schedule", "ifc-export"] }, + "CAM": { "status": "domain-contract", "level": "experimental", "commands": ["new-job", "stock", "tool", "profile-path", "simulate", "gcode-export"] }, + "FEM": { "status": "domain-contract", "level": "experimental", "commands": ["new-analysis", "material", "mesh", "fix-node", "load", "solve-reference-bar", "results-csv"] }, + "Mesh": { "status": "domain-contract", "level": "experimental", "commands": ["mesh-import", "weld-vertices", "analyze-mesh", "remove-degenerate", "repair-triangle", "mesh-transform", "obj-export"] }, + "Surface": { "status": "domain-contract", "level": "experimental", "commands": ["bspline", "bezier", "fill-surface", "loft-surface", "trim-surface", "sew-surface", "surface-continuity"] }, + "Inspection": { "status": "domain-contract", "level": "experimental", "commands": ["measure-distance", "measure-angle", "measure-area", "measure-volume", "check-dependencies", "csv-report"] }, + "AddonManager": { "status": "domain-contract", "level": "experimental", "commands": ["addon-list", "addon-install", "addon-update", "addon-remove", "addon-rollback", "addon-permissions"] }, "Cloud": { "status": "scope-only", "level": "unsupported", "commands": ["cloud-login", "cloud-open", "cloud-save", "cloud-share"] }, "Fem": { "status": "scope-only", "level": "unsupported", "commands": ["new-analysis", "material", "mesh", "solve", "results"] }, "Help": { "status": "scope-only", "level": "unsupported", "commands": ["help-contents", "help-search", "help-about"] }, - "Idf": { "status": "scope-only", "level": "unsupported", "commands": ["idf-import", "idf-export"] }, - "Import": { "status": "scope-only", "level": "unsupported", "commands": ["import-model", "import-batch", "import-options"] }, - "JtReader": { "status": "scope-only", "level": "unsupported", "commands": ["jt-import", "jt-assembly", "jt-export"] }, - "Material": { "status": "scope-only", "level": "unsupported", "commands": ["material-card", "material-library", "material-assign"] }, + "Idf": { "status": "data-adapter-registry", "level": "read-only", "commands": ["idf-import", "idf-export"] }, + "Import": { "status": "domain-contract", "level": "experimental", "commands": ["import-model", "import-batch", "import-options"] }, + "JtReader": { "status": "data-adapter-registry", "level": "read-only", "commands": ["jt-import", "jt-assembly", "jt-export"] }, + "Material": { "status": "domain-contract", "level": "experimental", "commands": ["material-card", "material-library", "material-assign"] }, "Measure": { "status": "scope-only", "level": "unsupported", "commands": ["measure-distance", "measure-angle", "measure-area", "measure-volume"] }, "MeshPart": { "status": "scope-only", "level": "unsupported", "commands": ["mesh-to-shape", "shape-to-mesh", "mesh-section"] }, - "OpenSCAD": { "status": "scope-only", "level": "unsupported", "commands": ["openscad-import", "openscad-export", "openscad-preview"] }, - "Plot": { "status": "scope-only", "level": "unsupported", "commands": ["plot-create", "plot-style", "plot-export"] }, - "Points": { "status": "scope-only", "level": "unsupported", "commands": ["points-import", "points-filter", "points-export"] }, - "ReverseEngineering": { "status": "scope-only", "level": "unsupported", "commands": ["fit-curve", "fit-surface", "reverse-engineer"] }, - "Robot": { "status": "scope-only", "level": "unsupported", "commands": ["robot-model", "robot-trajectory", "robot-simulate", "robot-export"] }, + "OpenSCAD": { "status": "data-adapter-registry", "level": "read-only", "commands": ["openscad-import", "openscad-export", "openscad-preview"] }, + "Plot": { "status": "domain-contract", "level": "experimental", "commands": ["plot-create", "plot-style", "plot-bind", "plot-svg-export", "plot-csv-export"] }, + "Points": { "status": "data-adapter-registry", "level": "read-only", "commands": ["points-import", "points-filter", "points-export"] }, + "ReverseEngineering": { "status": "data-adapter-registry", "level": "read-only", "commands": ["fit-curve", "fit-surface", "reverse-engineer"] }, + "Robot": { "status": "domain-contract", "level": "experimental", "commands": ["robot-model", "joint-limits", "waypoint", "robot-trajectory", "robot-export"] }, "Show": { "status": "scope-only", "level": "unsupported", "commands": ["show-object", "show-share", "show-presentation"] }, "Start": { "status": "scope-only", "level": "unsupported", "commands": ["start-page", "recent-projects", "templates"] }, "Web": { "status": "scope-only", "level": "unsupported", "commands": ["web-export", "web-view", "web-share"] }, "Sandbox": { "status": "scope-only", "level": "unsupported", "commands": [] }, - "TemplatePyMod": { "status": "scope-only", "level": "unsupported", "commands": [] }, + "TemplatePyMod": { "status": "domain-contract", "level": "experimental", "commands": ["macro-record", "macro-replay", "facade-command"] }, "Test": { "status": "scope-only", "level": "unsupported", "commands": [] }, "Tux": { "status": "scope-only", "level": "unsupported", "commands": [] } }, @@ -65,23 +65,24 @@ "occtPackage": "packages/dev/occt", "workerPackage": "packages/dev/occt-worker", "sourceForm": "generated-wasm-and-typescript-only", + "wasmArtifact": { "path": "node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.a4a6ec2a.wasm", "sha256": "1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656", "status": "compiled-artifact-verified" }, "missingBuildInputs": ["OCCT C++ source checkout", "Embind generation rules", "Emscripten link/export manifest"], "evidence": "./npmw run check:bitbybit-history" }, "nativeOcctHistory": { - "status": "built-provider-not-default-runtime", + "status": "built-provider-browser-verified-default-worker", "sourceCheckout": "OCCT_SOURCE_DIR", "sourceCommit": "bb75017e915f6509a4bfa8b551f853352754c2da", "occtVersion": "8.0.0", "toolchain": "Emscripten 3.1.69 + CMake 3.31.6 + Ninja 1.12.1", - "library": ["TKBO", "TKDESTEP", "TKXSBase", "TKDE"], - "bindings": ["BRepAlgoAPI_Fuse", "BRepAlgoAPI_Cut", "BRepAlgoAPI_Common", "Generated", "Modified", "IsDeleted", "TopExp_Explorer", "STEPControl_Reader", "STEPControl_Writer", "shapeToStep", "booleanHistoryFromStep"], + "library": ["TKBO", "TKBool", "TKFillet", "TKOffset", "TKDESTEP", "TKXSBase", "TKDE"], + "bindings": ["BRepPrimAPI_MakeBox", "BRepPrimAPI_MakeCylinder", "BRepPrimAPI_MakeSphere", "BRepPrimAPI_MakeCone", "BRepPrimAPI_MakePrism", "BRepPrimAPI_MakeRevol", "BRepBuilderAPI_Transform", "BRepFilletAPI_MakeFillet", "BRepFilletAPI_MakeChamfer", "BRepOffsetAPI_DraftAngle", "BRepOffsetAPI_MakePipe", "BRepOffsetAPI_MakeThickSolid", "BRepAlgoAPI_Fuse", "BRepAlgoAPI_Cut", "BRepAlgoAPI_Common", "Generated", "Modified", "IsDeleted", "BRepCheck_Analyzer", "BRepGProp", "BRepBndLib", "TopExp_Explorer", "STEPControl_Reader", "STEPControl_Writer", "shapeToStep", "shapeSummary", "booleanProbe", "booleanResult", "booleanHistoryFromStep", "prismHistoryFromStep", "pocketHistoryFromStep", "loftHistoryFromStep", "pipeHistoryFromStep", "revolutionHistoryFromStep", "grooveHistoryFromStep", "filletHistoryFromStep", "chamferHistoryFromStep", "holeHistoryFromStep", "draftHistoryFromStep", "thicknessHistoryFromStep", "linearPatternHistoryFromStep", "polarPatternHistoryFromStep", "mirroredHistoryFromStep", "multiTransformHistoryFromStep", "makeRectangleFace", "makeRectangleFacePlaced", "makeLineWire"], "buildOptimization": "OCCT dependencies -O0 with Emscripten -fexceptions; Embind wrapper -O2 with -fexceptions", "artifact": { "javascript": "native/occt-history/dist/bitbybit-occt-history.js", "wasm": "native/occt-history/dist/bitbybit-occt-history.wasm", - "javascriptSha256": "e2feca5a8bab431e3351e6af3972beef4f9ce47fe02de2d0ac7ba9de91882311", - "wasmSha256": "6fac28102132ddeb8e7f1f254c76643d595cc60a26b2adf80fe3d6407b18b675" + "javascriptSha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557", + "wasmSha256": "b6cb6307399b188cdf1377e9294b4af8e36b21783693101db8f985e41cff5fbe" }, "protocol": "native result and history records stay inside the provider; cross-WASM handles are forbidden; STEP text is the explicit transport boundary", "historyProtocol": { @@ -91,26 +92,45 @@ "transport": "step-text", "cancellation": "AbortSignal", "timeout": "coordinator-configured", - "staleGuard": "documentId + documentVersion + operationId" + "staleGuard": "documentId + documentVersion + operationId", + "namingEvidence": { + "status": "explicit-runtime-contract", + "mappedNameRef": "optional provider evidence; final-shape-only stages are marked and cannot mint FreeCAD tokens", + "stringHasher": "optional opaque native table; validated and preserved losslessly", + "exactBlockers": ["private FreeCAD token algorithm", "missing native builder stage", "non-unique isomorphic source"] + } }, "browserWorker": { "entry": "src/facade/nativeHistoryWorkerEntry.ts", "client": "src/facade/nativeHistoryWorkerClient.ts", "moduleUrl": "/native/occt-history/bitbybit-occt-history.js", "runtimeConfiguration": "BitbybitGeometryRuntime.configureNativeHistory(provider, timeoutMs)", - "artifactPublishCommand": "./npmw run build:occt-history", - "status": "worker-provider-configurable-not-default-runtime" + "artifactPublishCommand": "./npmw run build:occt-history", + "status": "default-application-worker-with-fallback", + "browserVerification": "config/occt-browser-verification.json", + "threeWayVerification": "config/freecad-bitbybit-native-threeway.json", + "operations": ["worker-initialize", "worker-cancel", "worker-stale-isolation", "worker-crash-recovery-contract", "ownership-ledger-metrics", "browser-memory-budget-gate", "upstream-abi-golden-drift-gate", "artifact-dist-public-hash"] }, "buildCommand": "./npmw run build:occt-history", "testCommand": "./npmw run test:occt-history" }, "facadeCapabilities": { - "geometry": { "level": "experimental", "provider": "BitBybit OCCT 1.1.1", "operations": ["box", "cylinder", "sphere", "cone", "placement", "object-placement-recompute", "placement-validation", "mirror-plane", "mirrored-whole-shape", "multi-transform-whole-shape", "union", "cut", "intersection", "part-primitive-recompute", "part-boolean-recompute", "shape-check", "pad", "pocket", "pocket-through-all", "revolution", "fillet", "chamfer", "linear-pattern-whole-shape", "polar-pattern-whole-shape", "hole-basic-origin-normal", "feature-shape-cache", "face-edge-vertex-topology", "step-export", "stl-export"] }, - "document": { "level": "experimental", "operations": ["typed-properties", "property-vector", "property-placement", "property-multi-transform", "property-link-list", "property-string-list", "property-link-sub", "expressions", "units", "dependency-dag", "parallel-level-recompute", "sync-recompute", "async-generation-recompute", "root-cause-diagnostics", "repair-branch-recompute", "versioned-toporef", "toporef-migration", "generation-topology-snapshot", "linksub-external-geometry-migration", "ambiguous-deleted-topology-diagnostics", "toporef-candidate-replacement-transaction", "signature-topology-history-fallback", "native-topology-history-adapter", "undo-redo"] }, + "geometry": { "level": "experimental", "provider": "BitBybit OCCT 1.1.1", "operations": ["box", "cylinder", "sphere", "cone", "placement", "object-placement-recompute", "placement-validation", "mirror-plane", "mirrored-whole-shape", "multi-transform-whole-shape", "union", "cut", "intersection", "part-primitive-recompute", "part-boolean-recompute", "shape-check", "pad", "pocket", "pocket-through-all", "revolution", "loft", "pipe", "fillet", "chamfer", "linear-pattern-whole-shape", "polar-pattern-whole-shape", "hole-basic-origin-normal", "feature-shape-cache", "face-edge-vertex-topology", "native-cross-feature-history-routing", "step-export", "stl-export"], "featureLevels": { "pad": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "pocket": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "revolution": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it"] }, "groove": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it", "OCCT/FreeCAD private token generation"] }, "boolean": { "level": "compatible", "exactBlockedBy": ["native MappedNameRef/StringHasher evidence when provider omits it", "isomorphic source ambiguity"] }, "fillet": { "level": "experimental", "exactBlockedBy": ["complete cross-feature native stage history"] }, "chamfer": { "level": "experimental", "exactBlockedBy": ["complete cross-feature native stage history"] }, "multi-transform": { "level": "experimental", "exactBlockedBy": ["feature-list native history", "private naming tokens"] } } }, + "document": { "level": "experimental", "operations": ["typed-properties", "property-vector", "property-placement", "property-multi-transform", "property-link-list", "property-string-list", "property-link-sub", "expressions", "units", "dependency-dag", "parallel-level-recompute", "sync-recompute", "async-generation-recompute", "root-cause-diagnostics", "repair-branch-recompute", "versioned-toporef", "toporef-migration", "generation-topology-snapshot", "linksub-external-geometry-migration", "ambiguous-deleted-topology-diagnostics", "adjacency-fingerprint-disambiguation", "toporef-candidate-replacement-transaction", "signature-topology-history-fallback", "native-topology-history-adapter", "native-cross-feature-history-routing", "runtime-mapped-name-ref-evidence", "string-hasher-evidence-validation", "element-map2-multi-stage-name-mapping", "isomorphic-candidate-persistence", "element-map-name-contract", "undo-redo"] }, "persistence": { "level": "experimental", "provider": "SQLite WASM + OPFS with transient fallback", "operations": ["schema-v6", "object-topology-snapshots", "transactional-migrations", "migration-rollback", "serialized-write-queue", "five-version-checkpoints", "checkpoint-load", "recovery-report", "content-addressed-resources", "quota-preflight", "resource-sweep-plan", "opfs-orphan-sweep", "cross-tab-lock-notice"] }, - "sketcher": { "level": "experimental", "provider": "typescript-basic; planegcs-wasm unavailable", "operations": ["point-line-circle-arc-model", "ellipse-bspline-model-only", "construction-geometry", "stable-external-geometry-model", "basic-constraints", "diameter-symmetric-tangent", "basic-solver", "versioned-solver-protocol", "solver-capability-probe", "cancel-stale-isolation", "replay-contract", "persistence"] }, - "fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "document-property-projection", "proxy-report", "script-isolation"] }, - "verification": { "level": "experimental", "provider": "FreeCADCmd 1.1.1 native headless Part oracle", "operations": ["locked-source-commit", "reproducible-native-build", "declarative-golden-contract", "part-geometry-replay", "numeric-tolerance-comparison"] } + "sketcher": { "level": "experimental", "provider": "typescript-basic; FreeCAD 1.1.1 planegcs WASM core installed", "operations": ["point-line-circle-arc-model", "ellipse-bspline-periodic-model", "construction-geometry", "geometry-validation", "stable-geometry-signature", "stable-external-geometry-model", "basic-constraints", "advanced-constraint-proxy", "diameter-symmetric-tangent", "basic-solver", "versioned-solver-protocol", "solver-capability-probe", "cancel-stale-isolation", "replay-contract", "planegcs-native-system-solve", "planegcs-horizontal-distance", "planegcs-vertical-distance", "planegcs-distance-x", "planegcs-distance-y", "planegcs-angle", "planegcs-circle-radius", "planegcs-circle-diameter", "planegcs-equal-lines", "planegcs-equal-circles", "planegcs-tangent-circles", "planegcs-point-symmetry", "planegcs-point-on-object", "planegcs-point-on-arc", "planegcs-point-on-ellipse", "planegcs-point-on-cubic-bspline", "planegcs-block-freeze", "planegcs-parallel-lines", "planegcs-perpendicular-lines", "planegcs-coincident-lines", "planegcs-snells-law-lines", "planegcs-ellipse-internal-alignment", "planegcs-cubic-bspline-weight", "planegcs-dedicated-worker-smoke", "persistence"] }, + "fcstd": { "level": "read-only", "operations": ["zip-preflight", "document-xml-metadata", "document-property-projection", "live-topology-element-map", "proxy-report", "script-isolation"] }, + "viewport": { "level": "experimental", "provider": "Three.js WebGL2", "operations": ["mesh-rendering", "multi-object-mesh-registry", "view-orientation", "fit-and-zoom", "subshape-triangle-mapping", "subshape-click-selection", "subshape-hover-preselection", "subshape-hover-highlight", "occt-analytic-picking-topology", "brep-edge-polyline-picking", "edge-pixel-tolerance-picking", "vertex-pixel-tolerance-picking", "diagnostic-selection-flash", "multi-object-selection-set", "modifier-box-selection-gesture", "window-contained-box-selection", "crossing-intersection-box-selection", "multi-object-selection-highlight", "object-visibility-projection", "selection-resource-release"] }, + "verification": { "level": "experimental", "provider": "FreeCADCmd 1.1.1 native headless Part oracle", "operations": ["locked-source-commit", "reproducible-native-build", "declarative-golden-contract", "part-geometry-replay", "numeric-tolerance-comparison", "execution-plan-validation", "source-inventory-validation", "type-property-inventory-validation"] } + }, + "systemExactEvaluation": { + "evaluatedAt": "2026-08-09", + "exact": false, + "featureExactCount": 0, + "plan": "config/freecad-web-exact-parity-plan.json", + "promotionTask": "EX-REL-01", + "taskStatus": { "completed": 1, "inProgress": 37, "pending": 14, "blocked": 0 }, + "blockers": ["private FreeCAD token algorithm", "missing native builder stage", "non-unique isomorphic source"] }, "rules": [ "UI status does not imply geometry or file compatibility.", diff --git a/config/freecad-baseline.json b/config/freecad-baseline.json index d7e09f3..70cbedc 100644 --- a/config/freecad-baseline.json +++ b/config/freecad-baseline.json @@ -6,5 +6,5 @@ "uiContract": "FreeCAD official desktop UI and Developers Handbook", "compatibilityLevels": ["exact", "compatible", "read-only", "proxy", "unsupported"], "status": "native-headless-part-oracle-verified", - "notes": "The official 1.1.1 tag and commit are locked. A reproducible local headless Part oracle and five geometry replay fixtures are verified; the digest-locked container, full workbench build, 100 golden files, and 50 error files remain P0-01/P0-03 deliverables." + "notes": "The official 1.1.1 tag and commit are locked. The local headless oracle verifies 100 primary success, 51 primary failure, and 5/5 supplemental Part-family success/failure fixtures. This baseline evidence does not promote the system exact claim." } diff --git a/config/freecad-bitbybit-native-threeway.json b/config/freecad-bitbybit-native-threeway.json new file mode 100644 index 0000000..c31c2fd --- /dev/null +++ b/config/freecad-bitbybit-native-threeway.json @@ -0,0 +1,2320 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "nativeOcctVersion": "8.0.0", + "scenarioCount": 26, + "unknownDifferencesFail": true, + "reports": [ + { + "id": "part-cut-through-hole", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "volume": 6429.203673205104, + "boundingBox": { + "min": [ + 0, + 0, + 0 + ], + "max": [ + 20, + 20, + 20 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 6429.203673205102, + "area": 2871.238898038469, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 20.0000001, + 20.0000001, + 20.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 6429.203673205102, + "area": 2871.238898038469, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 20.0000001, + 20.0000001, + 20.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-001", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "max": [ + 9, + 8, + 11 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-002", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 990, + "area": 598, + "boundingBox": { + "max": [ + 10, + 9, + 11 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 990, + "area": 598, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 990, + "area": 598, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "historyRecordCount": 52, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-003", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 140, + "area": 165.99999999999997, + "boundingBox": { + "max": [ + 9, + 6, + 6 + ], + "min": [ + 2, + 2, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 140, + "area": 165.99999999999997, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 9.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 140, + "area": 165.99999999999997, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 9.0000001, + 6.0000001, + 6.0000001 + ] + } + }, + "historyRecordCount": 87, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-004", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "max": [ + 12, + 11, + 13 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-005", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 28, + "vertices": 18, + "volume": 538.9999999999999, + "area": 406, + "boundingBox": { + "max": [ + 8, + 8, + 10 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 28, + "vertices": 18, + "volume": 538.9999999999999, + "area": 406, + "boundingBox": { + "min": [ + -1.5e-7, + -1.5e-7, + 0.99999985 + ], + "max": [ + 8.00000015, + 8.00000015, + 10.00000015 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 28, + "vertices": 18, + "volume": 538.9999999999999, + "area": 406, + "boundingBox": { + "min": [ + -1.5e-7, + -1.5e-7, + 0.99999985 + ], + "max": [ + 8.00000015, + 8.00000015, + 10.00000015 + ] + } + }, + "historyRecordCount": 47, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-006", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 144, + "area": 168, + "boundingBox": { + "max": [ + 8, + 8, + 4 + ], + "min": [ + 2, + 2, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 144, + "area": 168, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + -1.5e-7 + ], + "max": [ + 8.00000015, + 8.00000015, + 4.00000015 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 144, + "area": 168, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + -1.5e-7 + ], + "max": [ + 8.00000015, + 8.00000015, + 4.00000015 + ] + } + }, + "historyRecordCount": 125, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-007", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "max": [ + 10, + 9, + 12 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-008", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "max": [ + 11, + 10, + 12 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 11.0000001, + 10.0000001, + 12.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 11.0000001, + 10.0000001, + 12.0000001 + ] + } + }, + "historyRecordCount": 56, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-009", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "max": [ + 7, + 8, + 8 + ], + "min": [ + 2, + 2, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "historyRecordCount": 87, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-010", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "max": [ + 8, + 7, + 9 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-011", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 719.9999999999999, + "area": 483.99999999999994, + "boundingBox": { + "max": [ + 9, + 8, + 11 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 719.9999999999999, + "area": 483.99999999999994, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 719.9999999999999, + "area": 483.99999999999994, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 9.0000001, + 8.0000001, + 11.0000001 + ] + } + }, + "historyRecordCount": 52, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-012", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "max": [ + 6, + 7, + 6 + ], + "min": [ + 2, + 2, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "historyRecordCount": 87, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-013", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1084.3805509807653, + "area": 873.2256510455152, + "boundingBox": { + "max": [ + 11, + 10, + 13 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1084.3805509807653, + "area": 873.2256510455152, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1084.3805509807653, + "area": 873.2256510455152, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-014", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1716, + "area": 862, + "boundingBox": { + "max": [ + 12, + 11, + 13 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1716, + "area": 862, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1716, + "area": 862, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 12.0000001, + 11.0000001, + 13.0000001 + ] + } + }, + "historyRecordCount": 56, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-015", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 119.99999999999999, + "area": 148, + "boundingBox": { + "max": [ + 8, + 6, + 6 + ], + "min": [ + 2, + 2, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 119.99999999999999, + "area": 148, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + 0.99999985 + ], + "max": [ + 8.00000015, + 6.00000015, + 6.00000015 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 119.99999999999999, + "area": 148, + "boundingBox": { + "min": [ + 1.99999985, + 1.99999985, + 0.99999985 + ], + "max": [ + 8.00000015, + 6.00000015, + 6.00000015 + ] + } + }, + "historyRecordCount": 125, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-016", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "max": [ + 9, + 8, + 10 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 9.0000001, + 8.0000001, + 10.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 9.0000001, + 8.0000001, + 10.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-017", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 990, + "area": 598, + "boundingBox": { + "max": [ + 10, + 9, + 12 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 990, + "area": 598, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 990, + "area": 598, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 10.0000001, + 9.0000001, + 12.0000001 + ] + } + }, + "historyRecordCount": 56, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-018", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 168, + "area": 188, + "boundingBox": { + "max": [ + 8, + 9, + 4 + ], + "min": [ + 2, + 2, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 168, + "area": 188, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 9.0000001, + 4.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 168, + "area": 188, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 8.0000001, + 9.0000001, + 4.0000001 + ] + } + }, + "historyRecordCount": 87, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-019", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "max": [ + 12, + 11, + 14 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 12.0000001, + 11.0000001, + 14.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 12.0000001, + 11.0000001, + 14.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-020", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 504.00000000000006, + "area": 382, + "boundingBox": { + "max": [ + 8, + 7, + 9 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 504.00000000000006, + "area": 382, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 504.00000000000006, + "area": 382, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 8.0000001, + 7.0000001, + 9.0000001 + ] + } + }, + "historyRecordCount": 52, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-021", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "max": [ + 7, + 8, + 8 + ], + "min": [ + 2, + 2, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + 0.9999999 + ], + "max": [ + 7.0000001, + 8.0000001, + 8.0000001 + ] + } + }, + "historyRecordCount": 94, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-022", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "max": [ + 10, + 9, + 11 + ], + "min": [ + 0, + 0, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + -1e-7 + ], + "max": [ + 10.0000001, + 9.0000001, + 11.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-fuse-023", + "operation": "fuse", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "max": [ + 11, + 10, + 13 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 11.0000001, + 10.0000001, + 13.0000001 + ] + } + }, + "historyRecordCount": 56, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-common-024", + "operation": "common", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "max": [ + 6, + 7, + 6 + ], + "min": [ + 2, + 2, + 0 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "min": [ + 1.9999999, + 1.9999999, + -1e-7 + ], + "max": [ + 6.0000001, + 7.0000001, + 6.0000001 + ] + } + }, + "historyRecordCount": 87, + "differences": { + "differences": [], + "known": [] + } + } + }, + { + "id": "part-cut-025", + "operation": "cut", + "oracle": { + "freecadVersion": "1.1.1", + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "max": [ + 8, + 7, + 10 + ], + "min": [ + 0, + 0, + 1 + ] + } + } + }, + "bitbybit": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 8.0000001, + 7.0000001, + 10.0000001 + ] + } + }, + "differences": { + "differences": [], + "known": [] + } + }, + "native": { + "summary": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "min": [ + -1e-7, + -1e-7, + 0.9999999 + ], + "max": [ + 8.0000001, + 7.0000001, + 10.0000001 + ] + } + }, + "historyRecordCount": 8, + "differences": { + "differences": [], + "known": [] + } + } + } + ] +} diff --git a/config/freecad-cam-parity.json b/config/freecad-cam-parity.json new file mode 100644 index 0000000..55d6803 --- /dev/null +++ b/config/freecad-cam-parity.json @@ -0,0 +1,123 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + }, + "source": { + "workbench": "src/Mod/CAM/InitGui.py", + "commandInventory": "config/freecad-gui-command-inventory.json", + "desktopOracle": "config/freecad-desktop-oracle.json", + "dynamicOracleStatus": "partial-command-state-only" + }, + "status": "in_progress", + "claim": "compatible-browser-subset-not-exact-freecad-cam-parity", + "commandSurface": { + "toolbarGroups": 4, + "menuGroups": 5, + "webCommands": 60, + "freecadCamRuntimeCommands": 56, + "freecadCamSourceOnlyCommands": 5, + "notYetSurfacedCommands": [], + "nonActionableSourceTemplates": ["CAM_%s"], + "freecadCommandIds": [ + "CAM_Adaptive", "CAM_Area", "CAM_Area_Workplane", "CAM_Array", "CAM_Comment", "CAM_Compound", "CAM_Custom", "CAM_Deburr", "CAM_DressupArray", "CAM_DressupAxisMap", "CAM_DressupDogbone", "CAM_DressupDragKnife", "CAM_DressupLeadInOut", "CAM_DressupPathBoundary", "CAM_DressupRampEntry", "CAM_DressupTag", "CAM_DressupTools", "CAM_DressupZCorrect", "CAM_Drilling", "CAM_DrillingTools", "CAM_Engrave", "CAM_EngraveTools", "CAM_ExportTemplate", "CAM_Fixture", "CAM_Helix", "CAM_Inspect", "CAM_Job", "CAM_MillFace", "CAM_OpActiveToggle", "CAM_OperationCopy", "CAM_PathShapeTC", "CAM_Pocket3D", "CAM_Pocket_Shape", "CAM_Post", "CAM_Probe", "CAM_Profile", "CAM_PropertyBag", "CAM_Sanity", "CAM_SelectLoop", "CAM_SetStartPoint", "CAM_Shape", "CAM_SimpleCopy", "CAM_SimTools", "CAM_Simulator", "CAM_SimulatorGL", "CAM_Slot", "CAM_Stop", "CAM_Tapping", "CAM_ThreadMilling", "CAM_ToolBitCreate", "CAM_ToolBitDock", "CAM_ToolBitLibraryOpen", "CAM_ToolBitLoad", "CAM_ToolBitSave", "CAM_ToolBitSaveAs", "CAM_ToolController", "CAM_Vcarve", "CAM_Camotics", "CAM_Copy", "CAM_3dTools" + ] + }, + "browserDomain": { + "stockModes": 4, + "toolShapes": 7, + "operationKinds": 22, + "dressupKinds": 9, + "postprocessors": 7 + }, + "coverage": [ + { + "id": "CAM-21", + "level": "exact", + "scope": "Locked FreeCAD source command identifiers and CAM command grouping manifest", + "evidence": "check:cam-parity" + }, + { + "id": "CAM-22", + "level": "compatible", + "scope": "Sixty actionable CAM commands, four toolbars, five menu groups, Job tree, task panels and viewport toolpath presentation", + "evidence": "check:chrome-app-e2e" + }, + { + "id": "CAM-23", + "level": "compatible", + "scope": "Job, four stock modes and SetupSheet browser contract", + "evidence": "check:chrome-cam" + }, + { + "id": "CAM-24", + "level": "compatible", + "scope": "Seven ToolBit shapes, versioned JSON assets, tool controllers, feeds, rapids, spindle and coolant", + "evidence": "check:chrome-cam" + }, + { + "id": "CAM-25", + "level": "compatible", + "scope": "Twenty-two deterministic browser operation kinds; not native Path algorithms", + "evidence": "test:cam" + }, + { + "id": "CAM-26", + "level": "compatible", + "scope": "Nine deterministic path dress-up kinds", + "evidence": "test:cam" + }, + { + "id": "CAM-27", + "level": "compatible", + "scope": "Sanity check, deterministic swept-volume material-removal timeline, and path/stock/tool-holder/fixture collision diagnostics", + "evidence": "check:chrome-cam" + }, + { + "id": "CAM-28", + "level": "compatible", + "scope": "Seven allowlisted deterministic postprocessors with unsafe post rejection", + "evidence": "check:chrome-cam" + }, + { + "id": "CAM-29", + "level": "development", + "scope": "Versioned CAM Job assets, validated import, OPFS snapshot, Undo/Redo, and persistent Comment/PropertyBag/Compound metadata are implemented; FreeCAD native Path::Feature/FeaturePython round-trip and Web Path::PropertyPath resource editing for native Path::Feature plus explicit non-executing FeaturePython opt-in are oracle-verified; FeaturePython operation metadata/recompute and full operation-object semantics remain bounded", + "evidence": "check:chrome-cam" + }, + { + "id": "CAM-30", + "level": "compatible", + "scope": "FreeCAD-style task flow and command lifecycle; native Qt Job/Profile Task open/accept/cancel lifecycle is oracle-verified, while full focus, keyboard, validation and all operation panels remain pending", + "evidence": "check:chrome-app-e2e" + }, + { + "id": "CAM-31", + "level": "development", + "scope": "OpenCAMLib WASM PathDropCutter, CAMotics source-stage G-code generation, CAMotics 1.3 native Qt/TPL plus CLI sidecars, standalone browser CAMotics sweep WASM, OCCT native BRep removal including continuous-segment sweep, and LinuxCNC XYZBC RTCP post/bridge are verified; full browser CAMotics program/same-input differential, full FreeCAD Path algorithms and complete continuous tool-axis oracle remain open", + "evidence": "check:chrome-camotics-wasm" + }, + { + "id": "CAM-32", + "level": "development", + "scope": "LinuxCNC WASM XYZBC machine acceptance is closed for the certified table-rotary-tilting digital case; Qt Task lifecycle, native Path::Feature Web codec, CAMotics native Qt/TPL and CLI sidecars, curved-segment BRep sweep and fail-closed safety matrix are evidenced, while exact dynamic FreeCAD comparison, FeaturePython/full Path semantics, full browser CAMotics differential and production authorization remain closed", + "evidence": "check:chrome-cam-linuxcnc-machine" + } + ], + "tasks": { + "completed": 8, + "inProgress": 4, + "pending": 0, + "blocked": 0 + }, + "unclosedDifferences": [ + "Native FreeCAD Path operation algorithms and geometry semantics", + "Complete CAM Qt task-panel validation, focus, keyboard and all operation-dialog state oracle", + "CAMotics full browser program runtime and same-input simulator differential", + "Analytic arbitrary-curved-path native swept-volume material removal and holder/fixture oracle", + "Complete continuous tool-axis/singularity oracle beyond certified XYZBC case", + "FeaturePython operation metadata/recompute and full-operation semantic Path::PropertyPath codec/editable FCStd round-trip", + "Machine-specific production safety authorization and physical actuator/metrology validation" + ] +} diff --git a/config/freecad-cam-path-oracle.json b/config/freecad-cam-path-oracle.json new file mode 100644 index 0000000..b17528c --- /dev/null +++ b/config/freecad-cam-path-oracle.json @@ -0,0 +1,2849 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "generatedBy": "./npmw run probe:freecad-cam-path", + "checkedBy": "./npmw run check:freecad-cam-path", + "runtime": { + "guiUp": true, + "pathModule": ".cache/freecad/install-desktop/Mod/CAM/Path/__init__.py" + }, + "profileAlgorithm": { + "commandCount": 32, + "commandSha256": "5fcc36e3fc3c022599096f4110c890401f285b5878030de7c481786470a7a455", + "commands": [ + { + "gcode": "(OracleProfile)", + "name": "(OracleProfile)", + "parameters": {} + }, + { + "gcode": "(Compensated Tool Path. Diameter: 5.0)", + "name": "(Compensated Tool Path. Diameter: 5.0)", + "parameters": {} + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + }, + { + "gcode": "G0 X16.47 Y16.47", + "name": "G0", + "parameters": { + "X": 16.47, + "Y": 16.47 + } + }, + { + "gcode": "G0 Z14.00", + "name": "G0", + "parameters": { + "Z": 14 + } + }, + { + "gcode": "G1 X16.47 Y16.47 Z10.00", + "name": "G1", + "parameters": { + "X": 16.47, + "Y": 16.47, + "Z": 10 + } + }, + { + "gcode": "G3 I-2.48 J-2.48 K0.00 X13.93 Y17.50 Z10.00", + "name": "G3", + "parameters": { + "I": -2.48, + "J": -2.48, + "K": 0, + "X": 13.93, + "Y": 17.5, + "Z": 10 + } + }, + { + "gcode": "G1 X-13.93 Y17.50 Z10.00", + "name": "G1", + "parameters": { + "X": -13.93, + "Y": 17.5, + "Z": 10 + } + }, + { + "gcode": "G3 I-0.06 J-3.51 K0.00 X-17.50 Y13.93 Z10.00", + "name": "G3", + "parameters": { + "I": -0.06, + "J": -3.51, + "K": 0, + "X": -17.5, + "Y": 13.93, + "Z": 10 + } + }, + { + "gcode": "G1 X-17.50 Y-13.93 Z10.00", + "name": "G1", + "parameters": { + "X": -17.5, + "Y": -13.93, + "Z": 10 + } + }, + { + "gcode": "G3 I3.51 J-0.06 K0.00 X-13.93 Y-17.50 Z10.00", + "name": "G3", + "parameters": { + "I": 3.51, + "J": -0.06, + "K": 0, + "X": -13.93, + "Y": -17.5, + "Z": 10 + } + }, + { + "gcode": "G1 X13.93 Y-17.50 Z10.00", + "name": "G1", + "parameters": { + "X": 13.93, + "Y": -17.5, + "Z": 10 + } + }, + { + "gcode": "G3 I0.06 J3.51 K0.00 X17.50 Y-13.93 Z10.00", + "name": "G3", + "parameters": { + "I": 0.06, + "J": 3.51, + "K": 0, + "X": 17.5, + "Y": -13.93, + "Z": 10 + } + }, + { + "gcode": "G1 X17.50 Y13.93 Z10.00", + "name": "G1", + "parameters": { + "X": 17.5, + "Y": 13.93, + "Z": 10 + } + }, + { + "gcode": "G3 I-3.51 J0.06 K0.00 X16.47 Y16.47 Z10.00", + "name": "G3", + "parameters": { + "I": -3.51, + "J": 0.06, + "K": 0, + "X": 16.47, + "Y": 16.47, + "Z": 10 + } + }, + { + "gcode": "G0 F0.00 Z16.00", + "name": "G0", + "parameters": { + "F": 0, + "Z": 16 + } + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + }, + { + "gcode": "G0 X16.47 Y16.47", + "name": "G0", + "parameters": { + "X": 16.47, + "Y": 16.47 + } + }, + { + "gcode": "G0 X23.54 Y23.54", + "name": "G0", + "parameters": { + "X": 23.54, + "Y": 23.54 + } + }, + { + "gcode": "G0 X23.54 Y23.54 Z14.00", + "name": "G0", + "parameters": { + "X": 23.54, + "Y": 23.54, + "Z": 14 + } + }, + { + "gcode": "G1 X23.54 Y23.54 Z10.00", + "name": "G1", + "parameters": { + "X": 23.54, + "Y": 23.54, + "Z": 10 + } + }, + { + "gcode": "G2 I-9.55 J-9.55 K0.00 X27.50 Y14.00 Z10.00", + "name": "G2", + "parameters": { + "I": -9.55, + "J": -9.55, + "K": 0, + "X": 27.5, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G1 X27.50 Y-14.00 Z10.00", + "name": "G1", + "parameters": { + "X": 27.5, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G2 I-13.50 J0.00 K0.00 X14.00 Y-27.50 Z10.00", + "name": "G2", + "parameters": { + "I": -13.5, + "J": 0, + "K": 0, + "X": 14, + "Y": -27.5, + "Z": 10 + } + }, + { + "gcode": "G1 X-14.00 Y-27.50 Z10.00", + "name": "G1", + "parameters": { + "X": -14, + "Y": -27.5, + "Z": 10 + } + }, + { + "gcode": "G2 I0.00 J13.50 K0.00 X-27.50 Y-14.00 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": 13.5, + "K": 0, + "X": -27.5, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G1 X-27.50 Y14.00 Z10.00", + "name": "G1", + "parameters": { + "X": -27.5, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G2 I13.50 J0.00 K0.00 X-14.00 Y27.50 Z10.00", + "name": "G2", + "parameters": { + "I": 13.5, + "J": 0, + "K": 0, + "X": -14, + "Y": 27.5, + "Z": 10 + } + }, + { + "gcode": "G1 X14.00 Y27.50 Z10.00", + "name": "G1", + "parameters": { + "X": 14, + "Y": 27.5, + "Z": 10 + } + }, + { + "gcode": "G2 I0.00 J-13.50 K0.00 X23.54 Y23.54 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": -13.5, + "K": 0, + "X": 23.54, + "Y": 23.54, + "Z": 10 + } + }, + { + "gcode": "G0 F0.00 Z16.00", + "name": "G0", + "parameters": { + "F": 0, + "Z": 16 + } + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + } + ], + "cuttingCommandCount": 20, + "firstCuttingCommand": { + "gcode": "G1 X16.47 Y16.47 Z10.00", + "name": "G1", + "parameters": { + "X": 16.47, + "Y": 16.47, + "Z": 10 + } + }, + "fixture": "Mod/CAM/CAMTests/test_profile.fcstd", + "fixtureSha256": "8691fdf4dd355ec117b415f06e7151ee6e55800ef92e6c08fb6d7e73d3331d1a", + "jobTypeId": "Path::FeaturePython", + "lastCuttingCommand": { + "gcode": "G2 I0.00 J-13.50 K0.00 X23.54 Y23.54 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": -13.5, + "K": 0, + "X": 23.54, + "Y": 23.54, + "Z": 10 + } + }, + "modelTypeId": "PartDesign::Body", + "normalizationToleranceMm": 0.01, + "operationTypeId": "Path::FeaturePython", + "pathLength": 396.99, + "pathPropertyType": "Path::PropertyPath", + "variants": [ + { + "commandCount": 32, + "commandSha256": "5fcc36e3fc3c022599096f4110c890401f285b5878030de7c481786470a7a455", + "commands": [ + { + "gcode": "(OracleProfile)", + "name": "(OracleProfile)", + "parameters": {} + }, + { + "gcode": "(Compensated Tool Path. Diameter: 5.0)", + "name": "(Compensated Tool Path. Diameter: 5.0)", + "parameters": {} + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + }, + { + "gcode": "G0 X16.47 Y16.47", + "name": "G0", + "parameters": { + "X": 16.47, + "Y": 16.47 + } + }, + { + "gcode": "G0 Z14.00", + "name": "G0", + "parameters": { + "Z": 14 + } + }, + { + "gcode": "G1 X16.47 Y16.47 Z10.00", + "name": "G1", + "parameters": { + "X": 16.47, + "Y": 16.47, + "Z": 10 + } + }, + { + "gcode": "G3 I-2.48 J-2.48 K0.00 X13.93 Y17.50 Z10.00", + "name": "G3", + "parameters": { + "I": -2.48, + "J": -2.48, + "K": 0, + "X": 13.93, + "Y": 17.5, + "Z": 10 + } + }, + { + "gcode": "G1 X-13.93 Y17.50 Z10.00", + "name": "G1", + "parameters": { + "X": -13.93, + "Y": 17.5, + "Z": 10 + } + }, + { + "gcode": "G3 I-0.06 J-3.51 K0.00 X-17.50 Y13.93 Z10.00", + "name": "G3", + "parameters": { + "I": -0.06, + "J": -3.51, + "K": 0, + "X": -17.5, + "Y": 13.93, + "Z": 10 + } + }, + { + "gcode": "G1 X-17.50 Y-13.93 Z10.00", + "name": "G1", + "parameters": { + "X": -17.5, + "Y": -13.93, + "Z": 10 + } + }, + { + "gcode": "G3 I3.51 J-0.06 K0.00 X-13.93 Y-17.50 Z10.00", + "name": "G3", + "parameters": { + "I": 3.51, + "J": -0.06, + "K": 0, + "X": -13.93, + "Y": -17.5, + "Z": 10 + } + }, + { + "gcode": "G1 X13.93 Y-17.50 Z10.00", + "name": "G1", + "parameters": { + "X": 13.93, + "Y": -17.5, + "Z": 10 + } + }, + { + "gcode": "G3 I0.06 J3.51 K0.00 X17.50 Y-13.93 Z10.00", + "name": "G3", + "parameters": { + "I": 0.06, + "J": 3.51, + "K": 0, + "X": 17.5, + "Y": -13.93, + "Z": 10 + } + }, + { + "gcode": "G1 X17.50 Y13.93 Z10.00", + "name": "G1", + "parameters": { + "X": 17.5, + "Y": 13.93, + "Z": 10 + } + }, + { + "gcode": "G3 I-3.51 J0.06 K0.00 X16.47 Y16.47 Z10.00", + "name": "G3", + "parameters": { + "I": -3.51, + "J": 0.06, + "K": 0, + "X": 16.47, + "Y": 16.47, + "Z": 10 + } + }, + { + "gcode": "G0 F0.00 Z16.00", + "name": "G0", + "parameters": { + "F": 0, + "Z": 16 + } + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + }, + { + "gcode": "G0 X16.47 Y16.47", + "name": "G0", + "parameters": { + "X": 16.47, + "Y": 16.47 + } + }, + { + "gcode": "G0 X23.54 Y23.54", + "name": "G0", + "parameters": { + "X": 23.54, + "Y": 23.54 + } + }, + { + "gcode": "G0 X23.54 Y23.54 Z14.00", + "name": "G0", + "parameters": { + "X": 23.54, + "Y": 23.54, + "Z": 14 + } + }, + { + "gcode": "G1 X23.54 Y23.54 Z10.00", + "name": "G1", + "parameters": { + "X": 23.54, + "Y": 23.54, + "Z": 10 + } + }, + { + "gcode": "G2 I-9.55 J-9.55 K0.00 X27.50 Y14.00 Z10.00", + "name": "G2", + "parameters": { + "I": -9.55, + "J": -9.55, + "K": 0, + "X": 27.5, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G1 X27.50 Y-14.00 Z10.00", + "name": "G1", + "parameters": { + "X": 27.5, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G2 I-13.50 J0.00 K0.00 X14.00 Y-27.50 Z10.00", + "name": "G2", + "parameters": { + "I": -13.5, + "J": 0, + "K": 0, + "X": 14, + "Y": -27.5, + "Z": 10 + } + }, + { + "gcode": "G1 X-14.00 Y-27.50 Z10.00", + "name": "G1", + "parameters": { + "X": -14, + "Y": -27.5, + "Z": 10 + } + }, + { + "gcode": "G2 I0.00 J13.50 K0.00 X-27.50 Y-14.00 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": 13.5, + "K": 0, + "X": -27.5, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G1 X-27.50 Y14.00 Z10.00", + "name": "G1", + "parameters": { + "X": -27.5, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G2 I13.50 J0.00 K0.00 X-14.00 Y27.50 Z10.00", + "name": "G2", + "parameters": { + "I": 13.5, + "J": 0, + "K": 0, + "X": -14, + "Y": 27.5, + "Z": 10 + } + }, + { + "gcode": "G1 X14.00 Y27.50 Z10.00", + "name": "G1", + "parameters": { + "X": 14, + "Y": 27.5, + "Z": 10 + } + }, + { + "gcode": "G2 I0.00 J-13.50 K0.00 X23.54 Y23.54 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": -13.5, + "K": 0, + "X": 23.54, + "Y": 23.54, + "Z": 10 + } + }, + { + "gcode": "G0 F0.00 Z16.00", + "name": "G0", + "parameters": { + "F": 0, + "Z": 16 + } + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + } + ], + "cuttingCommandCount": 20, + "direction": "CW", + "firstCuttingCommand": { + "gcode": "G1 X16.47 Y16.47 Z10.00", + "name": "G1", + "parameters": { + "X": 16.47, + "Y": 16.47, + "Z": 10 + } + }, + "id": "outside-cw-tool-comp", + "lastCuttingCommand": { + "gcode": "G2 I0.00 J-13.50 K0.00 X23.54 Y23.54 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": -13.5, + "K": 0, + "X": 23.54, + "Y": 23.54, + "Z": 10 + } + }, + "pathLength": 396.99, + "useComp": true + }, + { + "commandCount": 32, + "commandSha256": "c4c8bc58c4b21bc7be8796ff5d074fbe02656e31a26cc91ee65a67537a7d240a", + "commands": [ + { + "gcode": "(OracleProfileNoComp)", + "name": "(OracleProfileNoComp)", + "parameters": {} + }, + { + "gcode": "(Uncompensated Tool Path)", + "name": "(Uncompensated Tool Path)", + "parameters": {} + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + }, + { + "gcode": "G0 X18.24 Y18.24", + "name": "G0", + "parameters": { + "X": 18.24, + "Y": 18.24 + } + }, + { + "gcode": "G0 Z14.00", + "name": "G0", + "parameters": { + "Z": 14 + } + }, + { + "gcode": "G1 X18.24 Y18.24 Z10.00", + "name": "G1", + "parameters": { + "X": 18.24, + "Y": 18.24, + "Z": 10 + } + }, + { + "gcode": "G3 I-4.24 J-4.24 K0.00 X14.00 Y20.00 Z10.00", + "name": "G3", + "parameters": { + "I": -4.24, + "J": -4.24, + "K": 0, + "X": 14, + "Y": 20, + "Z": 10 + } + }, + { + "gcode": "G1 X-14.00 Y20.00 Z10.00", + "name": "G1", + "parameters": { + "X": -14, + "Y": 20, + "Z": 10 + } + }, + { + "gcode": "G3 I0.00 J-6.00 K0.00 X-20.00 Y14.00 Z10.00", + "name": "G3", + "parameters": { + "I": 0, + "J": -6, + "K": 0, + "X": -20, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G1 X-20.00 Y-14.00 Z10.00", + "name": "G1", + "parameters": { + "X": -20, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G3 I6.00 J0.00 K0.00 X-14.00 Y-20.00 Z10.00", + "name": "G3", + "parameters": { + "I": 6, + "J": 0, + "K": 0, + "X": -14, + "Y": -20, + "Z": 10 + } + }, + { + "gcode": "G1 X14.00 Y-20.00 Z10.00", + "name": "G1", + "parameters": { + "X": 14, + "Y": -20, + "Z": 10 + } + }, + { + "gcode": "G3 I0.00 J6.00 K0.00 X20.00 Y-14.00 Z10.00", + "name": "G3", + "parameters": { + "I": 0, + "J": 6, + "K": 0, + "X": 20, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G1 X20.00 Y14.00 Z10.00", + "name": "G1", + "parameters": { + "X": 20, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G3 I-6.00 J0.00 K0.00 X18.24 Y18.24 Z10.00", + "name": "G3", + "parameters": { + "I": -6, + "J": 0, + "K": 0, + "X": 18.24, + "Y": 18.24, + "Z": 10 + } + }, + { + "gcode": "G0 F0.00 Z16.00", + "name": "G0", + "parameters": { + "F": 0, + "Z": 16 + } + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + }, + { + "gcode": "G0 X18.24 Y18.24", + "name": "G0", + "parameters": { + "X": 18.24, + "Y": 18.24 + } + }, + { + "gcode": "G0 X21.78 Y21.78", + "name": "G0", + "parameters": { + "X": 21.78, + "Y": 21.78 + } + }, + { + "gcode": "G0 X21.78 Y21.78 Z14.00", + "name": "G0", + "parameters": { + "X": 21.78, + "Y": 21.78, + "Z": 14 + } + }, + { + "gcode": "G1 X21.78 Y21.78 Z10.00", + "name": "G1", + "parameters": { + "X": 21.78, + "Y": 21.78, + "Z": 10 + } + }, + { + "gcode": "G2 I-7.78 J-7.78 K0.00 X25.00 Y14.00 Z10.00", + "name": "G2", + "parameters": { + "I": -7.78, + "J": -7.78, + "K": 0, + "X": 25, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G1 X25.00 Y-14.00 Z10.00", + "name": "G1", + "parameters": { + "X": 25, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G2 I-11.00 J0.00 K0.00 X14.00 Y-25.00 Z10.00", + "name": "G2", + "parameters": { + "I": -11, + "J": 0, + "K": 0, + "X": 14, + "Y": -25, + "Z": 10 + } + }, + { + "gcode": "G1 X-14.00 Y-25.00 Z10.00", + "name": "G1", + "parameters": { + "X": -14, + "Y": -25, + "Z": 10 + } + }, + { + "gcode": "G2 I0.00 J11.00 K0.00 X-25.00 Y-14.00 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": 11, + "K": 0, + "X": -25, + "Y": -14, + "Z": 10 + } + }, + { + "gcode": "G1 X-25.00 Y14.00 Z10.00", + "name": "G1", + "parameters": { + "X": -25, + "Y": 14, + "Z": 10 + } + }, + { + "gcode": "G2 I11.00 J0.00 K0.00 X-14.00 Y25.00 Z10.00", + "name": "G2", + "parameters": { + "I": 11, + "J": 0, + "K": 0, + "X": -14, + "Y": 25, + "Z": 10 + } + }, + { + "gcode": "G1 X14.00 Y25.00 Z10.00", + "name": "G1", + "parameters": { + "X": 14, + "Y": 25, + "Z": 10 + } + }, + { + "gcode": "G2 I0.00 J-11.00 K0.00 X21.78 Y21.78 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": -11, + "K": 0, + "X": 21.78, + "Y": 21.78, + "Z": 10 + } + }, + { + "gcode": "G0 F0.00 Z16.00", + "name": "G0", + "parameters": { + "F": 0, + "Z": 16 + } + }, + { + "gcode": "G0 Z16.00", + "name": "G0", + "parameters": { + "Z": 16 + } + } + ], + "cuttingCommandCount": 20, + "direction": "CW", + "firstCuttingCommand": { + "gcode": "G1 X18.24 Y18.24 Z10.00", + "name": "G1", + "parameters": { + "X": 18.24, + "Y": 18.24, + "Z": 10 + } + }, + "id": "outside-cw-no-comp", + "lastCuttingCommand": { + "gcode": "G2 I0.00 J-11.00 K0.00 X21.78 Y21.78 Z10.00", + "name": "G2", + "parameters": { + "I": 0, + "J": -11, + "K": 0, + "X": 21.78, + "Y": 21.78, + "Z": 10 + } + }, + "pathLength": 394.13, + "useComp": false + } + ] + }, + "helixAlgorithm": { + "baseSubElementCount": 9, + "fixture": "Mod/CAM/CAMTests/test_holes00.fcstd", + "fixtureSha256": "781032119db8d718e0a9e2cbf90691e1e496f8f1d292abf40cee25fa6ed9b7bb", + "jobTypeId": "Path::FeaturePython", + "modelTypeId": "PartDesign::Body", + "normalizationToleranceMm": 0.01, + "operationTypeId": "Path::FeaturePython", + "pathPropertyType": "Path::PropertyPath", + "scenarioCount": 4, + "scenarios": [ + { + "arcCommandCount": 1260, + "arcNames": [ + "G2" + ], + "commandCount": 1471, + "commandHistogram": { + "(OracleHelix)": 1, + "(helix cut operation)": 1, + "G0": 164, + "G1": 45, + "G2": 1260 + }, + "commandSha256": "6499583c26dbf01694abc0a98fdbeb9d240cce0f73d32634284ddfa132030e0b", + "cutMode": "Conventional", + "direction": "CW", + "expectedArc": "G2", + "expectedDirection": "CW", + "firstArcCommand": { + "gcode": "G2 F0.00 I-0.05 J0.00 X9.95 Y0.00 Z0.58", + "name": "G2", + "parameters": { + "F": 0, + "I": -0.05, + "J": 0, + "X": 9.95, + "Y": 0, + "Z": 0.58 + } + }, + "id": "inside-conventional", + "lastArcCommand": { + "gcode": "G2 F0.00 I4.05 J0.00 X94.05 Y0.00 Z-10.00", + "name": "G2", + "parameters": { + "F": 0, + "I": 4.05, + "J": 0, + "X": 94.05, + "Y": 0, + "Z": -10 + } + }, + "pathLength": 1381.87, + "startSide": "Inside" + }, + { + "arcCommandCount": 1260, + "arcNames": [ + "G2" + ], + "commandCount": 1427, + "commandHistogram": { + "(OracleHelix)": 1, + "(helix cut operation)": 1, + "G0": 120, + "G1": 45, + "G2": 1260 + }, + "commandSha256": "37ee85fe360bfa82235f1b7aefce31cb7150900bb8d6f08751741fce6df18626", + "cutMode": "Climb", + "direction": "CW", + "expectedArc": "G2", + "expectedDirection": "CW", + "firstArcCommand": { + "gcode": "G2 F0.00 I-0.05 J0.00 X9.95 Y0.00 Z0.58", + "name": "G2", + "parameters": { + "F": 0, + "I": -0.05, + "J": 0, + "X": 9.95, + "Y": 0, + "Z": 0.58 + } + }, + "id": "outside-climb", + "lastArcCommand": { + "gcode": "G2 F0.00 I0.45 J0.00 X90.45 Y0.00 Z-10.00", + "name": "G2", + "parameters": { + "F": 0, + "I": 0.45, + "J": 0, + "X": 90.45, + "Y": 0, + "Z": -10 + } + }, + "pathLength": 1269.92, + "startSide": "Outside" + }, + { + "arcCommandCount": 1260, + "arcNames": [ + "G3" + ], + "commandCount": 1471, + "commandHistogram": { + "(OracleHelix)": 1, + "(helix cut operation)": 1, + "G0": 164, + "G1": 45, + "G3": 1260 + }, + "commandSha256": "f2fd26ca11be5efb037f809fb65949d24956f6ce330f87d152d2674770a27bd8", + "cutMode": "Climb", + "direction": "CCW", + "expectedArc": "G3", + "expectedDirection": "CCW", + "firstArcCommand": { + "gcode": "G3 F0.00 I-0.05 J0.00 X9.95 Y0.00 Z0.58", + "name": "G3", + "parameters": { + "F": 0, + "I": -0.05, + "J": 0, + "X": 9.95, + "Y": 0, + "Z": 0.58 + } + }, + "id": "inside-climb", + "lastArcCommand": { + "gcode": "G3 F0.00 I4.05 J0.00 X94.05 Y0.00 Z-10.00", + "name": "G3", + "parameters": { + "F": 0, + "I": 4.05, + "J": 0, + "X": 94.05, + "Y": 0, + "Z": -10 + } + }, + "pathLength": 1381.87, + "startSide": "Inside" + }, + { + "arcCommandCount": 1260, + "arcNames": [ + "G3" + ], + "commandCount": 1427, + "commandHistogram": { + "(OracleHelix)": 1, + "(helix cut operation)": 1, + "G0": 120, + "G1": 45, + "G3": 1260 + }, + "commandSha256": "0220f90245a74a50c1a54cb501439d14e7370d9d9d34fcc89dccdaff345688b7", + "cutMode": "Conventional", + "direction": "CCW", + "expectedArc": "G3", + "expectedDirection": "CCW", + "firstArcCommand": { + "gcode": "G3 F0.00 I-0.05 J0.00 X9.95 Y0.00 Z0.58", + "name": "G3", + "parameters": { + "F": 0, + "I": -0.05, + "J": 0, + "X": 9.95, + "Y": 0, + "Z": 0.58 + } + }, + "id": "outside-conventional", + "lastArcCommand": { + "gcode": "G3 F0.00 I0.45 J0.00 X90.45 Y0.00 Z-10.00", + "name": "G3", + "parameters": { + "F": 0, + "I": 0.45, + "J": 0, + "X": 90.45, + "Y": 0, + "Z": -10 + } + }, + "pathLength": 1269.92, + "startSide": "Outside" + } + ], + "toolDiameterMm": 0.9 + }, + "qtDynamicOracle": { + "activeWorkbench": "CAMWorkbench", + "camCommandCount": 56, + "camCommands": [ + "CAM_Adaptive", + "CAM_Area", + "CAM_Area_Workplane", + "CAM_Array", + "CAM_Comment", + "CAM_Compound", + "CAM_Custom", + "CAM_Deburr", + "CAM_DressupArray", + "CAM_DressupAxisMap", + "CAM_DressupDogbone", + "CAM_DressupDragKnife", + "CAM_DressupLeadInOut", + "CAM_DressupPathBoundary", + "CAM_DressupRampEntry", + "CAM_DressupTag", + "CAM_DressupTools", + "CAM_DressupZCorrect", + "CAM_Drilling", + "CAM_Engrave", + "CAM_EngraveTools", + "CAM_ExportTemplate", + "CAM_Fixture", + "CAM_Helix", + "CAM_Inspect", + "CAM_Job", + "CAM_MillFace", + "CAM_OpActiveToggle", + "CAM_OperationCopy", + "CAM_PathShapeTC", + "CAM_Pocket3D", + "CAM_Pocket_Shape", + "CAM_Post", + "CAM_Probe", + "CAM_Profile", + "CAM_PropertyBag", + "CAM_Sanity", + "CAM_SelectLoop", + "CAM_SetStartPoint", + "CAM_Shape", + "CAM_SimTools", + "CAM_SimpleCopy", + "CAM_Simulator", + "CAM_SimulatorGL", + "CAM_Slot", + "CAM_Stop", + "CAM_Tapping", + "CAM_ThreadMilling", + "CAM_ToolBitCreate", + "CAM_ToolBitDock", + "CAM_ToolBitLibraryOpen", + "CAM_ToolBitLoad", + "CAM_ToolBitSave", + "CAM_ToolBitSaveAs", + "CAM_ToolController", + "CAM_Vcarve" + ], + "guiUp": true, + "menuCount": 1, + "menus": [ + { + "commands": [ + "CAM_Adaptive", + "CAM_Array", + "CAM_Comment", + "CAM_Custom", + "CAM_Deburr", + "CAM_DressupArray", + "CAM_DressupAxisMap", + "CAM_DressupDogbone", + "CAM_DressupDragKnife", + "CAM_DressupLeadInOut", + "CAM_DressupPathBoundary", + "CAM_DressupRampEntry", + "CAM_DressupTag", + "CAM_DressupZCorrect", + "CAM_Drilling", + "CAM_Engrave", + "CAM_ExportTemplate", + "CAM_Helix", + "CAM_Inspect", + "CAM_Job", + "CAM_MillFace", + "CAM_OpActiveToggle", + "CAM_OperationCopy", + "CAM_Pocket3D", + "CAM_Pocket_Shape", + "CAM_Post", + "CAM_Probe", + "CAM_Profile", + "CAM_PropertyBag", + "CAM_Sanity", + "CAM_SelectLoop", + "CAM_SimpleCopy", + "CAM_Simulator", + "CAM_SimulatorGL", + "CAM_Slot", + "CAM_Stop", + "CAM_ToolBitDock", + "CAM_ToolBitLibraryOpen", + "CAM_Vcarve" + ], + "title": "CAM" + } + ], + "qtVersion": "6.8.2", + "registeredCommandCount": 513, + "requiredCommands": [ + { + "emptyDocument": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Job", + "registered": true, + "shortcut": "P, J", + "text": "New Job", + "toolTip": "

New Job (P, J)

Creates a CAM job

CAM_Job

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Job", + "registered": true, + "shortcut": "P, J", + "text": "New Job", + "toolTip": "

New Job (P, J)

Creates a CAM job

CAM_Job

", + "visible": true + }, + "id": "CAM_Job", + "selectedJob": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Job", + "registered": true, + "shortcut": "P, J", + "text": "New Job", + "toolTip": "

New Job (P, J)

Creates a CAM job

CAM_Job

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Job", + "registered": true, + "shortcut": "P, J", + "text": "New Job", + "toolTip": "

New Job (P, J)

Creates a CAM job

CAM_Job

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Job", + "registered": true, + "shortcut": "P, J", + "text": "New Job", + "toolTip": "

New Job (P, J)

Creates a CAM job

CAM_Job

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Profile", + "registered": true, + "shortcut": "", + "text": "Profile", + "toolTip": "

Profile

Profile entire model, selected face(s) or selected edge(s)

CAM_Profile

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Profile", + "registered": true, + "shortcut": "", + "text": "Profile", + "toolTip": "

Profile

Profile entire model, selected face(s) or selected edge(s)

CAM_Profile

", + "visible": true + }, + "id": "CAM_Profile", + "selectedJob": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Profile", + "registered": true, + "shortcut": "", + "text": "Profile", + "toolTip": "

Profile

Profile entire model, selected face(s) or selected edge(s)

CAM_Profile

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Profile", + "registered": true, + "shortcut": "", + "text": "Profile", + "toolTip": "

Profile

Profile entire model, selected face(s) or selected edge(s)

CAM_Profile

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Profile", + "registered": true, + "shortcut": "", + "text": "Profile", + "toolTip": "

Profile

Profile entire model, selected face(s) or selected edge(s)

CAM_Profile

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket_Shape", + "registered": true, + "shortcut": "", + "text": "Pocket Shape", + "toolTip": "

Pocket Shape

Creates a pocket toolpath from a face or faces

CAM_Pocket_Shape

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket_Shape", + "registered": true, + "shortcut": "", + "text": "Pocket Shape", + "toolTip": "

Pocket Shape

Creates a pocket toolpath from a face or faces

CAM_Pocket_Shape

", + "visible": true + }, + "id": "CAM_Pocket_Shape", + "selectedJob": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket_Shape", + "registered": true, + "shortcut": "", + "text": "Pocket Shape", + "toolTip": "

Pocket Shape

Creates a pocket toolpath from a face or faces

CAM_Pocket_Shape

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket_Shape", + "registered": true, + "shortcut": "", + "text": "Pocket Shape", + "toolTip": "

Pocket Shape

Creates a pocket toolpath from a face or faces

CAM_Pocket_Shape

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket_Shape", + "registered": true, + "shortcut": "", + "text": "Pocket Shape", + "toolTip": "

Pocket Shape

Creates a pocket toolpath from a face or faces

CAM_Pocket_Shape

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Drilling", + "registered": true, + "shortcut": "", + "text": "Drilling", + "toolTip": "

Drilling

Creates a Drilling toolpath from the features of a base

object

CAM_Drilling

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Drilling", + "registered": true, + "shortcut": "", + "text": "Drilling", + "toolTip": "

Drilling

Creates a Drilling toolpath from the features of a base

object

CAM_Drilling

", + "visible": true + }, + "id": "CAM_Drilling", + "selectedJob": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Drilling", + "registered": true, + "shortcut": "", + "text": "Drilling", + "toolTip": "

Drilling

Creates a Drilling toolpath from the features of a base

object

CAM_Drilling

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Drilling", + "registered": true, + "shortcut": "", + "text": "Drilling", + "toolTip": "

Drilling

Creates a Drilling toolpath from the features of a base

object

CAM_Drilling

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Drilling", + "registered": true, + "shortcut": "", + "text": "Drilling", + "toolTip": "

Drilling

Creates a Drilling toolpath from the features of a base

object

CAM_Drilling

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Adaptive", + "registered": true, + "shortcut": "", + "text": "Adaptive", + "toolTip": "

Adaptive

Adaptive clearing and profiling

CAM_Adaptive

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Adaptive", + "registered": true, + "shortcut": "", + "text": "Adaptive", + "toolTip": "

Adaptive

Adaptive clearing and profiling

CAM_Adaptive

", + "visible": true + }, + "id": "CAM_Adaptive", + "selectedJob": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Adaptive", + "registered": true, + "shortcut": "", + "text": "Adaptive", + "toolTip": "

Adaptive

Adaptive clearing and profiling

CAM_Adaptive

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Adaptive", + "registered": true, + "shortcut": "", + "text": "Adaptive", + "toolTip": "

Adaptive

Adaptive clearing and profiling

CAM_Adaptive

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Adaptive", + "registered": true, + "shortcut": "", + "text": "Adaptive", + "toolTip": "

Adaptive

Adaptive clearing and profiling

CAM_Adaptive

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket3D", + "registered": true, + "shortcut": "", + "text": "3D Pocket", + "toolTip": "

3D Pocket

Creates a 3D Pocket toolpath from a face or faces

CAM_Pocket3D

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket3D", + "registered": true, + "shortcut": "", + "text": "3D Pocket", + "toolTip": "

3D Pocket

Creates a 3D Pocket toolpath from a face or faces

CAM_Pocket3D

", + "visible": true + }, + "id": "CAM_Pocket3D", + "selectedJob": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket3D", + "registered": true, + "shortcut": "", + "text": "3D Pocket", + "toolTip": "

3D Pocket

Creates a 3D Pocket toolpath from a face or faces

CAM_Pocket3D

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket3D", + "registered": true, + "shortcut": "", + "text": "3D Pocket", + "toolTip": "

3D Pocket

Creates a 3D Pocket toolpath from a face or faces

CAM_Pocket3D

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Pocket3D", + "registered": true, + "shortcut": "", + "text": "3D Pocket", + "toolTip": "

3D Pocket

Creates a 3D Pocket toolpath from a face or faces

CAM_Pocket3D

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Post", + "registered": true, + "shortcut": "P, P", + "text": "Post Process", + "toolTip": "

Post Process (P, P)

Post Processes the selected job

CAM_Post

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Post", + "registered": true, + "shortcut": "P, P", + "text": "Post Process", + "toolTip": "

Post Process (P, P)

Post Processes the selected job

CAM_Post

", + "visible": true + }, + "id": "CAM_Post", + "selectedJob": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Post", + "registered": true, + "shortcut": "P, P", + "text": "Post Process", + "toolTip": "

Post Process (P, P)

Post Processes the selected job

CAM_Post

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Post", + "registered": true, + "shortcut": "P, P", + "text": "Post Process", + "toolTip": "

Post Process (P, P)

Post Processes the selected job

CAM_Post

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Post", + "registered": true, + "shortcut": "P, P", + "text": "Post Process", + "toolTip": "

Post Process (P, P)

Post Processes the selected job

CAM_Post

", + "visible": true + }, + "selectionChangesEnabledState": true + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Simulator", + "registered": true, + "shortcut": "P, M", + "text": "Legacy CAM Simulator", + "toolTip": "

Legacy CAM Simulator (P, M)

Simulates G-code on stock

CAM_Simulator

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Simulator", + "registered": true, + "shortcut": "P, M", + "text": "Legacy CAM Simulator", + "toolTip": "

Legacy CAM Simulator (P, M)

Simulates G-code on stock

CAM_Simulator

", + "visible": true + }, + "id": "CAM_Simulator", + "selectedJob": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Simulator", + "registered": true, + "shortcut": "P, M", + "text": "Legacy CAM Simulator", + "toolTip": "

Legacy CAM Simulator (P, M)

Simulates G-code on stock

CAM_Simulator

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Simulator", + "registered": true, + "shortcut": "P, M", + "text": "Legacy CAM Simulator", + "toolTip": "

Legacy CAM Simulator (P, M)

Simulates G-code on stock

CAM_Simulator

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Simulator", + "registered": true, + "shortcut": "P, M", + "text": "Legacy CAM Simulator", + "toolTip": "

Legacy CAM Simulator (P, M)

Simulates G-code on stock

CAM_Simulator

", + "visible": true + }, + "selectionChangesEnabledState": false + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Sanity", + "registered": true, + "shortcut": "P, S", + "text": "Sanity Check", + "toolTip": "

Sanity Check (P, S)

Checks the CAM job for common errors

CAM_Sanity

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Sanity", + "registered": true, + "shortcut": "P, S", + "text": "Sanity Check", + "toolTip": "

Sanity Check (P, S)

Checks the CAM job for common errors

CAM_Sanity

", + "visible": true + }, + "id": "CAM_Sanity", + "selectedJob": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_Sanity", + "registered": true, + "shortcut": "P, S", + "text": "Sanity Check", + "toolTip": "

Sanity Check (P, S)

Checks the CAM job for common errors

CAM_Sanity

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Sanity", + "registered": true, + "shortcut": "P, S", + "text": "Sanity Check", + "toolTip": "

Sanity Check (P, S)

Checks the CAM job for common errors

CAM_Sanity

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": false, + "iconPresent": true, + "objectName": "CAM_Sanity", + "registered": true, + "shortcut": "P, S", + "text": "Sanity Check", + "toolTip": "

Sanity Check (P, S)

Checks the CAM job for common errors

CAM_Sanity

", + "visible": true + }, + "selectionChangesEnabledState": true + }, + { + "emptyDocument": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_ToolBitDock", + "registered": true, + "shortcut": "P, T", + "text": "Add toolbit…", + "toolTip": "

Add toolbit… (P, T)

Opens the toolbit selection dialog

CAM_ToolBitDock

", + "visible": true + }, + "emptySelection": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_ToolBitDock", + "registered": true, + "shortcut": "P, T", + "text": "Add toolbit…", + "toolTip": "

Add toolbit… (P, T)

Opens the toolbit selection dialog

CAM_ToolBitDock

", + "visible": true + }, + "id": "CAM_ToolBitDock", + "selectedJob": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_ToolBitDock", + "registered": true, + "shortcut": "P, T", + "text": "Add toolbit…", + "toolTip": "

Add toolbit… (P, T)

Opens the toolbit selection dialog

CAM_ToolBitDock

", + "visible": true + }, + "selectedModel": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_ToolBitDock", + "registered": true, + "shortcut": "P, T", + "text": "Add toolbit…", + "toolTip": "

Add toolbit… (P, T)

Opens the toolbit selection dialog

CAM_ToolBitDock

", + "visible": true + }, + "selectedOperation": { + "actionCount": 1, + "enabled": true, + "iconPresent": true, + "objectName": "CAM_ToolBitDock", + "registered": true, + "shortcut": "P, T", + "text": "Add toolbit…", + "toolTip": "

Add toolbit… (P, T)

Opens the toolbit selection dialog

CAM_ToolBitDock

", + "visible": true + }, + "selectionChangesEnabledState": false + } + ], + "taskLifecycleVerified": true, + "taskLifecycles": [ + { + "action": "cancel", + "active": { + "activeDialog": true, + "buttonBoxCount": 1, + "buttonTexts": [ + { + "default": true, + "enabled": true, + "role": "ButtonRole.AcceptRole", + "text": "OK" + }, + { + "default": false, + "enabled": true, + "role": "ButtonRole.RejectRole", + "text": "Cancel" + } + ], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox", + "QLineEdit" + ], + "fieldCount": 14, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "OracleJob", + "phase": "active" + }, + "before": { + "activeDialog": false, + "buttonBoxCount": 0, + "buttonTexts": [], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox" + ], + "fieldCount": 4, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "", + "phase": "before" + }, + "buttonClicked": true, + "closed": { + "activeDialog": false, + "buttonBoxCount": 0, + "buttonTexts": [], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox" + ], + "fieldCount": 4, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "", + "phase": "closed" + }, + "dialogClosed": true, + "dialogOpened": true, + "objectName": "OracleJob", + "setEditAccepted": true + }, + { + "action": "accept", + "active": { + "activeDialog": true, + "buttonBoxCount": 1, + "buttonTexts": [ + { + "default": true, + "enabled": true, + "role": "ButtonRole.AcceptRole", + "text": "OK" + }, + { + "default": false, + "enabled": true, + "role": "ButtonRole.RejectRole", + "text": "Cancel" + } + ], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox", + "QLineEdit" + ], + "fieldCount": 14, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "OracleProfile", + "phase": "active" + }, + "before": { + "activeDialog": false, + "buttonBoxCount": 0, + "buttonTexts": [], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox" + ], + "fieldCount": 4, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "", + "phase": "before" + }, + "buttonClicked": true, + "closed": { + "activeDialog": false, + "buttonBoxCount": 0, + "buttonTexts": [], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox" + ], + "fieldCount": 4, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "", + "phase": "closed" + }, + "dialogClosed": true, + "dialogOpened": true, + "objectName": "OracleProfile", + "setEditAccepted": true + }, + { + "action": "cancel", + "active": { + "activeDialog": true, + "buttonBoxCount": 1, + "buttonTexts": [ + { + "default": true, + "enabled": true, + "role": "ButtonRole.AcceptRole", + "text": "OK" + }, + { + "default": false, + "enabled": true, + "role": "ButtonRole.RejectRole", + "text": "Cancel" + } + ], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox", + "QLineEdit" + ], + "fieldCount": 14, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "OracleProfile", + "phase": "active" + }, + "before": { + "activeDialog": false, + "buttonBoxCount": 0, + "buttonTexts": [], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox" + ], + "fieldCount": 4, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "", + "phase": "before" + }, + "buttonClicked": true, + "closed": { + "activeDialog": false, + "buttonBoxCount": 0, + "buttonTexts": [], + "fieldClasses": [ + "Gui::WorkbenchComboBox", + "QComboBox" + ], + "fieldCount": 4, + "focus": { + "className": "Gui::View3DInventorViewer", + "objectName": "" + }, + "inEdit": "", + "phase": "closed" + }, + "dialogClosed": true, + "dialogOpened": true, + "objectName": "OracleProfile", + "setEditAccepted": true + } + ], + "toolbarCount": 4, + "toolbars": [ + { + "commands": [ + "CAM_Profile", + "CAM_Pocket_Shape", + "CAM_MillFace", + "CAM_Helix", + "CAM_Adaptive", + "CAM_Slot", + "CAM_Drilling", + "CAM_EngraveTools", + "CAM_Pocket3D" + ], + "objectName": "New Operations", + "title": "New Operations", + "visible": true + }, + { + "commands": [ + "CAM_OperationCopy", + "CAM_Array", + "CAM_SimpleCopy", + "CAM_DressupTools" + ], + "objectName": "Path Modification", + "title": "Path Modification", + "visible": true + }, + { + "commands": [ + "CAM_Job", + "CAM_Post", + "CAM_Sanity" + ], + "objectName": "Project Setup", + "title": "Project Setup", + "visible": true + }, + { + "commands": [ + "CAM_SimTools", + "CAM_Inspect", + "CAM_SelectLoop", + "CAM_OpActiveToggle", + "CAM_ToolBitDock" + ], + "objectName": "Tool Commands", + "title": "Tool Commands", + "visible": true + } + ], + "workbench": "CAMWorkbench" + }, + "fcstdRoundTrip": { + "mutated": { + "path": ".cache/freecad/cam-path-oracle/native-path-mutated.FCStd", + "semanticSha256": "a1c96ef56e389231a5df8ee9c9eeabf50cd672f054b815da556cf6c08e80839c" + }, + "mutatedReopened": [ + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 6, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + }, + { + "gcode": "M5", + "name": "M5", + "parameters": {} + } + ], + "label": "Native Path Mutated", + "length": 55.734951427, + "name": "NativePath", + "oracleTag": "native-v2", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::Feature" + }, + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 6, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + }, + { + "gcode": "M2", + "name": "M2", + "parameters": {} + } + ], + "label": "Python Path Mutated", + "length": 55.734951427, + "name": "PythonPath", + "oracleTag": "python-v2", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::FeaturePython" + } + ], + "source": { + "path": ".cache/freecad/cam-path-oracle/native-path-source.FCStd", + "semanticSha256": "15b474368316253a6cec05792c5af19b9bba398389b5c651db4076bbccf8dd57" + }, + "sourceBeforeClose": [ + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 5, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + } + ], + "label": "Native Path Original", + "length": 55.734951427, + "name": "NativePath", + "oracleTag": "native-v1", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::Feature" + }, + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 5, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + } + ], + "label": "Python Path Original", + "length": 55.734951427, + "name": "PythonPath", + "oracleTag": "python-v1", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::FeaturePython" + } + ], + "sourceReopened": [ + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 5, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + } + ], + "label": "Native Path Original", + "length": 55.734951427, + "name": "NativePath", + "oracleTag": "native-v1", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::Feature" + }, + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 5, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + } + ], + "label": "Python Path Original", + "length": 55.734951427, + "name": "PythonPath", + "oracleTag": "python-v1", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::FeaturePython" + } + ], + "webInspection": { + "objectTypes": [ + "Path::Feature", + "Path::FeaturePython" + ], + "pathPropertyTypes": [ + "Path::PropertyPath", + "Path::PropertyPath" + ], + "compatibility": { + "level": "blocked", + "readOnly": true, + "codeExecutionBlocked": true, + "recognizedObjects": 1, + "proxyObjects": 0, + "blockedObjects": 1, + "unknownTypeIds": [], + "warnings": [ + "1 Python-backed object(s) require a non-executing proxy." + ] + }, + "proxyReadOnly": true + }, + "webTransparentPreservation": { + "archive": { + "path": ".cache/freecad/cam-path-oracle/web-preserved.FCStd", + "semanticSha256": "15b474368316253a6cec05792c5af19b9bba398389b5c651db4076bbccf8dd57" + }, + "byteExact": true, + "nativeReopenVerified": true, + "objects": [ + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 5, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + } + ], + "label": "Native Path Original", + "length": 55.734951427, + "name": "NativePath", + "oracleTag": "native-v1", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::Feature" + }, + { + "boundingBox": { + "max": [ + 20, + 20, + 5 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "commandCount": 5, + "commands": [ + { + "gcode": "G0 X0.000000000 Y0.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 0, + "Y": 0, + "Z": 5 + } + }, + { + "gcode": "G1 F120.000000000 X0.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 120, + "X": 0, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G1 F300.000000000 X20.000000000 Y0.000000000 Z0.000000000", + "name": "G1", + "parameters": { + "F": 300, + "X": 20, + "Y": 0, + "Z": 0 + } + }, + { + "gcode": "G2 F300.000000000 I0.000000000 J10.000000000 X20.000000000 Y20.000000000", + "name": "G2", + "parameters": { + "F": 300, + "I": 0, + "J": 10, + "X": 20, + "Y": 20 + } + }, + { + "gcode": "G0 X20.000000000 Y20.000000000 Z5.000000000", + "name": "G0", + "parameters": { + "X": 20, + "Y": 20, + "Z": 5 + } + } + ], + "label": "Python Path Original", + "length": 55.734951427, + "name": "PythonPath", + "oracleTag": "python-v1", + "pathPropertyType": "Path::PropertyPath", + "typeId": "Path::FeaturePython" + } + ] + }, + "webEditablePathProperty": { + "objectName": "NativePath", + "resourcePath": "NativePath.nc", + "sourceCommandCount": 5, + "editedCommandCount": 6, + "lastCommand": { + "name": "M3", + "parameters": { + "S": 12000 + } + }, + "nativeReopenVerified": true, + "featurePythonExecutionBlocked": true + }, + "webEditableFeaturePythonPathProperty": { + "objectName": "PythonPath", + "resourcePath": "PythonPath.nc", + "sourceCommandCount": 5, + "editedCommandCount": 6, + "lastCommand": { + "name": "M2", + "parameters": {} + }, + "nativeReopenVerified": true, + "scriptExecution": "blocked", + "optInRequired": true + } + }, + "claims": { + "nativeProfilePathAlgorithm": "verified", + "nativeHelixPathAlgorithm": "verified-four-direction-cases", + "qtCamWorkbenchDynamicOracle": "verified", + "nativePathFeatureFcstdSaveOpenMutateSaveOpen": "verified", + "nativeWebNativePathFcstdTransparentRoundTrip": "verified", + "webEditablePathPropertyCodec": "verified-native-path-feature", + "webEditableFeaturePythonPathResourceCodec": "verified-safe-resource-only-opt-in" + }, + "boundary": { + "exactEvidence": "FreeCAD 1.1.1 executes compensated/uncompensated Profile and four Helix direction cases, exposes live Qt CAM actions, and reopens both Path object types after native and byte-transparent Web round-trips.", + "remainingGap": "FeaturePython Path::PropertyPath resource editing is now an explicit safe opt-in that never executes Python; FeaturePython operation metadata, recompute behavior and algorithms beyond the locked Profile/Helix scenarios remain unclaimed.", + "exactParityClaim": false + }, + "status": "verified-with-native-path-editable-subset" +} diff --git a/config/freecad-composite-history-elementmap-oracle.json b/config/freecad-composite-history-elementmap-oracle.json new file mode 100644 index 0000000..1962ebe --- /dev/null +++ b/config/freecad-composite-history-elementmap-oracle.json @@ -0,0 +1,180067 @@ +{ + "baselineId": "freecad-1.1.1-composite-history-elementmap2", + "cases": [ + { + "elementMapResources": { + "Fuse01.Shape.Map.txt": { + "sha256": "fcf8f70a80c3838ede9eb2ec7f7a3627463c4938c4e159f82770b93160c89176", + "text": "BeginElementMap v1\n1 PostfixCount 18\nEdge\nFace\nVertex\n;:H9f4,E\n;:G(Face5;K-1;:H9f4:4,F);FUS;:H9f5:1c,V\n;:G2(Face6;K-1;:H9f4:4,F);FUS;:H9f5:1d,V\n;:M2;FUS;:H9f5:8,E\n;:M;FUS;:H9f5:7,E\n;:H9f5,E\n;:H9f4,F\n;:M2;FUS;:H9f5:8,F\n;:M;FUS;:H9f5:7,F\n;:H9f5,F\n;:G2(Face1;K-1;:H9f5:4,F);FUS;:H9f4:1d,E\n;:M;FUS;:H9f4:7,F\n;:G2(Face1;K-2;:H9f5:4,F);FUS;:H9f4:1d,E\n;:H9f4,V\n;:H9f5,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 19\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.10 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.e 0\n:1.1.7 0\n:1.3.9 0\n:1.2.9 0\n:1.1.8 0\n\nFace\n\nChildCount 0\n\nNameCount 11\n0\n:2.1.a 0\n:2.3.a 0\n:2.6.f 0\n:2.4.a 0\n:2.5.f 0\n:2.2.a 0\n:2.1.b 0\n:2.1.c 0\n:2.3.d 0\n:2.2.d 0\n\nVertex\n\nChildCount 0\n\nNameCount 13\n0\n:3.1.11 0\n:3.2.11 0\n:3.3.11 0\n:3.4.11 0\n:3.6.11 0\n:3.5.11 0\n:3.7.11 0\n:1.1.6 0\n:3.8.11 0\n:1.1.5 0\n:3.2.12 0\n:3.1.12 0\n\nEndMap\n" + } + }, + "finalObject": "Fuse01", + "id": "boolean-fuse-1", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box01", + "name": "Box01", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box01:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box01:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box01:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box01:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box01:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box01:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box01:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box01:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box01:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box01:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box01:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box01:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box01:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box01:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box01:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box01:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box01:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box01:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box01:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box01:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box01:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box01:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box01:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box01:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box01:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box01:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box01", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box01", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder01", + "name": "Cylinder01", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder01:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder01:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder01:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder01:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder01:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder01:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder01:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder01:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder01", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder01", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 703.7167544041135 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Fuse01.Shape.Map.txt" + ], + "elementMapSize": 40, + "elementMapVersion": "15.70200.5", + "label": "Fuse01", + "name": "Fuse01", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H9f4,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H9f4,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H9f4,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H9f4,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H9f4:7,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H9f4:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H9f4,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H9f4,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H9f4:7,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H9f4:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H9f4,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H9f4,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H9f5:8,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H9f5:8,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H9f5:7,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H9f5:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H9f5,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face3;:H9f5,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H9f5,F", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face2;:H9f5,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H9f4,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H9f4,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H9f4,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H9f4,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H9f4,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H9f4,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H9f4,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H9f4,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H9f4,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H9f5:4,F);FUS;:H9f4:1d,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H9f5:4,F)", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H9f5:4,F);FUS;:H9f4:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H9f4,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H9f4,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H9f4,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H9f4,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H9f5:4,F);FUS;:H9f4:1d,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H9f5:4,F)", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H9f5:4,F);FUS;:H9f4:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H9f5:8,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M2;FUS;:H9f5:8,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H9f5,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge3;:H9f5,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H9f5,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge2;:H9f5,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H9f5:7,E", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H9f5:7,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H9f4:4,F);FUS;:H9f5:1d,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H9f4:4,F)", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H9f4:4,F);FUS;:H9f5:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H9f4,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box01", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H9f4,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H9f4:4,F);FUS;:H9f5:1c,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H9f4:4,F)", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H9f4:4,F);FUS;:H9f5:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H9f5,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex2;:H9f5,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H9f5,V", + "object": "Fuse01", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder01", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex1;:H9f5,V", + "mappedStringIds": [], + "name": "Vertex12" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 40, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 40, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H9f4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H9f4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse01:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face1", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H9f4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H9f4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse01:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face3", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H9f4:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H9f4:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse01:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face6", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H9f4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H9f4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse01:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face4", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H9f4:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H9f4:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fuse01:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face5", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H9f4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H9f4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse01:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face2", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H9f5:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H9f5:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse01:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Face1", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H9f5:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H9f5:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Fuse01:face:7", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Face1", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H9f5,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face3;:H9f5,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse01:face:8", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Face3", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H9f5,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face2;:H9f5,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fuse01:face:9", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Face2", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse01:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge1", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse01:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge2", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse01:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge3", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse01:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge4", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse01:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge9", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse01:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge5", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse01:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge10", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse01:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge12", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse01:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge6", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H9f5:4,F);FUS;:H9f4:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H9f5:4,F);FUS;:H9f4:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse01:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H9f5:4,F)", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face6;:G2(Face1;K-2;:H9f5:4,F)", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse01:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge11", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse01:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge7", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H9f4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H9f4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Fuse01:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box01", + "persistentId": "Box01:mapped:Edge8", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H9f5:4,F);FUS;:H9f4:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H9f5:4,F);FUS;:H9f4:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Fuse01:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H9f5:4,F)", + "objectId": "Box01", + "persistentId": "Box01:mapped:Face5;:G2(Face1;K-1;:H9f5:4,F)", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M2;FUS;:H9f5:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M2;FUS;:H9f5:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Fuse01:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Edge1", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H9f5,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge3;:H9f5,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Fuse01:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Edge3", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H9f5,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge2;:H9f5,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Fuse01:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Edge2", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H9f5:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H9f5:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Fuse01:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Edge1", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse01:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex1", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse01:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex2", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse01:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex3", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse01:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex4", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse01:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex6", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse01:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex5", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse01:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex7", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H9f4:4,F);FUS;:H9f5:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H9f4:4,F);FUS;:H9f5:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Fuse01:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H9f4:4,F)", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Edge1;:G2(Face6;K-1;:H9f4:4,F)", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H9f4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H9f4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse01:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box01", + "persistentId": "Box01:mapped:Vertex8", + "stageId": "Box01" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H9f4:4,F);FUS;:H9f5:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H9f4:4,F);FUS;:H9f5:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse01:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H9f4:4,F)", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Edge1;:G(Face5;K-1;:H9f4:4,F)", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H9f5,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex2;:H9f5,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse01:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Vertex2", + "stageId": "Cylinder01" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H9f5,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex1;:H9f5,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse01:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Cylinder01", + "persistentId": "Cylinder01:mapped:Vertex1", + "stageId": "Cylinder01" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fuse01", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fuse01", + "status": "native-evidence" + }, + "shape": { + "edges": 18, + "faces": 10, + "solids": 1, + "valid": true, + "volume": 1201.0619298297468 + }, + "typeId": "Part::Fuse" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Fuse02.Shape.Map.txt": { + "sha256": "c4666b211ad0c6a96d5a56e1270d38607eca9fffcc1d3320eb6f7143833970e1", + "text": "BeginElementMap v1\n1 PostfixCount 38\nEdge\nFace\nVertex\n;:G(Face1;K-4;:H1f1:4,F);FUS;:H1f0:1c,V\n;:M2;FUS;:H1f0:8,E\n;:M;FUS;:H1f0:7,E\n;:G(Face1;K-5;:H1f1:4,F);FUS;:H1f0:1c,V\n;:G(Face1;K-6;:H1f1:4,F);FUS;:H1f0:1c,V\n;:H1f0,E\n;:M3;FUS;:H1f1:8,E\n;:M;FUS;:H1f1:7,E\n;:G(Face1;K-1;:H1f1:4,F);FUS;:H1f0:1c,V\n;:H1f1,E\n;:G(Face1;K-2;:H1f1:4,F);FUS;:H1f0:1c,V\n;:G(Edge1;K-1;:H1f1:4,E);FUS;:H1f0:1c,V\n;:G(Edge1;K-2;:H1f1:4,E);FUS;:H1f0:1c,V\n;:G(Face1;K-3;:H1f1:4,F);FUS;:H1f0:1c,V\n;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F\n;:M2;FUS;:H1f1:8,F\n;:M;FUS;:H1f1:7,F\n;:H1f1,F\n;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F\n;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F\n;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F\n;:G(Face1;K-10;:H1f1:5,F);FUS;:H1f0:1d,E\n;:G2(Face1;K-11;:H1f1:5,F);FUS;:H1f0:1e,E\n;:G3(Face1;K-12;:H1f1:5,F);FUS;:H1f0:1e,E\n;:G4(Face1;K-13;:H1f1:5,F);FUS;:H1f0:1e,E\n;:M2;FUS;:H1f0:8,F\n;:M3;FUS;:H1f0:8,F\n;:M4;FUS;:H1f0:8,F\n;:M;FUS;:H1f0:7,F\n;:G(Face1;K-14;:H1f1:5,F);FUS;:H1f0:1d,E\n;:G2(Face1;K-15;:H1f1:5,F);FUS;:H1f0:1e,E\n;:G3(Face1;K-16;:H1f1:5,F);FUS;:H1f0:1e,E\n;:G4(Face1;K-17;:H1f1:5,F);FUS;:H1f0:1e,E\n;:H1f0,V\n;:H1f1,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 33\n0\n:1.2.6 0\n:2.6.22 0\n:1.a.6 0\n:2.6.24 0\n:2.6.23 0\n:2.6.21 0\n:1.1.a 0\n:1.3.d 0\n:1.2.5 0\n:1.c.6 0\n:1.c.5 0\n:1.6.5 0\n:1.6.6 0\n:1.a.5 0\n:1.3.9 0\n:1.4.5 0\n:1.4.6 0\n:1.1.9 0\n:2.5.1a 0\n:1.9.6 0\n:1.2.d 0\n:1.1.b 0\n:2.5.19 0\n:2.5.1b 0\n:2.5.1c 0\n:1.b.6 0\n:1.8.6 0\n:1.9.5 0\n:1.b.5 0\n:1.8.5 0\n:1.5.9 0\n:1.7.9 0\n\nFace\n\nChildCount 0\n\nNameCount 17\n0\n:2.6.20 0\n:2.1.13 0\n:2.6.1d 0\n:2.6.1f 0\n:2.6.1e 0\n:2.3.15 0\n:2.1.12 0\n:2.5.20 0\n:2.1.14 0\n:2.5.1d 0\n:2.2.15 0\n:2.5.1e 0\n:2.5.1f 0\n:2.3.17 0\n:2.4.18 0\n:2.2.16 0\n\nVertex\n\nChildCount 0\n\nNameCount 19\n0\n:3.1.25 0\n:1.2.c 0\n:1.a.4 0\n:1.c.8 0\n:1.6.f 0\n:3.2.26 0\n:3.3.25 0\n:3.7.25 0\n:3.5.25 0\n:3.4.25 0\n:1.4.e 0\n:3.2.25 0\n:1.9.11 0\n:3.1.26 0\n:1.8.10 0\n:1.b.7 0\n:3.6.25 0\n:3.8.25 0\n\nEndMap\n" + } + }, + "finalObject": "Fuse02", + "id": "boolean-fuse-2", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box02", + "name": "Box02", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box02:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box02:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box02:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box02:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box02:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box02:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box02:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box02:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box02:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box02:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box02:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box02:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box02:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box02:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box02:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box02:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box02:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box02:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box02:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box02:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box02:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box02:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box02:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box02:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box02:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box02:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box02", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box02", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder02", + "name": "Cylinder02", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder02:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder02:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder02:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder02:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder02:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder02:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder02:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder02:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder02", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder02", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 1099.5574287564275 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Fuse02.Shape.Map.txt" + ], + "elementMapSize": 66, + "elementMapVersion": "15.70200.5", + "label": "Fuse02", + "name": "Fuse02", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H1f0:7,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H1f0:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H1f1:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H1f1:8,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M2;FUS;:H1f0:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M2;FUS;:H1f0:8,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M4;FUS;:H1f0:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face6;:M4;FUS;:H1f0:8,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M3;FUS;:H1f0:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face6;:M3;FUS;:H1f0:8,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H1f1,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:H1f1,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H1f0:7,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H1f0:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H1f1:7,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H1f1:7,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M2;FUS;:H1f0:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face5;:M2;FUS;:H1f0:8,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H1f1,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face2;:H1f1,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M3;FUS;:H1f0:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face5;:M3;FUS;:H1f0:8,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M4;FUS;:H1f0:8,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face5;:M4;FUS;:H1f0:8,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1f1:5,F);FUS;:H1f0:1e,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1f1:5,F);FUS;:H1f0:1e,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1f1:5,F);FUS;:H1f0:1e,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1f1:5,F);FUS;:H1f0:1d,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Face6;:G(Face1;K-14;:H1f1:5,F);FUS;:H1f0:1d,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M3;FUS;:H1f1:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge1;:M3;FUS;:H1f1:8,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H1f1,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge3;:H1f1,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge2;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge12;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge12;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge6;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge6;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge10;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H1f0,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge3;:H1f0,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge4;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H1f0,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:H1f0,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1f1:5,F);FUS;:H1f0:1e,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H1f1,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Edge2;:H1f1,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H1f1:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H1f1:7,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1f1:5,F);FUS;:H1f0:1d,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Face5;:G(Face1;K-10;:H1f1:5,F);FUS;:H1f0:1d,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1f1:5,F);FUS;:H1f0:1e,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1f1:5,F);FUS;:H1f0:1e,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1f1:5,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge11;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M;FUS;:H1f0:7,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge8;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge9;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge11;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M2;FUS;:H1f0:8,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Edge8;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H1f0,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge31", + "indexedStringIds": [], + "mappedName": "Edge5;:H1f0,E", + "mappedStringIds": [], + "name": "Edge31" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H1f0,E", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge32", + "indexedStringIds": [], + "mappedName": "Edge7;:H1f0,E", + "mappedStringIds": [], + "name": "Edge32" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1f1:4,F);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1f1:4,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1f1:4,F);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1f1:4,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1f1:4,F);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1f1:4,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1f1:4,E);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1f1:4,E)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1f1:4,E);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H1f1,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex2;:H1f1,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex3;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Vertex7;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex5;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex4;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1f1:4,F);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1f1:4,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex2;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1f1:4,F);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1f1:4,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H1f1,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder02", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Vertex1;:H1f1,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1f1:4,E);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1f1:4,E)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1f1:4,E);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1f1:4,F);FUS;:H1f0:1c,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1f1:4,F)", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "name": "Vertex16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex17", + "indexedStringIds": [], + "mappedName": "Vertex6;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H1f0,V", + "object": "Fuse02", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box02", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex18", + "indexedStringIds": [], + "mappedName": "Vertex8;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex18" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 66, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 66, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H1f0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H1f0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fuse02:face:0", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H1f1:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H1f1:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Fuse02:face:1", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Face1", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M2;FUS;:H1f0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M2;FUS;:H1f0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse02:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M4;FUS;:H1f0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face6;:M4;FUS;:H1f0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Fuse02:face:3", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M3;FUS;:H1f0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face6;:M3;FUS;:H1f0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fuse02:face:4", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H1f1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:H1f1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse02:face:5", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Face3", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse02:face:6", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face1;:M2;FUS;:H1f0:8,F;:M(Face1;:M;FUS;:H1f0:7,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H1f0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H1f0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Fuse02:face:7", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H1f1:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H1f1:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Fuse02:face:8", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Face1", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M2;FUS;:H1f0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face5;:M2;FUS;:H1f0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Fuse02:face:9", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H1f1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face2;:H1f1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse02:face:10", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Face2", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M3;FUS;:H1f0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face5;:M3;FUS;:H1f0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Fuse02:face:11", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M4;FUS;:H1f0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face5;:M4;FUS;:H1f0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Fuse02:face:12", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Fuse02:face:13", + "sourceRefs": [ + { + "mappedName": "Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face3;:M2;FUS;:H1f0:8,F;:M(Face3;:M;FUS;:H1f0:7,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Fuse02:face:14", + "sourceRefs": [ + { + "mappedName": "Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face4;:M2;FUS;:H1f0:8,F;:M(Face4;:M;FUS;:H1f0:7,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F);RFI;:H1f0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Fuse02:face:15", + "sourceRefs": [ + { + "mappedName": "Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face2;:M2;FUS;:H1f0:8,F;:M(Face2;:M;FUS;:H1f0:7,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fuse02:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge2", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-15;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-15;:H1f1:5,F);FUS;:H1f0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Fuse02:edge:1", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-15;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6;:G2(Face1;K-15;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge10;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse02:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge10", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G4(Face1;K-17;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Face6;:G4(Face1;K-17;:H1f1:5,F);FUS;:H1f0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Fuse02:edge:3", + "sourceRefs": [ + { + "mappedName": "Face6;:G4(Face1;K-17;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6;:G4(Face1;K-17;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G3(Face1;K-16;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Face6;:G3(Face1;K-16;:H1f1:5,F);FUS;:H1f0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fuse02:edge:4", + "sourceRefs": [ + { + "mappedName": "Face6;:G3(Face1;K-16;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6;:G3(Face1;K-16;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G(Face1;K-14;:H1f1:5,F);FUS;:H1f0:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Face6;:G(Face1;K-14;:H1f1:5,F);FUS;:H1f0:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Fuse02:edge:5", + "sourceRefs": [ + { + "mappedName": "Face6;:G(Face1;K-14;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face6;:G(Face1;K-14;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M3;FUS;:H1f1:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge1;:M3;FUS;:H1f1:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse02:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Edge1", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H1f1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge3;:H1f1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse02:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Edge3", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge2;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Fuse02:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge2", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge12;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Fuse02:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge12", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge12;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "Fuse02:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge12", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge6;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Fuse02:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge6;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Fuse02:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge10;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Fuse02:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge10", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge3;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Fuse02:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge3", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge4;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Fuse02:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge4", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge4;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Fuse02:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge4", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Fuse02:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge1", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-11;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-11;:H1f1:5,F);FUS;:H1f0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 18, + "resultPersistentId": "Fuse02:edge:18", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-11;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5;:G2(Face1;K-11;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge9;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Fuse02:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge9", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H1f1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Edge2;:H1f1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Fuse02:edge:20", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Edge2", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H1f1:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H1f1:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Fuse02:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Edge1", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G(Face1;K-10;:H1f1:5,F);FUS;:H1f0:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Face5;:G(Face1;K-10;:H1f1:5,F);FUS;:H1f0:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 22, + "resultPersistentId": "Fuse02:edge:22", + "sourceRefs": [ + { + "mappedName": "Face5;:G(Face1;K-10;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5;:G(Face1;K-10;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G3(Face1;K-12;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Face5;:G3(Face1;K-12;:H1f1:5,F);FUS;:H1f0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 23, + "resultPersistentId": "Fuse02:edge:23", + "sourceRefs": [ + { + "mappedName": "Face5;:G3(Face1;K-12;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5;:G3(Face1;K-12;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G4(Face1;K-13;:H1f1:5,F);FUS;:H1f0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Face5;:G4(Face1;K-13;:H1f1:5,F);FUS;:H1f0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 24, + "resultPersistentId": "Fuse02:edge:24", + "sourceRefs": [ + { + "mappedName": "Face5;:G4(Face1;K-13;:H1f1:5,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Face5;:G4(Face1;K-13;:H1f1:5,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge11;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 25, + "resultPersistentId": "Fuse02:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge11", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M;FUS;:H1f0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge8;:M;FUS;:H1f0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 26, + "resultPersistentId": "Fuse02:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge8", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge9;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 27, + "resultPersistentId": "Fuse02:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge9", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge11;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 28, + "resultPersistentId": "Fuse02:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge11", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M2;FUS;:H1f0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Edge8;:M2;FUS;:H1f0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 29, + "resultPersistentId": "Fuse02:edge:29", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge8", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge31", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 31, + "type": "Edge" + }, + "name": "Edge5;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 30, + "resultPersistentId": "Fuse02:edge:30", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge5", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Edge32", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 32, + "type": "Edge" + }, + "name": "Edge7;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 31, + "resultPersistentId": "Fuse02:edge:31", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge7", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse02:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex1", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:H1f1:4,F);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Fuse02:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:H1f1:4,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge2;:G(Face1;K-1;:H1f1:4,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:H1f1:4,F);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Fuse02:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:H1f1:4,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge10;:G(Face1;K-4;:H1f1:4,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:H1f1:4,F);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Fuse02:vertex:3", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:H1f1:4,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge12;:G(Face1;K-6;:H1f1:4,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge6;:G(Edge1;K-1;:H1f1:4,E);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge6;:G(Edge1;K-1;:H1f1:4,E);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fuse02:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge6;:G(Edge1;K-1;:H1f1:4,E)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge6;:G(Edge1;K-1;:H1f1:4,E)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H1f1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex2;:H1f1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse02:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Vertex2", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex3;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse02:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex3", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex7;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse02:vertex:7", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex7", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex5;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse02:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex5", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex4;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fuse02:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex4", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:H1f1:4,F);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "Fuse02:vertex:10", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:H1f1:4,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge4;:G(Face1;K-2;:H1f1:4,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex2;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse02:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex2", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:H1f1:4,F);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Fuse02:vertex:12", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:H1f1:4,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge9;:G(Face1;K-3;:H1f1:4,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H1f1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Vertex1;:H1f1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Fuse02:vertex:13", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Cylinder02", + "persistentId": "Cylinder02:mapped:Vertex1", + "stageId": "Cylinder02" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge8;:G(Edge1;K-2;:H1f1:4,E);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Edge8;:G(Edge1;K-2;:H1f1:4,E);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 14, + "resultPersistentId": "Fuse02:vertex:14", + "sourceRefs": [ + { + "mappedName": "Edge8;:G(Edge1;K-2;:H1f1:4,E)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge8;:G(Edge1;K-2;:H1f1:4,E)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:H1f1:4,F);FUS;:H1f0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:H1f1:4,F);FUS;:H1f0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "Fuse02:vertex:15", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:H1f1:4,F)", + "objectId": "Box02", + "persistentId": "Box02:mapped:Edge11;:G(Face1;K-5;:H1f1:4,F)", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex17", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Vertex" + }, + "name": "Vertex6;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Fuse02:vertex:16", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex6", + "stageId": "Box02" + } + ] + }, + { + "indexedName": "Vertex18", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Vertex" + }, + "name": "Vertex8;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Fuse02:vertex:17", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box02", + "persistentId": "Box02:mapped:Vertex8", + "stageId": "Box02" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fuse02", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fuse02", + "status": "native-evidence" + }, + "shape": { + "edges": 32, + "faces": 16, + "solids": 1, + "valid": true, + "volume": 1314.159265358979 + }, + "typeId": "Part::Fuse" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Fuse03.Shape.Map.txt": { + "sha256": "569f7dd0ed8e0cbf9322a72014500a8acc1ef6dc8a60acc7b7c9bf9288c809b0", + "text": "BeginElementMap v1\n1 PostfixCount 18\nEdge\nFace\nVertex\n;:H62d,E\n;:G(Face5;K-1;:H62d:4,F);FUS;:H62e:1c,V\n;:G2(Face6;K-1;:H62d:4,F);FUS;:H62e:1d,V\n;:M2;FUS;:H62e:8,E\n;:M;FUS;:H62e:7,E\n;:H62e,E\n;:H62d,F\n;:M2;FUS;:H62e:8,F\n;:M;FUS;:H62e:7,F\n;:H62e,F\n;:G2(Face1;K-1;:H62e:4,F);FUS;:H62d:1d,E\n;:M;FUS;:H62d:7,F\n;:G2(Face1;K-2;:H62e:4,F);FUS;:H62d:1d,E\n;:H62d,V\n;:H62e,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 19\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.10 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.e 0\n:1.1.7 0\n:1.3.9 0\n:1.2.9 0\n:1.1.8 0\n\nFace\n\nChildCount 0\n\nNameCount 11\n0\n:2.1.a 0\n:2.3.a 0\n:2.6.f 0\n:2.4.a 0\n:2.5.f 0\n:2.2.a 0\n:2.1.b 0\n:2.1.c 0\n:2.3.d 0\n:2.2.d 0\n\nVertex\n\nChildCount 0\n\nNameCount 13\n0\n:3.1.11 0\n:3.2.11 0\n:3.3.11 0\n:3.4.11 0\n:3.6.11 0\n:3.5.11 0\n:3.7.11 0\n:1.1.6 0\n:3.8.11 0\n:1.1.5 0\n:3.2.12 0\n:3.1.12 0\n\nEndMap\n" + } + }, + "finalObject": "Fuse03", + "id": "boolean-fuse-3", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box03", + "name": "Box03", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box03:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box03:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box03:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box03:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box03:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box03:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box03:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box03:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box03:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box03:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box03:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box03:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box03:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box03:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box03:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box03:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box03:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box03:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box03:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box03:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box03:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box03:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box03:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box03:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box03:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box03:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box03", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box03", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder03", + "name": "Cylinder03", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder03:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder03:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder03:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder03:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder03:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder03:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder03:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder03:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder03", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder03", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 395.84067435231395 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Fuse03.Shape.Map.txt" + ], + "elementMapSize": 40, + "elementMapVersion": "15.70200.5", + "label": "Fuse03", + "name": "Fuse03", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H62d,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H62d,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H62d,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H62d,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H62d:7,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H62d:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H62d,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H62d,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H62d:7,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H62d:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H62d,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H62d,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H62e:8,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H62e:8,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H62e:7,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H62e:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H62e,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face3;:H62e,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H62e,F", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face2;:H62e,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H62d,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H62d,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H62d,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H62d,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H62d,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H62d,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H62d,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H62d,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H62d,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H62e:4,F);FUS;:H62d:1d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H62e:4,F)", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H62e:4,F);FUS;:H62d:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H62d,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H62d,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H62d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H62d,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H62e:4,F);FUS;:H62d:1d,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H62e:4,F)", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H62e:4,F);FUS;:H62d:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H62e:8,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M2;FUS;:H62e:8,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H62e,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge3;:H62e,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H62e,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge2;:H62e,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H62e:7,E", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H62e:7,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H62d,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H62d,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H62d,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H62d,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H62d,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H62d,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H62d,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H62d:4,F);FUS;:H62e:1d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H62d:4,F)", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H62d:4,F);FUS;:H62e:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H62d,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box03", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H62d,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H62d:4,F);FUS;:H62e:1c,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H62d:4,F)", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H62d:4,F);FUS;:H62e:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H62e,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex2;:H62e,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H62e,V", + "object": "Fuse03", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder03", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex1;:H62e,V", + "mappedStringIds": [], + "name": "Vertex12" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 40, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 40, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H62d,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H62d,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse03:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face1", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H62d,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H62d,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse03:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face3", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H62d:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H62d:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse03:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face6", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H62d,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H62d,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse03:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face4", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H62d:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H62d:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fuse03:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face5", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H62d,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H62d,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse03:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face2", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H62e:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H62e:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse03:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Face1", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H62e:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H62e:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Fuse03:face:7", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Face1", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H62e,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face3;:H62e,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse03:face:8", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Face3", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H62e,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face2;:H62e,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fuse03:face:9", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Face2", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse03:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge1", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse03:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge2", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse03:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge3", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse03:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge4", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse03:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge9", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse03:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge5", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse03:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge10", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse03:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge12", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse03:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge6", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H62e:4,F);FUS;:H62d:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H62e:4,F);FUS;:H62d:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse03:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H62e:4,F)", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face6;:G2(Face1;K-2;:H62e:4,F)", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse03:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge11", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse03:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge7", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H62d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H62d,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Fuse03:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box03", + "persistentId": "Box03:mapped:Edge8", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H62e:4,F);FUS;:H62d:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H62e:4,F);FUS;:H62d:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Fuse03:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H62e:4,F)", + "objectId": "Box03", + "persistentId": "Box03:mapped:Face5;:G2(Face1;K-1;:H62e:4,F)", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M2;FUS;:H62e:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M2;FUS;:H62e:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Fuse03:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Edge1", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge3;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Fuse03:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Edge3", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge2;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Fuse03:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Edge2", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H62e:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H62e:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Fuse03:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Edge1", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse03:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex1", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse03:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex2", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse03:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex3", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse03:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex4", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse03:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex6", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse03:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex5", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse03:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex7", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H62d:4,F);FUS;:H62e:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H62d:4,F);FUS;:H62e:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Fuse03:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H62d:4,F)", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Edge1;:G2(Face6;K-1;:H62d:4,F)", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H62d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H62d,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse03:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box03", + "persistentId": "Box03:mapped:Vertex8", + "stageId": "Box03" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H62d:4,F);FUS;:H62e:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H62d:4,F);FUS;:H62e:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse03:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H62d:4,F)", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Edge1;:G(Face5;K-1;:H62d:4,F)", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex2;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse03:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Vertex2", + "stageId": "Cylinder03" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex1;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse03:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Cylinder03", + "persistentId": "Cylinder03:mapped:Vertex1", + "stageId": "Cylinder03" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fuse03", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fuse03", + "status": "native-evidence" + }, + "shape": { + "edges": 18, + "faces": 10, + "solids": 1, + "valid": true, + "volume": 1113.0973355292322 + }, + "typeId": "Part::Fuse" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Cut04.Shape.Map.txt": { + "sha256": "1675b24378aa4400ede7ea39455ed365b944b1c3e593529b6878e26f3c354ffb", + "text": "BeginElementMap v1\n1 PostfixCount 13\nEdge\nFace\nVertex\n;:H62e,E\n;:G(Face5;K-1;:H62e:4,F);CUT;:H62f:1c,V\n;:G2(Face6;K-1;:H62e:4,F);CUT;:H62f:1d,V\n;:M;CUT;:H62f:7,E\n;:H62e,F\n;:M;CUT;:H62f:7,F\n;:G2(Face1;K-1;:H62f:4,F);CUT;:H62e:1d,E\n;:M;CUT;:H62e:7,F\n;:G2(Face1;K-2;:H62f:4,F);CUT;:H62e:1d,E\n;:H62e,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.c 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.a 0\n:1.1.7 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.8 0\n:2.3.8 0\n:2.6.b 0\n:2.4.8 0\n:2.5.b 0\n:2.2.8 0\n:2.1.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:3.1.d 0\n:3.2.d 0\n:3.3.d 0\n:3.4.d 0\n:3.6.d 0\n:3.5.d 0\n:3.7.d 0\n:1.1.6 0\n:3.8.d 0\n:1.1.5 0\n\nEndMap\n" + } + }, + "finalObject": "Cut04", + "id": "boolean-cut-1", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box04", + "name": "Box04", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box04:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box04:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box04:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box04:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box04:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box04:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box04:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box04:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box04:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box04:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box04:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box04:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box04:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box04:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box04:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box04:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box04:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box04:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box04:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box04:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box04:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box04:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box04:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box04:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box04:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box04:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box04", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box04", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder04", + "name": "Cylinder04", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder04:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder04:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder04:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder04:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder04:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder04:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder04:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder04:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder04", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder04", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 703.7167544041135 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Cut04.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Cut04", + "name": "Cut04", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H62e,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H62e,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H62e,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H62e,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H62e:7,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H62e:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H62e,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H62e,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H62e:7,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H62e:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H62e,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H62e,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H62f:7,F", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H62f:7,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H62e,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H62e,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H62e,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H62e,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H62e,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H62e,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H62e,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H62e,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H62e,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H62f:4,F);CUT;:H62e:1d,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H62f:4,F)", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H62f:4,F);CUT;:H62e:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H62e,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H62e,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H62e,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H62e,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H62f:4,F);CUT;:H62e:1d,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H62f:4,F)", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H62f:4,F);CUT;:H62e:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H62f:7,E", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H62f:7,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H62e,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H62e,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H62e,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H62e,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H62e,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H62e,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H62e,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H62e:4,F);CUT;:H62f:1d,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H62e:4,F)", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H62e:4,F);CUT;:H62f:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H62e,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box04", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H62e,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H62e:4,F);CUT;:H62f:1c,V", + "object": "Cut04", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H62e:4,F)", + "object": "Cylinder04", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H62e:4,F);CUT;:H62f:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H62e,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H62e,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut04:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face1", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H62e,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H62e,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut04:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face3", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H62e:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H62e:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut04:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face6", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H62e,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H62e,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut04:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face4", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H62e:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H62e:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Cut04:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face5", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H62e,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H62e,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut04:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face2", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H62f:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H62f:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Cut04:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder04", + "persistentId": "Cylinder04:mapped:Face1", + "stageId": "Cylinder04" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut04:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge1", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut04:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge2", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut04:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge3", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut04:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge4", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut04:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge9", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut04:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge5", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut04:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge10", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Cut04:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge12", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut04:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge6", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H62f:4,F);CUT;:H62e:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H62f:4,F);CUT;:H62e:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut04:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H62f:4,F)", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face6;:G2(Face1;K-2;:H62f:4,F)", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut04:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge11", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Cut04:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge7", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H62e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H62e,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Cut04:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box04", + "persistentId": "Box04:mapped:Edge8", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H62f:4,F);CUT;:H62e:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H62f:4,F);CUT;:H62e:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut04:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H62f:4,F)", + "objectId": "Box04", + "persistentId": "Box04:mapped:Face5;:G2(Face1;K-1;:H62f:4,F)", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H62f:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H62f:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut04:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder04", + "persistentId": "Cylinder04:mapped:Edge1", + "stageId": "Cylinder04" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut04:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex1", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut04:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex2", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut04:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex3", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut04:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex4", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut04:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex6", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut04:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex5", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut04:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex7", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H62e:4,F);CUT;:H62f:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H62e:4,F);CUT;:H62f:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Cut04:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H62e:4,F)", + "objectId": "Cylinder04", + "persistentId": "Cylinder04:mapped:Edge1;:G2(Face6;K-1;:H62e:4,F)", + "stageId": "Cylinder04" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H62e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H62e,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut04:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box04", + "persistentId": "Box04:mapped:Vertex8", + "stageId": "Box04" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H62e:4,F);CUT;:H62f:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H62e:4,F);CUT;:H62f:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut04:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H62e:4,F)", + "objectId": "Cylinder04", + "persistentId": "Cylinder04:mapped:Edge1;:G(Face5;K-1;:H62e:4,F)", + "stageId": "Cylinder04" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Cut04", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cut04", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 497.34517542563293 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Cut05.Shape.Map.txt": { + "sha256": "239f48bed347668c82404b1aa8f82dff27a943a8141650356a18ae490b877c9a", + "text": "BeginElementMap v1\n1 PostfixCount 35\nEdge\nFace\nVertex\n;:G(Face1;K-4;:H7c1:4,F);CUT;:H7c0:1c,V\n;:M2;CUT;:H7c0:8,E\n;:M;CUT;:H7c0:7,E\n;:G(Face1;K-5;:H7c1:4,F);CUT;:H7c0:1c,V\n;:G(Face1;K-6;:H7c1:4,F);CUT;:H7c0:1c,V\n;:H7c0,E\n;:M;CUT;:H7c1:7,E\n;:G(Face1;K-1;:H7c1:4,F);CUT;:H7c0:1c,V\n;:G(Face1;K-2;:H7c1:4,F);CUT;:H7c0:1c,V\n;:G(Edge1;K-1;:H7c1:4,E);CUT;:H7c0:1c,V\n;:G(Edge1;K-2;:H7c1:4,E);CUT;:H7c0:1c,V\n;:G(Face1;K-3;:H7c1:4,F);CUT;:H7c0:1c,V\n;:G(Face1;K-7;:H7c1:4,F);CUT;:H7c0:1c,E\n;:M2;CUT;:H7c0:8,F\n;:M2;CUT;:H7c1:8,F\n;:M3;CUT;:H7c1:8,F\n;:M4;CUT;:H7c1:8,F\n;:M;CUT;:H7c0:7,F\n;:M;CUT;:H7c1:7,F\n;:G(Face1;K-8;:H7c1:4,F);CUT;:H7c0:1c,E\n;:G(Face1;K-9;:H7c1:4,F);CUT;:H7c0:1c,E\n;:G(Face1;K-10;:H7c1:5,F);CUT;:H7c0:1d,E\n;:G2(Face1;K-11;:H7c1:5,F);CUT;:H7c0:1e,E\n;:G3(Face1;K-12;:H7c1:5,F);CUT;:H7c0:1e,E\n;:G4(Face1;K-13;:H7c1:5,F);CUT;:H7c0:1e,E\n;:M3;CUT;:H7c0:8,F\n;:M4;CUT;:H7c0:8,F\n;:G(Face1;K-14;:H7c1:5,F);CUT;:H7c0:1d,E\n;:G2(Face1;K-15;:H7c1:5,F);CUT;:H7c0:1e,E\n;:G3(Face1;K-16;:H7c1:5,F);CUT;:H7c0:1e,E\n;:G4(Face1;K-17;:H7c1:5,F);CUT;:H7c0:1e,E\n;:H7c0,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 33\n0\n:1.2.6 0\n:2.1.10 0\n:1.4.6 0\n:1.1.9 0\n:2.6.20 0\n:1.a.6 0\n:2.3.17 0\n:2.5.1a 0\n:1.9.6 0\n:1.2.5 0\n:1.3.9 0\n:1.4.5 0\n:1.c.6 0\n:2.6.21 0\n:1.b.6 0\n:2.4.18 0\n:2.5.1b 0\n:1.9.5 0\n:1.5.9 0\n:1.a.5 0\n:2.5.19 0\n:1.8.6 0\n:1.6.6 0\n:1.1.a 0\n:2.6.1f 0\n:1.b.5 0\n:1.7.9 0\n:1.c.5 0\n:1.8.5 0\n:2.5.1c 0\n:1.6.5 0\n:2.6.22 0\n\nFace\n\nChildCount 0\n\nNameCount 21\n0\n:2.1.15 0\n:2.6.15 0\n:2.1.13 0\n:2.5.15 0\n:2.3.15 0\n:2.1.11 0\n:2.6.11 0\n:2.4.15 0\n:2.5.11 0\n:2.1.14 0\n:2.3.11 0\n:2.5.1d 0\n:2.2.15 0\n:2.6.1d 0\n:2.1.12 0\n:2.4.11 0\n:2.5.1e 0\n:2.2.11 0\n:2.6.1e 0\n:2.1.16 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n:3.1.23 0\n:1.2.b 0\n:1.4.c 0\n:3.2.23 0\n:1.a.4 0\n:1.9.f 0\n:3.3.23 0\n:3.4.23 0\n:1.c.8 0\n:1.b.7 0\n:3.6.23 0\n:3.5.23 0\n:1.8.e 0\n:1.6.d 0\n:3.8.23 0\n:3.7.23 0\n\nEndMap\n" + } + }, + "finalObject": "Cut05", + "id": "boolean-cut-2", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box05", + "name": "Box05", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box05:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box05:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box05:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box05:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box05:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box05:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box05:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box05:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box05:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box05:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box05:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box05:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box05:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box05:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box05:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box05:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box05:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box05:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box05:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box05:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box05:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box05:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box05:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box05:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box05:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box05:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box05", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box05", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder05", + "name": "Cylinder05", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder05:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder05:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder05:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder05:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder05:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder05:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder05:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder05:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder05", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder05", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 1099.5574287564275 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Cut05.Shape.Map.txt" + ], + "elementMapSize": 68, + "elementMapVersion": "15.70200.5", + "label": "Cut05", + "name": "Cut05", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H7c0:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H7c0:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M3;CUT;:H7c1:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CUT;:H7c1:8,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H7c0:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CUT;:H7c0:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face3;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face1;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M2;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face6;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M;CUT;:H7c0:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face4;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M2;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face5;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M4;CUT;:H7c1:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face1;:M4;CUT;:H7c1:8,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M2;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face3;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M3;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face5;:M3;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M;CUT;:H7c0:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face2;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M3;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face6;:M3;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H7c1:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face1;:M2;CUT;:H7c1:8,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M2;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face4;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M4;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face17", + "indexedStringIds": [], + "mappedName": "Face5;:M4;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M2;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face18", + "indexedStringIds": [], + "mappedName": "Face2;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M4;CUT;:H7c0:8,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Face19", + "indexedStringIds": [], + "mappedName": "Face6;:M4;CUT;:H7c0:8,F", + "mappedStringIds": [], + "name": "Face19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H7c1:7,F", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face20", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H7c1:7,F", + "mappedStringIds": [], + "name": "Face20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H7c1:4,F);CUT;:H7c0:1c,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face1;:G(Face1;K-7;:H7c1:4,F);CUT;:H7c0:1c,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H7c0,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge1;:H7c0,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H7c1:5,F);CUT;:H7c0:1e,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-15;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H7c1:4,F);CUT;:H7c0:1c,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Face3;:G(Face1;K-8;:H7c1:4,F);CUT;:H7c0:1c,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H7c1:5,F);CUT;:H7c0:1e,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-11;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge2;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H7c0,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge3;:H7c0,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge4;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge12;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H7c1:5,F);CUT;:H7c0:1e,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face6;:G3(Face1;K-16;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge11;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H7c1:4,F);CUT;:H7c0:1c,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Face4;:G(Face1;K-9;:H7c1:4,F);CUT;:H7c0:1c,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H7c1:5,F);CUT;:H7c0:1e,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Face5;:G3(Face1;K-12;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge9;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H7c0,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Edge5;:H7c0,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge10;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H7c1:5,F);CUT;:H7c0:1d,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Face5;:G(Face1;K-10;:H7c1:5,F);CUT;:H7c0:1d,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge8;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M;CUT;:H7c0:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Edge6;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H7c1:7,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder05", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H7c1:7,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H7c1:5,F);CUT;:H7c0:1d,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Face6;:G(Face1;K-14;:H7c1:5,F);CUT;:H7c0:1d,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge11;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H7c0,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge7;:H7c0,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge12;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge8;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H7c1:5,F);CUT;:H7c0:1e,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Face5;:G4(Face1;K-13;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M2;CUT;:H7c0:8,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge31", + "indexedStringIds": [], + "mappedName": "Edge6;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "name": "Edge31" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H7c1:5,F);CUT;:H7c0:1e,E", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H7c1:5,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge32", + "indexedStringIds": [], + "mappedName": "Face6;:G4(Face1;K-17;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "name": "Edge32" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H7c1:4,F);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H7c1:4,F);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex2;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H7c1:4,F);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H7c1:4,F);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex3;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Vertex4;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H7c1:4,F);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H7c1:4,F);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H7c1:4,F)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex6;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex5;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H7c1:4,E);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H7c1:4,E)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H7c1:4,E);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H7c1:4,E);CUT;:H7c0:1c,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H7c1:4,E)", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H7c1:4,E);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Vertex8;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H7c0,V", + "object": "Cut05", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box05", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Vertex7;:H7c0,V", + "mappedStringIds": [], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 68, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 68, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H7c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Cut05:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face1", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H7c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Cut05:face:1", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M3;CUT;:H7c1:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face1;:M3;CUT;:H7c1:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut05:face:2", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder05", + "persistentId": "Cylinder05:mapped:Face1", + "stageId": "Cylinder05" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H7c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Cut05:face:3", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face3;:M;CUT;:H7c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Cut05:face:4", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face3", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face1;:M2;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Cut05:face:5", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face1", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face6;:M2;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Cut05:face:6", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face4;:M;CUT;:H7c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Cut05:face:7", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face4", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face5;:M2;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Cut05:face:8", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M4;CUT;:H7c1:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face1;:M4;CUT;:H7c1:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Cut05:face:9", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder05", + "persistentId": "Cylinder05:mapped:Face1", + "stageId": "Cylinder05" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face3;:M2;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "Cut05:face:10", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face3", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M3;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face5;:M3;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Cut05:face:11", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M;CUT;:H7c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face2;:M;CUT;:H7c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Cut05:face:12", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face2", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M3;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face6;:M3;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Cut05:face:13", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;CUT;:H7c1:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face1;:M2;CUT;:H7c1:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut05:face:14", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder05", + "persistentId": "Cylinder05:mapped:Face1", + "stageId": "Cylinder05" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face4;:M2;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Cut05:face:15", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face4", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face17", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M4;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Face" + }, + "name": "Face5;:M4;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Cut05:face:16", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face18", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M2;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Face" + }, + "name": "Face2;:M2;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Cut05:face:17", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face2", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face19", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M4;CUT;:H7c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Face" + }, + "name": "Face6;:M4;CUT;:H7c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "Cut05:face:18", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Face20", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H7c1:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H7c1:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Cut05:face:19", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder05", + "persistentId": "Cylinder05:mapped:Face1", + "stageId": "Cylinder05" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Cut05:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge2", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:G(Face1;K-7;:H7c1:4,F);CUT;:H7c0:1c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face1;:G(Face1;K-7;:H7c1:4,F);CUT;:H7c0:1c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Cut05:edge:1", + "sourceRefs": [ + { + "mappedName": "Face1;:G(Face1;K-7;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face1;:G(Face1;K-7;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge4;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut05:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge4", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H7c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge1;:H7c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut05:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge1", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-15;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-15;:H7c1:5,F);CUT;:H7c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Cut05:edge:4", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-15;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6;:G2(Face1;K-15;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge10;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Cut05:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge10", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face3;:G(Face1;K-8;:H7c1:4,F);CUT;:H7c0:1c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Face3;:G(Face1;K-8;:H7c1:4,F);CUT;:H7c0:1c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 6, + "resultPersistentId": "Cut05:edge:6", + "sourceRefs": [ + { + "mappedName": "Face3;:G(Face1;K-8;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face3;:G(Face1;K-8;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-11;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-11;:H7c1:5,F);CUT;:H7c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Cut05:edge:7", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-11;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5;:G2(Face1;K-11;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Cut05:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge9", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge2;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Cut05:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge2", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H7c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge3;:H7c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut05:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge3", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge4;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Cut05:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge4", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge12;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Cut05:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge12", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G3(Face1;K-16;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face6;:G3(Face1;K-16;:H7c1:5,F);CUT;:H7c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut05:edge:13", + "sourceRefs": [ + { + "mappedName": "Face6;:G3(Face1;K-16;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6;:G3(Face1;K-16;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge11;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut05:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge11", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face4;:G(Face1;K-9;:H7c1:4,F);CUT;:H7c0:1c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Face4;:G(Face1;K-9;:H7c1:4,F);CUT;:H7c0:1c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "Cut05:edge:15", + "sourceRefs": [ + { + "mappedName": "Face4;:G(Face1;K-9;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face4;:G(Face1;K-9;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G3(Face1;K-12;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Face5;:G3(Face1;K-12;:H7c1:5,F);CUT;:H7c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 16, + "resultPersistentId": "Cut05:edge:16", + "sourceRefs": [ + { + "mappedName": "Face5;:G3(Face1;K-12;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5;:G3(Face1;K-12;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge9;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Cut05:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge9", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H7c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Edge5;:H7c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Cut05:edge:18", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge5", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge10;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Cut05:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge10", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G(Face1;K-10;:H7c1:5,F);CUT;:H7c0:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Face5;:G(Face1;K-10;:H7c1:5,F);CUT;:H7c0:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 20, + "resultPersistentId": "Cut05:edge:20", + "sourceRefs": [ + { + "mappedName": "Face5;:G(Face1;K-10;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5;:G(Face1;K-10;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge8;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Cut05:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge8", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M;CUT;:H7c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Edge6;:M;CUT;:H7c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 22, + "resultPersistentId": "Cut05:edge:22", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H7c1:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H7c1:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 23, + "resultPersistentId": "Cut05:edge:23", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder05", + "persistentId": "Cylinder05:mapped:Edge1", + "stageId": "Cylinder05" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G(Face1;K-14;:H7c1:5,F);CUT;:H7c0:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Face6;:G(Face1;K-14;:H7c1:5,F);CUT;:H7c0:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 24, + "resultPersistentId": "Cut05:edge:24", + "sourceRefs": [ + { + "mappedName": "Face6;:G(Face1;K-14;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6;:G(Face1;K-14;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge11;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 25, + "resultPersistentId": "Cut05:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge11", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H7c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge7;:H7c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 26, + "resultPersistentId": "Cut05:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge7", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge12;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 27, + "resultPersistentId": "Cut05:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge12", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge8;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 28, + "resultPersistentId": "Cut05:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge8", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G4(Face1;K-13;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Face5;:G4(Face1;K-13;:H7c1:5,F);CUT;:H7c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 29, + "resultPersistentId": "Cut05:edge:29", + "sourceRefs": [ + { + "mappedName": "Face5;:G4(Face1;K-13;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face5;:G4(Face1;K-13;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge31", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M2;CUT;:H7c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 31, + "type": "Edge" + }, + "name": "Edge6;:M2;CUT;:H7c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 30, + "resultPersistentId": "Cut05:edge:30", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Edge32", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G4(Face1;K-17;:H7c1:5,F);CUT;:H7c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 32, + "type": "Edge" + }, + "name": "Face6;:G4(Face1;K-17;:H7c1:5,F);CUT;:H7c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 31, + "resultPersistentId": "Cut05:edge:31", + "sourceRefs": [ + { + "mappedName": "Face6;:G4(Face1;K-17;:H7c1:5,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Face6;:G4(Face1;K-17;:H7c1:5,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut05:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex1", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:H7c1:4,F);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Cut05:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge2;:G(Face1;K-1;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:H7c1:4,F);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Cut05:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge4;:G(Face1;K-2;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex2;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut05:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex2", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:H7c1:4,F);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Cut05:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge10;:G(Face1;K-4;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:H7c1:4,F);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Cut05:vertex:5", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge9;:G(Face1;K-3;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex3;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut05:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex3", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex4;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Cut05:vertex:7", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex4", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:H7c1:4,F);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Cut05:vertex:8", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge12;:G(Face1;K-6;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:H7c1:4,F);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:H7c1:4,F);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut05:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:H7c1:4,F)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge11;:G(Face1;K-5;:H7c1:4,F)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex6;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut05:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex6", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex5;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Cut05:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex5", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge8;:G(Edge1;K-2;:H7c1:4,E);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Edge8;:G(Edge1;K-2;:H7c1:4,E);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Cut05:vertex:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:G(Edge1;K-2;:H7c1:4,E)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge8;:G(Edge1;K-2;:H7c1:4,E)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge6;:G(Edge1;K-1;:H7c1:4,E);CUT;:H7c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Edge6;:G(Edge1;K-1;:H7c1:4,E);CUT;:H7c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut05:vertex:13", + "sourceRefs": [ + { + "mappedName": "Edge6;:G(Edge1;K-1;:H7c1:4,E)", + "objectId": "Box05", + "persistentId": "Box05:mapped:Edge6;:G(Edge1;K-1;:H7c1:4,E)", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Vertex8;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Cut05:vertex:14", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex8", + "stageId": "Box05" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H7c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Vertex7;:H7c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Cut05:vertex:15", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box05", + "persistentId": "Box05:mapped:Vertex7", + "stageId": "Box05" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Cut05", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cut05", + "status": "native-evidence" + }, + "shape": { + "edges": 32, + "faces": 20, + "solids": 4, + "valid": true, + "volume": 214.60183660255157 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Cut06.Shape.Map.txt": { + "sha256": "1499e5e60aaef34795e2aa46fcc823c26ec93238a0dd0a887dae92e575e4ae2e", + "text": "BeginElementMap v1\n1 PostfixCount 13\nEdge\nFace\nVertex\n;:Hf70,E\n;:G(Face5;K-1;:Hf70:4,F);CUT;:Hf71:1c,V\n;:G2(Face6;K-1;:Hf70:4,F);CUT;:Hf71:1d,V\n;:M;CUT;:Hf71:7,E\n;:Hf70,F\n;:M;CUT;:Hf71:7,F\n;:G2(Face1;K-1;:Hf71:4,F);CUT;:Hf70:1d,E\n;:M;CUT;:Hf70:7,F\n;:G2(Face1;K-2;:Hf71:4,F);CUT;:Hf70:1d,E\n;:Hf70,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.c 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.a 0\n:1.1.7 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.8 0\n:2.3.8 0\n:2.6.b 0\n:2.4.8 0\n:2.5.b 0\n:2.2.8 0\n:2.1.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:3.1.d 0\n:3.2.d 0\n:3.3.d 0\n:3.4.d 0\n:3.6.d 0\n:3.5.d 0\n:3.7.d 0\n:1.1.6 0\n:3.8.d 0\n:1.1.5 0\n\nEndMap\n" + } + }, + "finalObject": "Cut06", + "id": "boolean-cut-3", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box06", + "name": "Box06", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box06:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box06:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box06:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box06:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box06:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box06:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box06:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box06:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box06:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box06:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box06:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box06:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box06:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box06:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box06:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box06:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box06:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box06:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box06:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box06:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box06:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box06:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box06:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box06:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box06:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box06:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box06", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box06", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder06", + "name": "Cylinder06", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder06:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder06:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder06:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder06:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder06:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder06:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder06:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder06:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder06", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder06", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 395.84067435231395 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Cut06.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Cut06", + "name": "Cut06", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:Hf70,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:Hf70,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:Hf70,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:Hf70,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:Hf70:7,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:Hf70:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:Hf70,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:Hf70,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:Hf70:7,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:Hf70:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:Hf70,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:Hf70,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:Hf71:7,F", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:Hf71:7,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:Hf70,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:Hf70,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:Hf70,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:Hf70,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:Hf70,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:Hf70,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:Hf70,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:Hf70,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:Hf70,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:Hf71:4,F);CUT;:Hf70:1d,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:Hf71:4,F)", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:Hf71:4,F);CUT;:Hf70:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:Hf70,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:Hf70,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:Hf70,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:Hf70,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:Hf71:4,F);CUT;:Hf70:1d,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:Hf71:4,F)", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:Hf71:4,F);CUT;:Hf70:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:Hf71:7,E", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:Hf71:7,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:Hf70:4,F);CUT;:Hf71:1d,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:Hf70:4,F)", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:Hf70:4,F);CUT;:Hf71:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:Hf70,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box06", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:Hf70,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:Hf70:4,F);CUT;:Hf71:1c,V", + "object": "Cut06", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:Hf70:4,F)", + "object": "Cylinder06", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:Hf70:4,F);CUT;:Hf71:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:Hf70,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:Hf70,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut06:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face1", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:Hf70,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:Hf70,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut06:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face3", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:Hf70:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;CUT;:Hf70:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut06:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face6", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:Hf70,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:Hf70,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut06:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face4", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:Hf70:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CUT;:Hf70:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Cut06:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face5", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:Hf70,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:Hf70,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut06:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face2", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:Hf71:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M;CUT;:Hf71:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Cut06:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder06", + "persistentId": "Cylinder06:mapped:Face1", + "stageId": "Cylinder06" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut06:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge1", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut06:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge2", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut06:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge3", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut06:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge4", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut06:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge9", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut06:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge5", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut06:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge10", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Cut06:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge12", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut06:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge6", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:Hf71:4,F);CUT;:Hf70:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:Hf71:4,F);CUT;:Hf70:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut06:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:Hf71:4,F)", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face6;:G2(Face1;K-2;:Hf71:4,F)", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut06:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge11", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Cut06:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge7", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:Hf70,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:Hf70,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Cut06:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box06", + "persistentId": "Box06:mapped:Edge8", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:Hf71:4,F);CUT;:Hf70:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:Hf71:4,F);CUT;:Hf70:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut06:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:Hf71:4,F)", + "objectId": "Box06", + "persistentId": "Box06:mapped:Face5;:G2(Face1;K-1;:Hf71:4,F)", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:Hf71:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:Hf71:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut06:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder06", + "persistentId": "Cylinder06:mapped:Edge1", + "stageId": "Cylinder06" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut06:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex1", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut06:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex2", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut06:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex3", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut06:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex4", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut06:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex6", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut06:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex5", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut06:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex7", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:Hf70:4,F);CUT;:Hf71:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:Hf70:4,F);CUT;:Hf71:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Cut06:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:Hf70:4,F)", + "objectId": "Cylinder06", + "persistentId": "Cylinder06:mapped:Edge1;:G2(Face6;K-1;:Hf70:4,F)", + "stageId": "Cylinder06" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:Hf70,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:Hf70,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut06:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box06", + "persistentId": "Box06:mapped:Vertex8", + "stageId": "Box06" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:Hf70:4,F);CUT;:Hf71:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:Hf70:4,F);CUT;:Hf71:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut06:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:Hf70:4,F)", + "objectId": "Cylinder06", + "persistentId": "Cylinder06:mapped:Edge1;:G(Face5;K-1;:Hf70:4,F)", + "stageId": "Cylinder06" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Cut06", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cut06", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 717.2566611769184 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Common07.Shape.Map.txt": { + "sha256": "e671f118ca07333ad83792766d6d37190e4e3ba1db3aa0c481697cd1c8382c69", + "text": "BeginElementMap v1\n1 PostfixCount 10\nEdge\nFace\nVertex\n;:G(Face5;K-1;:H1159:4,F);CMN;:H115a:1d,V\n;:G2(Face6;K-1;:H1159:4,F);CMN;:H115a:1e,V\n;:M;CMN;:H115a:7,E\n;:M;CMN;:H115a:7,F\n;:G2(Face1;K-1;:H115a:4,F);CMN;:H1159:1e,E\n;:M;CMN;:H1159:7,F\n;:G2(Face1;K-2;:H115a:4,F);CMN;:H1159:1e,E\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 4\n0\n:2.6.a 0\n:2.5.8 0\n:1.1.6 0\n\nFace\n\nChildCount 0\n\nNameCount 4\n0\n:2.6.9 0\n:2.1.7 0\n:2.5.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 3\n0\n:1.1.5 0\n:1.1.4 0\n\nEndMap\n" + } + }, + "finalObject": "Common07", + "id": "boolean-common-1", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box07", + "name": "Box07", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box07:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box07:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box07:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box07:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box07:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box07:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box07:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box07:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box07:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box07:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box07:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box07:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box07:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box07:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box07:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box07:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box07:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box07:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box07:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box07:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box07:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box07:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box07:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box07:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box07:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box07:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box07", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box07", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder07", + "name": "Cylinder07", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder07:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder07:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder07:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder07:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder07:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder07:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder07:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder07:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder07", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder07", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 703.7167544041135 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Common07.Shape.Map.txt" + ], + "elementMapSize": 8, + "elementMapVersion": "15.70200.5", + "label": "Common07", + "name": "Common07", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CMN;:H1159:7,F", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face6;:M;CMN;:H1159:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CMN;:H115a:7,F", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face1;:M;CMN;:H115a:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CMN;:H1159:7,F", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face5;:M;CMN;:H1159:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H115a:4,F);CMN;:H1159:1e,E", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H115a:4,F)", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H115a:4,F);CMN;:H1159:1e,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H115a:4,F);CMN;:H1159:1e,E", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H115a:4,F)", + "object": "Box07", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H115a:4,F);CMN;:H1159:1e,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CMN;:H115a:7,E", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CMN;:H115a:7,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H1159:4,F);CMN;:H115a:1e,V", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H1159:4,F)", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H1159:4,F);CMN;:H115a:1e,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H1159:4,F);CMN;:H115a:1d,V", + "object": "Common07", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H1159:4,F)", + "object": "Cylinder07", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H1159:4,F);CMN;:H115a:1d,V", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CMN;:H1159:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face6;:M;CMN;:H1159:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Common07:face:0", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box07", + "persistentId": "Box07:mapped:Face6", + "stageId": "Box07" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CMN;:H115a:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face1;:M;CMN;:H115a:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Common07:face:1", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder07", + "persistentId": "Cylinder07:mapped:Face1", + "stageId": "Cylinder07" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CMN;:H1159:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face5;:M;CMN;:H1159:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common07:face:2", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box07", + "persistentId": "Box07:mapped:Face5", + "stageId": "Box07" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H115a:4,F);CMN;:H1159:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H115a:4,F);CMN;:H1159:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Common07:edge:0", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H115a:4,F)", + "objectId": "Box07", + "persistentId": "Box07:mapped:Face6;:G2(Face1;K-2;:H115a:4,F)", + "stageId": "Box07" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H115a:4,F);CMN;:H1159:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H115a:4,F);CMN;:H1159:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Common07:edge:1", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H115a:4,F)", + "objectId": "Box07", + "persistentId": "Box07:mapped:Face5;:G2(Face1;K-1;:H115a:4,F)", + "stageId": "Box07" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CMN;:H115a:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge1;:M;CMN;:H115a:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common07:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder07", + "persistentId": "Cylinder07:mapped:Edge1", + "stageId": "Cylinder07" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H1159:4,F);CMN;:H115a:1e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H1159:4,F);CMN;:H115a:1e,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Common07:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H1159:4,F)", + "objectId": "Cylinder07", + "persistentId": "Cylinder07:mapped:Edge1;:G2(Face6;K-1;:H1159:4,F)", + "stageId": "Cylinder07" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H1159:4,F);CMN;:H115a:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H1159:4,F);CMN;:H115a:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Common07:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H1159:4,F)", + "objectId": "Cylinder07", + "persistentId": "Cylinder07:mapped:Edge1;:G(Face5;K-1;:H1159:4,F)", + "stageId": "Cylinder07" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Common07", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Common07", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 502.6548245743668 + }, + "typeId": "Part::Common" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Common08.Shape.Map.txt": { + "sha256": "1e705205be9aaa4b64bc01915c7479fef4647dc43607f146b0a76da68cd535d5", + "text": "BeginElementMap v1\n1 PostfixCount 23\nEdge\nFace\nVertex\n;:G(Face1;K-4;:Had0:4,F);CMN;:Hacf:1c,V\n;:G(Face1;K-5;:Had0:4,F);CMN;:Hacf:1c,V\n;:G(Face1;K-6;:Had0:4,F);CMN;:Hacf:1c,V\n;:G(Face1;K-1;:Had0:4,F);CMN;:Hacf:1c,V\n;:G(Face1;K-2;:Had0:4,F);CMN;:Hacf:1c,V\n;:G(Face1;K-3;:Had0:4,F);CMN;:Hacf:1c,V\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E);RFI;:Had0:b8,F\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:U;RFI;:Had0:7,V\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E;:U2;RFI;:Had0:8,V\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E);RFI;:Had0:b9,F\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E\n;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 10\n0\n:2.1.16 0\n:2.1.15 0\n:2.1.b 0\n:2.1.17 0\n:2.1.e 0\n:2.1.10 0\n:2.1.12 0\n:2.1.13 0\n:2.1.14 0\n\nFace\n\nChildCount 0\n\nNameCount 4\n0\n:2.1.c 0\n:2.1.a 0\n:2.1.11 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n:1.2.7 0\n:1.c.6 0\n:2.1.d 0\n:1.a.4 0\n:2.1.f 0\n:1.9.9 0\n:1.4.8 0\n:1.b.5 0\n\nEndMap\n" + } + }, + "finalObject": "Common08", + "id": "boolean-common-2", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box08", + "name": "Box08", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box08:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box08:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box08:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box08:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box08:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box08:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box08:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box08:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box08:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box08:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box08:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box08:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box08:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box08:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box08:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box08:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box08:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box08:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box08:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box08:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box08:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box08:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box08:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box08:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box08:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box08:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box08", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box08", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder08", + "name": "Cylinder08", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder08:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder08:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder08:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder08:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder08:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder08:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder08:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder08:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder08", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder08", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 1099.5574287564275 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Common08.Shape.Map.txt" + ], + "elementMapSize": 20, + "elementMapVersion": "15.70200.5", + "label": "Common08", + "name": "Common08", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E);RFI;:Had0:b8,F", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E)", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E);RFI;:Had0:b8,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E);RFI;:Had0:b9,F", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E)", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E);RFI;:Had0:b9,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:Had0:4,F);CMN;:Hacf:1c,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:Had0:4,F)", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:Had0:4,F);CMN;:Hacf:1c,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:Had0:4,F)", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E", + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:U;RFI;:Had0:7,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:U;RFI;:Had0:7,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:Had0:4,F);CMN;:Hacf:1c,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:Had0:4,F)", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [ + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E", + "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "Face1;:M3;CMN;:Had0:8,F" + ], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E;:U2;RFI;:Had0:8,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder08", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E;:U2;RFI;:Had0:8,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:Had0:4,F);CMN;:Hacf:1c,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:Had0:4,F)", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:Had0:4,F);CMN;:Hacf:1c,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:Had0:4,F)", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:Had0:4,F);CMN;:Hacf:1c,V", + "object": "Common08", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:Had0:4,F)", + "object": "Box08", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 20, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 20, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E);RFI;:Had0:b8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E);RFI;:Had0:b8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Common08:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E)", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E)", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Common08:face:1", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E);RFI;:Had0:b9,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E);RFI;:Had0:b9,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common08:face:2", + "sourceRefs": [ + { + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E)", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E;:L(Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E|Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E)", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U9;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Common08:edge:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U8;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Common08:edge:1", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common08:edge:2", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U;RFI;:Had0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Common08:edge:3", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Common08:edge:4", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U4;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Common08:edge:5", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U5;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Common08:edge:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U6;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Common08:edge:7", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U7;RFI;:Had0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Common08:edge:8", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:Had0:4,F);CMN;:Hacf:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Common08:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:Had0:4,F)", + "objectId": "Box08", + "persistentId": "Box08:mapped:Edge2;:G(Face1;K-1;:Had0:4,F)", + "stageId": "Box08" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:Had0:4,F);CMN;:Hacf:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Common08:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:Had0:4,F)", + "objectId": "Box08", + "persistentId": "Box08:mapped:Edge12;:G(Face1;K-6;:Had0:4,F)", + "stageId": "Box08" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:U;RFI;:Had0:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U2;RFI;:Had0:8,E;:U;RFI;:Had0:7,V", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common08:vertex:2", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:Had0:4,F);CMN;:Hacf:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Common08:vertex:3", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:Had0:4,F)", + "objectId": "Box08", + "persistentId": "Box08:mapped:Edge10;:G(Face1;K-4;:Had0:4,F)", + "stageId": "Box08" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E;:U2;RFI;:Had0:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Face1;:M3;CMN;:Had0:8,F;:M;RFI;:Had0:7,F;:U3;RFI;:Had0:8,E;:U2;RFI;:Had0:8,V", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Common08:vertex:4", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder08", + "persistentId": "Cylinder08:mapped:Face1", + "stageId": "Cylinder08" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:Had0:4,F);CMN;:Hacf:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Common08:vertex:5", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:Had0:4,F)", + "objectId": "Box08", + "persistentId": "Box08:mapped:Edge9;:G(Face1;K-3;:Had0:4,F)", + "stageId": "Box08" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:Had0:4,F);CMN;:Hacf:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 6, + "resultPersistentId": "Common08:vertex:6", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:Had0:4,F)", + "objectId": "Box08", + "persistentId": "Box08:mapped:Edge4;:G(Face1;K-2;:Had0:4,F)", + "stageId": "Box08" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:Had0:4,F);CMN;:Hacf:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:Had0:4,F);CMN;:Hacf:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Common08:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:Had0:4,F)", + "objectId": "Box08", + "persistentId": "Box08:mapped:Edge11;:G(Face1;K-5;:Had0:4,F)", + "stageId": "Box08" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Common08", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Common08", + "status": "native-evidence" + }, + "shape": { + "edges": 9, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 785.3981633974482 + }, + "typeId": "Part::Common" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Common09.Shape.Map.txt": { + "sha256": "420b672cf410762c178e47be9cea8c8b37c6f6d1a8d64987553969cf73a7a2d5", + "text": "BeginElementMap v1\n1 PostfixCount 10\nEdge\nFace\nVertex\n;:G(Face5;K-1;:H118a:4,F);CMN;:H118b:1d,V\n;:G2(Face6;K-1;:H118a:4,F);CMN;:H118b:1e,V\n;:M;CMN;:H118b:7,E\n;:M;CMN;:H118b:7,F\n;:G2(Face1;K-1;:H118b:4,F);CMN;:H118a:1e,E\n;:M;CMN;:H118a:7,F\n;:G2(Face1;K-2;:H118b:4,F);CMN;:H118a:1e,E\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 4\n0\n:2.6.a 0\n:2.5.8 0\n:1.1.6 0\n\nFace\n\nChildCount 0\n\nNameCount 4\n0\n:2.6.9 0\n:2.1.7 0\n:2.5.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 3\n0\n:1.1.5 0\n:1.1.4 0\n\nEndMap\n" + } + }, + "finalObject": "Common09", + "id": "boolean-common-3", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box09", + "name": "Box09", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box09:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box09:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box09:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box09:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box09:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box09:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box09:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box09:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box09:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box09:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box09:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box09:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box09:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box09:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box09:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box09:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box09:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box09:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box09:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box09:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box09:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box09:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box09:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box09:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box09:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box09:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box09", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box09", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder09", + "name": "Cylinder09", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder09:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder09:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder09:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder09:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder09:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder09:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder09:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder09:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder09", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder09", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 395.84067435231395 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Common09.Shape.Map.txt" + ], + "elementMapSize": 8, + "elementMapVersion": "15.70200.5", + "label": "Common09", + "name": "Common09", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CMN;:H118a:7,F", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face6;:M;CMN;:H118a:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CMN;:H118b:7,F", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face1;:M;CMN;:H118b:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CMN;:H118a:7,F", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face5;:M;CMN;:H118a:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H118b:4,F);CMN;:H118a:1e,E", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H118b:4,F)", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H118b:4,F);CMN;:H118a:1e,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H118b:4,F);CMN;:H118a:1e,E", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H118b:4,F)", + "object": "Box09", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H118b:4,F);CMN;:H118a:1e,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CMN;:H118b:7,E", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CMN;:H118b:7,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H118a:4,F);CMN;:H118b:1e,V", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H118a:4,F)", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H118a:4,F);CMN;:H118b:1e,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H118a:4,F);CMN;:H118b:1d,V", + "object": "Common09", + "typeId": "Part::Common" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H118a:4,F)", + "object": "Cylinder09", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H118a:4,F);CMN;:H118b:1d,V", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CMN;:H118a:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face6;:M;CMN;:H118a:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Common09:face:0", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box09", + "persistentId": "Box09:mapped:Face6", + "stageId": "Box09" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CMN;:H118b:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face1;:M;CMN;:H118b:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Common09:face:1", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder09", + "persistentId": "Cylinder09:mapped:Face1", + "stageId": "Cylinder09" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CMN;:H118a:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face5;:M;CMN;:H118a:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common09:face:2", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box09", + "persistentId": "Box09:mapped:Face5", + "stageId": "Box09" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H118b:4,F);CMN;:H118a:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H118b:4,F);CMN;:H118a:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Common09:edge:0", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H118b:4,F)", + "objectId": "Box09", + "persistentId": "Box09:mapped:Face6;:G2(Face1;K-2;:H118b:4,F)", + "stageId": "Box09" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H118b:4,F);CMN;:H118a:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H118b:4,F);CMN;:H118a:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Common09:edge:1", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H118b:4,F)", + "objectId": "Box09", + "persistentId": "Box09:mapped:Face5;:G2(Face1;K-1;:H118b:4,F)", + "stageId": "Box09" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CMN;:H118b:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge1;:M;CMN;:H118b:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Common09:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder09", + "persistentId": "Cylinder09:mapped:Edge1", + "stageId": "Cylinder09" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H118a:4,F);CMN;:H118b:1e,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H118a:4,F);CMN;:H118b:1e,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Common09:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H118a:4,F)", + "objectId": "Cylinder09", + "persistentId": "Cylinder09:mapped:Edge1;:G2(Face6;K-1;:H118a:4,F)", + "stageId": "Cylinder09" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H118a:4,F);CMN;:H118b:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H118a:4,F);CMN;:H118b:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Common09:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H118a:4,F)", + "objectId": "Cylinder09", + "persistentId": "Cylinder09:mapped:Edge1;:G(Face5;K-1;:H118a:4,F)", + "stageId": "Cylinder09" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Common09", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Common09", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 282.7433388230814 + }, + "typeId": "Part::Common" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Body10.Shape.Map.txt": { + "sha256": "745a7bc895732286a9755958fa414df1ecc098b44e2d296330f8bed50b7b9d4b", + "text": "BeginElementMap v1\n1 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H383:7,E\n;:G0;XTR;:H383:8,F\n;:U;XTR;:H383:7,E\n;:U;XTR;:H383:7,V\n;:H383,V\n;:H383,E\n;:G;XTR;:H383:7,F\n;FAC;:H383:4,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 12 900 1 ;:H384,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 6 900 1 ;:H384,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 8 900 1 ;:H384,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad10.AddSubShape.Map.txt": { + "sha256": "2b0a7e3db7e0cc57aa3e31cee321352c5326461458c778b12175c435ef935e10", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H383:7,E\n;:G0;XTR;:H383:8,F\n;:U;XTR;:H383:7,E\n;:U;XTR;:H383:7,V\n;:H383,V\n;:H383,E\n;:G;XTR;:H383:7,F\n;FAC;:H383:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad10.Shape.Map.txt": { + "sha256": "2f5716684a5a19174a400302bf1b964752ac354b6e1cd659893461b1b50c8342", + "text": "BeginElementMap v1\n2 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H383:7,E\n;:G0;XTR;:H383:8,F\n;:U;XTR;:H383:7,E\n;:U;XTR;:H383:7,V\n;:H383,V\n;:H383,E\n;:G;XTR;:H383:7,F\n;FAC;:H383:4,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Sketch10.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pad10", + "id": "partdesign-plain", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body10.Shape.Map.txt" + ], + "elementMapSize": 26, + "elementMapVersion": "15.70200.5", + "label": "Body10", + "name": "Body10", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:G;XTR;:H383:7,F;:H384,F", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:H383,E" + ], + "mappedName": "#d:1;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:G;XTR;:H383:7,F;:H384,F", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:H383,E" + ], + "mappedName": "#d:2;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:G;XTR;:H383:7,F;:H384,F", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:H383,E" + ], + "mappedName": "#d:3;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:G;XTR;:H383:7,F;:H384,F", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:H383,E" + ], + "mappedName": "#d:4;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;FAC;:H383:4,F;:H384,F", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:H383,E" + ], + "mappedName": "#d:1;FAC;:H383:4,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H383:4,F;:H384,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:G0;XTR;:H383:8,F;:H384,F", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;FAC;:H383:4,F", + "#b:1;:H383,E" + ], + "mappedName": "#14:1;:G0;XTR;:H383:8,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H383:8,F;:H384,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:G;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2:1;:H383,V" + ], + "mappedName": "#f:1;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:G;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4:2;:H383,V" + ], + "mappedName": "#10:2;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H383,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:1;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:U;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;:G;XTR;:H383:7,F", + "#b:1;:H383,E" + ], + "mappedName": "#16:1;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:G;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6:2;:H383,V" + ], + "mappedName": "#11:2;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H383,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:2;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:U;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:2;:G;XTR;:H383:7,F", + "#b:2;:H383,E" + ], + "mappedName": "#16:2;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:G;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8:2;:H383,V" + ], + "mappedName": "#12:2;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H383,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:3;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:U;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:3;:G;XTR;:H383:7,F", + "#b:3;:H383,E" + ], + "mappedName": "#16:3;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H383,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:4;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:U;XTR;:H383:7,E;:H384,E", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:4;:G;XTR;:H383:7,F", + "#b:4;:H383,E" + ], + "mappedName": "#16:4;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H383,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2:1;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H383,V;:H384,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:U;XTR;:H383:7,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#f:1;:G;XTR;:H383:7,E", + "#2:1;:H383,V" + ], + "mappedName": "#18:1;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H383,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#4:2;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H383,V;:H384,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:U;XTR;:H383:7,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#10:2;:G;XTR;:H383:7,E", + "#4:2;:H383,V" + ], + "mappedName": "#19:2;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H383,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#6:2;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H383,V;:H384,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:U;XTR;:H383:7,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#11:2;:G;XTR;:H383:7,E", + "#6:2;:H383,V" + ], + "mappedName": "#1a:2;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H383,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#8:2;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H383,V;:H384,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:U;XTR;:H383:7,V;:H384,V", + "object": "Body10", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#12:2;:G;XTR;:H383:7,E", + "#8:2;:H383,V" + ], + "mappedName": "#1b:2;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H383:7,F;:H384,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body10:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:H383:7,F", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#d:1;:G;XTR;:H383:7,F", + "stageId": "Pad10" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H383:7,F;:H384,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body10:face:1", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:H383:7,F", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#d:2;:G;XTR;:H383:7,F", + "stageId": "Pad10" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H383:7,F;:H384,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Body10:face:2", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:H383:7,F", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#d:3;:G;XTR;:H383:7,F", + "stageId": "Pad10" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H383:7,F;:H384,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H383:7,F;:H384,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Body10:face:3", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:H383:7,F", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#d:4;:G;XTR;:H383:7,F", + "stageId": "Pad10" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g4;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H383:4,F;:H384,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H383:4,F;:H384,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body10:face:4", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:H383:4,F", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#d:1;FAC;:H383:4,F", + "stageId": "Pad10" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H383:8,F;:H384,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H383:8,F;:H384,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Body10:face:5", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:H383:8,F", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#14:1;:G0;XTR;:H383:8,F", + "stageId": "Pad10" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body10:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#f:1;:G;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v11;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body10:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#10:2;:G;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H383,E;:H384,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body10:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:H383,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#b:1;:H383,E", + "stageId": "Pad10" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body10:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#16:1;:U;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Body10:edge:4", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#11:2;:G;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H383,E;:H384,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body10:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:2;:H383,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#b:2;:H383,E", + "stageId": "Pad10" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body10:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#16:2;:U;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Body10:edge:7", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#12:2;:G;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H383,E;:H384,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body10:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:3;:H383,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#b:3;:H383,E", + "stageId": "Pad10" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body10:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#16:3;:U;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H383,E;:H384,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H383,E;:H384,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body10:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:4;:H383,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#b:4;:H383,E", + "stageId": "Pad10" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g4;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H383:7,E;:H384,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H383:7,E;:H384,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body10:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:H383:7,E", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#16:4;:U;XTR;:H383:7,E", + "stageId": "Pad10" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g4;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H383,V;:H384,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H383,V;:H384,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body10:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:H383,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#2:1;:H383,V", + "stageId": "Pad10" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v11;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H383:7,V;:H384,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body10:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:H383:7,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#18:1;:U;XTR;:H383:7,V", + "stageId": "Pad10" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v11;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H383,V;:H384,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H383,V;:H384,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body10:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:H383,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#4:2;:H383,V", + "stageId": "Pad10" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H383:7,V;:H384,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body10:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:H383:7,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#19:2;:U;XTR;:H383:7,V", + "stageId": "Pad10" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H383,V;:H384,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H383,V;:H384,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body10:vertex:4", + "sourceRefs": [ + { + "mappedName": "#6:2;:H383,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#6:2;:H383,V", + "stageId": "Pad10" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H383:7,V;:H384,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body10:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:H383:7,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#1a:2;:U;XTR;:H383:7,V", + "stageId": "Pad10" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H383,V;:H384,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H383,V;:H384,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body10:vertex:6", + "sourceRefs": [ + { + "mappedName": "#8:2;:H383,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#8:2;:H383,V", + "stageId": "Pad10" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H383:7,V;:H384,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H383:7,V;:H384,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body10:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:H383:7,V", + "objectId": "Pad10", + "persistentId": "Pad10:mapped:#1b:2;:U;XTR;:H383:7,V", + "stageId": "Pad10" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3v22;SKT", + "stageId": "Sketch10" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body10", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body10", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 112 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch10.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch10", + "name": "Sketch10", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch10:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch10:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch10:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch10:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch10:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch10:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch10:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch10:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch10", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch10", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad10.AddSubShape.Map.txt", + "Pad10.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad10", + "name": "Pad10", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:H383,E" + ], + "mappedName": "#d:1;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:H383,E" + ], + "mappedName": "#d:2;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:H383,E" + ], + "mappedName": "#d:3;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:H383,E" + ], + "mappedName": "#d:4;:G;XTR;:H383:7,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:H383,E" + ], + "mappedName": "#d:1;FAC;:H383:4,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H383:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:H383:4,F", + "#b:1;:H383,E" + ], + "mappedName": "#14:1;:G0;XTR;:H383:8,F", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H383:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:H383,V" + ], + "mappedName": "#f:1;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:H383,V" + ], + "mappedName": "#10:2;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H383,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:H383:7,F", + "#b:1;:H383,E" + ], + "mappedName": "#16:1;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:H383,V" + ], + "mappedName": "#11:2;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H383,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:H383:7,F", + "#b:2;:H383,E" + ], + "mappedName": "#16:2;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:H383,V" + ], + "mappedName": "#12:2;:G;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H383,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:H383:7,F", + "#b:3;:H383,E" + ], + "mappedName": "#16:3;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H383,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H383,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:H383:7,F", + "#b:4;:H383,E" + ], + "mappedName": "#16:4;:U;XTR;:H383:7,E", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H383,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:H383:7,E", + "#2:1;:H383,V" + ], + "mappedName": "#18:1;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H383,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:H383:7,E", + "#4:2;:H383,V" + ], + "mappedName": "#19:2;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H383,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:H383:7,E", + "#6:2;:H383,V" + ], + "mappedName": "#1a:2;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H383,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H383,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:H383:7,E", + "#8:2;:H383,V" + ], + "mappedName": "#1b:2;:U;XTR;:H383:7,V", + "object": "Pad10", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch10", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H383:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad10:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H383:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad10:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H383:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad10:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H383:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H383:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad10:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g4;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H383:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H383:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad10:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H383:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H383:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad10:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H383:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad10:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v11;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H383:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad10:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H383,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H383,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad10:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H383:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad10:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H383:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad10:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H383,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H383,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad10:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H383:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad10:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H383:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H383:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad10:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H383,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H383,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad10:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H383:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad10:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H383,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H383,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad10:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g4;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H383:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H383:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad10:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g4;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H383,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H383,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad10:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v11;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H383:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad10:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v11;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H383,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H383,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad10:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H383:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad10:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g1v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H383,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H383,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad10:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H383:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad10:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g2v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H383,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H383,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad10:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3v22;SKT", + "stageId": "Sketch10" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H383:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H383:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad10:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch10", + "persistentId": "Sketch10:mapped:g3v22;SKT", + "stageId": "Sketch10" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad10", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad10", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 112 + }, + "typeId": "PartDesign::Pad" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "a534fa47e1d507a7cd6b9026ae79f0b83a3dfe792beb7a649b9f283283cc9e09", + "text": "StringTableStart v1 27\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:H383,E\n-1.4c.1.2\n-1.0 0:;:H383,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:H383:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H383:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H383:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n" + } + }, + { + "elementMapResources": { + "Body11.Shape.Map.txt": { + "sha256": "dcf19d255e886f76d2b4ed739157a596c44a2f1700fa6e077874b4210e383ce1", + "text": "BeginElementMap v1\n1 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Haa9:7,E\n;:G0;XTR;:Haa9:8,F\n;:U;XTR;:Haa9:7,E\n;:U;XTR;:Haa9:7,V\n;:Haa9,V\n;:Haa9,E\n;:G;XTR;:Haa9:7,F\n;FAC;:Haa9:4,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 12 2730 1 ;:Haaa,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 6 2730 1 ;:Haaa,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 8 2730 1 ;:Haaa,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad11.AddSubShape.Map.txt": { + "sha256": "00e22153e014e58acc5f745320c884f0e5ac8b6a8861763b4552fdc7dd72187d", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Haa9:7,E\n;:G0;XTR;:Haa9:8,F\n;:U;XTR;:Haa9:7,E\n;:U;XTR;:Haa9:7,V\n;:Haa9,V\n;:Haa9,E\n;:G;XTR;:Haa9:7,F\n;FAC;:Haa9:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad11.Shape.Map.txt": { + "sha256": "cb1b5a8bc4c49c141bd311b2070c85514ed699cdc7ecb2c2d02b59b962697ddc", + "text": "BeginElementMap v1\n2 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Haa9:7,E\n;:G0;XTR;:Haa9:8,F\n;:U;XTR;:Haa9:7,E\n;:U;XTR;:Haa9:7,V\n;:Haa9,V\n;:Haa9,E\n;:G;XTR;:Haa9:7,F\n;FAC;:Haa9:4,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Sketch11.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pad11", + "id": "partdesign-midplane", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body11.Shape.Map.txt" + ], + "elementMapSize": 26, + "elementMapVersion": "15.70200.5", + "label": "Body11", + "name": "Body11", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:G;XTR;:Haa9:7,F;:Haaa,F", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Haa9,E" + ], + "mappedName": "#d:1;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:G;XTR;:Haa9:7,F;:Haaa,F", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:Haa9,E" + ], + "mappedName": "#d:2;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:G;XTR;:Haa9:7,F;:Haaa,F", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:Haa9,E" + ], + "mappedName": "#d:3;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:G;XTR;:Haa9:7,F;:Haaa,F", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:Haa9,E" + ], + "mappedName": "#d:4;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;FAC;:Haa9:4,F;:Haaa,F", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Haa9,E" + ], + "mappedName": "#d:1;FAC;:Haa9:4,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Haa9:4,F;:Haaa,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F;:Haaa,F", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;FAC;:Haa9:4,F", + "#b:1;:Haa9,E" + ], + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F;:Haaa,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:G;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2:1;:Haa9,V" + ], + "mappedName": "#f:1;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4:2;:Haa9,V" + ], + "mappedName": "#10:2;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Haa9,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:1;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:U;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;:G;XTR;:Haa9:7,F", + "#b:1;:Haa9,E" + ], + "mappedName": "#16:1;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6:2;:Haa9,V" + ], + "mappedName": "#11:2;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Haa9,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:2;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:U;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:2;:G;XTR;:Haa9:7,F", + "#b:2;:Haa9,E" + ], + "mappedName": "#16:2;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8:2;:Haa9,V" + ], + "mappedName": "#12:2;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Haa9,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:3;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:U;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:3;:G;XTR;:Haa9:7,F", + "#b:3;:Haa9,E" + ], + "mappedName": "#16:3;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Haa9,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:4;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:U;XTR;:Haa9:7,E;:Haaa,E", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:4;:G;XTR;:Haa9:7,F", + "#b:4;:Haa9,E" + ], + "mappedName": "#16:4;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Haa9,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2:1;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:U;XTR;:Haa9:7,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#f:1;:G;XTR;:Haa9:7,E", + "#2:1;:Haa9,V" + ], + "mappedName": "#18:1;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Haa9,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#4:2;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#10:2;:G;XTR;:Haa9:7,E", + "#4:2;:Haa9,V" + ], + "mappedName": "#19:2;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Haa9,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#6:2;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#11:2;:G;XTR;:Haa9:7,E", + "#6:2;:Haa9,V" + ], + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Haa9,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#8:2;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "object": "Body11", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#12:2;:G;XTR;:Haa9:7,E", + "#8:2;:Haa9,V" + ], + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Haa9:7,F;:Haaa,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body11:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:Haa9:7,F", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#d:1;:G;XTR;:Haa9:7,F", + "stageId": "Pad11" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Haa9:7,F;:Haaa,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body11:face:1", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:Haa9:7,F", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#d:2;:G;XTR;:Haa9:7,F", + "stageId": "Pad11" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Haa9:7,F;:Haaa,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Body11:face:2", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:Haa9:7,F", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#d:3;:G;XTR;:Haa9:7,F", + "stageId": "Pad11" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Haa9:7,F;:Haaa,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Haa9:7,F;:Haaa,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Body11:face:3", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:Haa9:7,F", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#d:4;:G;XTR;:Haa9:7,F", + "stageId": "Pad11" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g4;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Haa9:4,F;:Haaa,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Haa9:4,F;:Haaa,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body11:face:4", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:Haa9:4,F", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#d:1;FAC;:Haa9:4,F", + "stageId": "Pad11" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F;:Haaa,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Haa9:8,F;:Haaa,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Body11:face:5", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#14:1;:G0;XTR;:Haa9:8,F", + "stageId": "Pad11" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body11:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#f:1;:G;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v11;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body11:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#10:2;:G;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Haa9,E;:Haaa,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body11:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:Haa9,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#b:1;:Haa9,E", + "stageId": "Pad11" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body11:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#16:1;:U;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Body11:edge:4", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#11:2;:G;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Haa9,E;:Haaa,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body11:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:2;:Haa9,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#b:2;:Haa9,E", + "stageId": "Pad11" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body11:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#16:2;:U;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Body11:edge:7", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#12:2;:G;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Haa9,E;:Haaa,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body11:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:3;:Haa9,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#b:3;:Haa9,E", + "stageId": "Pad11" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body11:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#16:3;:U;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Haa9,E;:Haaa,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Haa9,E;:Haaa,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body11:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:4;:Haa9,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#b:4;:Haa9,E", + "stageId": "Pad11" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g4;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Haa9:7,E;:Haaa,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Haa9:7,E;:Haaa,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body11:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:Haa9:7,E", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#16:4;:U;XTR;:Haa9:7,E", + "stageId": "Pad11" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g4;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Haa9,V;:Haaa,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body11:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:Haa9,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#2:1;:Haa9,V", + "stageId": "Pad11" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v11;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Haa9:7,V;:Haaa,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body11:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:Haa9:7,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#18:1;:U;XTR;:Haa9:7,V", + "stageId": "Pad11" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v11;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Haa9,V;:Haaa,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body11:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:Haa9,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#4:2;:Haa9,V", + "stageId": "Pad11" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body11:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:Haa9:7,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#19:2;:U;XTR;:Haa9:7,V", + "stageId": "Pad11" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Haa9,V;:Haaa,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body11:vertex:4", + "sourceRefs": [ + { + "mappedName": "#6:2;:Haa9,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#6:2;:Haa9,V", + "stageId": "Pad11" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body11:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#1a:2;:U;XTR;:Haa9:7,V", + "stageId": "Pad11" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Haa9,V;:Haaa,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Haa9,V;:Haaa,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body11:vertex:6", + "sourceRefs": [ + { + "mappedName": "#8:2;:Haa9,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#8:2;:Haa9,V", + "stageId": "Pad11" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Haa9:7,V;:Haaa,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body11:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V", + "objectId": "Pad11", + "persistentId": "Pad11:mapped:#1b:2;:U;XTR;:Haa9:7,V", + "stageId": "Pad11" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3v22;SKT", + "stageId": "Sketch11" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body11", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body11", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 199.99999999999994 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch11.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch11", + "name": "Sketch11", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch11:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch11:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch11:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch11:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch11:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch11:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch11:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch11:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch11", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch11", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad11.AddSubShape.Map.txt", + "Pad11.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad11", + "name": "Pad11", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:Haa9,E" + ], + "mappedName": "#d:1;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:Haa9,E" + ], + "mappedName": "#d:2;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:Haa9,E" + ], + "mappedName": "#d:3;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:Haa9,E" + ], + "mappedName": "#d:4;:G;XTR;:Haa9:7,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:Haa9,E" + ], + "mappedName": "#d:1;FAC;:Haa9:4,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Haa9:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:Haa9:4,F", + "#b:1;:Haa9,E" + ], + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:Haa9,V" + ], + "mappedName": "#f:1;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:Haa9,V" + ], + "mappedName": "#10:2;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:Haa9:7,F", + "#b:1;:Haa9,E" + ], + "mappedName": "#16:1;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:Haa9,V" + ], + "mappedName": "#11:2;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:Haa9:7,F", + "#b:2;:Haa9,E" + ], + "mappedName": "#16:2;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:Haa9,V" + ], + "mappedName": "#12:2;:G;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:Haa9:7,F", + "#b:3;:Haa9,E" + ], + "mappedName": "#16:3;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Haa9,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:Haa9:7,F", + "#b:4;:Haa9,E" + ], + "mappedName": "#16:4;:U;XTR;:Haa9:7,E", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Haa9,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:Haa9:7,E", + "#2:1;:Haa9,V" + ], + "mappedName": "#18:1;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Haa9,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:Haa9:7,E", + "#4:2;:Haa9,V" + ], + "mappedName": "#19:2;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Haa9,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:Haa9:7,E", + "#6:2;:Haa9,V" + ], + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Haa9,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Haa9,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:Haa9:7,E", + "#8:2;:Haa9,V" + ], + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V", + "object": "Pad11", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch11", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Haa9:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad11:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Haa9:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad11:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Haa9:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad11:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Haa9:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Haa9:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad11:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g4;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Haa9:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Haa9:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad11:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Haa9:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Haa9:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad11:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Haa9:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad11:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v11;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Haa9:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad11:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Haa9,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad11:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Haa9:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad11:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Haa9:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad11:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Haa9,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad11:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Haa9:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad11:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Haa9:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Haa9:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad11:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Haa9,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad11:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Haa9:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad11:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Haa9,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Haa9,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad11:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g4;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Haa9:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Haa9:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad11:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g4;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Haa9,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Haa9,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad11:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v11;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Haa9:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad11:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v11;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Haa9,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Haa9,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad11:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Haa9:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad11:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g1v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Haa9,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Haa9,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad11:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Haa9:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad11:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g2v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Haa9,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Haa9,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad11:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3v22;SKT", + "stageId": "Sketch11" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Haa9:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Haa9:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad11:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch11", + "persistentId": "Sketch11:mapped:g3v22;SKT", + "stageId": "Sketch11" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad11", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad11", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 199.99999999999994 + }, + "typeId": "PartDesign::Pad" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "97c40c1f5e8fa9fb3df82270896278d72fedd8567b83ba74ebd55c096b45b2ee", + "text": "StringTableStart v1 27\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:Haa9,E\n-1.4c.1.2\n-1.0 0:;:Haa9,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:Haa9:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Haa9:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Haa9:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n" + } + }, + { + "elementMapResources": { + "Body12.Shape.Map.txt": { + "sha256": "1e1fbbe9c7a06c23ce8aecab2cf5db2f41dc4fca44cf6179d045f7282050de0a", + "text": "BeginElementMap v1\n1 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hfd7:7,E\n;:G0;XTR;:Hfd7:8,F\n;:U;XTR;:Hfd7:7,E\n;:U;XTR;:Hfd7:7,V\n;:Hfd7,V\n;:Hfd7,E\n;:G;XTR;:Hfd7:7,F\n;FAC;:Hfd7:4,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 12 4056 1 ;:Hfd8,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 6 4056 1 ;:Hfd8,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 8 4056 1 ;:Hfd8,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad12.AddSubShape.Map.txt": { + "sha256": "90621076e953f0e68472c0dd2078745689b94b90b68c23c6b0ac54e51f4be3c0", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hfd7:7,E\n;:G0;XTR;:Hfd7:8,F\n;:U;XTR;:Hfd7:7,E\n;:U;XTR;:Hfd7:7,V\n;:Hfd7,V\n;:Hfd7,E\n;:G;XTR;:Hfd7:7,F\n;FAC;:Hfd7:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad12.Shape.Map.txt": { + "sha256": "28448b9dd27ea5de9e3c4e8b788c2891d7d33d8259dc41ebcfafc1bbdcc2fe77", + "text": "BeginElementMap v1\n2 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hfd7:7,E\n;:G0;XTR;:Hfd7:8,F\n;:U;XTR;:Hfd7:7,E\n;:U;XTR;:Hfd7:7,V\n;:Hfd7,V\n;:Hfd7,E\n;:G;XTR;:Hfd7:7,F\n;FAC;:Hfd7:4,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Sketch12.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pad12", + "id": "partdesign-reverse", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body12.Shape.Map.txt" + ], + "elementMapSize": 26, + "elementMapVersion": "15.70200.5", + "label": "Body12", + "name": "Body12", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:Hfd7,E" + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:Hfd7,E" + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:Hfd7,E" + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;FAC;:Hfd7:4,F;:Hfd8,F", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F;:Hfd8,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F;:Hfd8,F", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;FAC;:Hfd7:4,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F;:Hfd8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2:1;:Hfd7,V" + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4:2;:Hfd7,V" + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hfd7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:1;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;:G;XTR;:Hfd7:7,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6:2;:Hfd7,V" + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hfd7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:2;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:2;:G;XTR;:Hfd7:7,F", + "#b:2;:Hfd7,E" + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8:2;:Hfd7,V" + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hfd7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:3;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:3;:G;XTR;:Hfd7:7,F", + "#b:3;:Hfd7,E" + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hfd7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:4;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:4;:G;XTR;:Hfd7:7,F", + "#b:4;:Hfd7,E" + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hfd7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2:1;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#f:1;:G;XTR;:Hfd7:7,E", + "#2:1;:Hfd7,V" + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hfd7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#4:2;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#10:2;:G;XTR;:Hfd7:7,E", + "#4:2;:Hfd7,V" + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hfd7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#6:2;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#11:2;:G;XTR;:Hfd7:7,E", + "#6:2;:Hfd7,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hfd7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#8:2;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "object": "Body12", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#12:2;:G;XTR;:Hfd7:7,E", + "#8:2;:Hfd7,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body12:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#d:1;:G;XTR;:Hfd7:7,F", + "stageId": "Pad12" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body12:face:1", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#d:2;:G;XTR;:Hfd7:7,F", + "stageId": "Pad12" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Body12:face:2", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#d:3;:G;XTR;:Hfd7:7,F", + "stageId": "Pad12" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Hfd7:7,F;:Hfd8,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Body12:face:3", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#d:4;:G;XTR;:Hfd7:7,F", + "stageId": "Pad12" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g4;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Hfd7:4,F;:Hfd8,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Hfd7:4,F;:Hfd8,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body12:face:4", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#d:1;FAC;:Hfd7:4,F", + "stageId": "Pad12" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F;:Hfd8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Hfd7:8,F;:Hfd8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Body12:face:5", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#14:1;:G0;XTR;:Hfd7:8,F", + "stageId": "Pad12" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body12:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#f:1;:G;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v11;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body12:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#10:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Hfd7,E;:Hfd8,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body12:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:Hfd7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#b:1;:Hfd7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body12:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#16:1;:U;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Body12:edge:4", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#11:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Hfd7,E;:Hfd8,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body12:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:2;:Hfd7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#b:2;:Hfd7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body12:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#16:2;:U;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Body12:edge:7", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#12:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Hfd7,E;:Hfd8,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body12:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:3;:Hfd7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#b:3;:Hfd7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body12:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#16:3;:U;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hfd7,E;:Hfd8,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hfd7,E;:Hfd8,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body12:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:4;:Hfd7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#b:4;:Hfd7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g4;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Hfd7:7,E;:Hfd8,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body12:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#16:4;:U;XTR;:Hfd7:7,E", + "stageId": "Pad12" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g4;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hfd7,V;:Hfd8,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body12:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:Hfd7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#2:1;:Hfd7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v11;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body12:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#18:1;:U;XTR;:Hfd7:7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v11;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Hfd7,V;:Hfd8,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body12:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:Hfd7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#4:2;:Hfd7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body12:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#19:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hfd7,V;:Hfd8,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body12:vertex:4", + "sourceRefs": [ + { + "mappedName": "#6:2;:Hfd7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#6:2;:Hfd7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body12:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#1a:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hfd7,V;:Hfd8,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hfd7,V;:Hfd8,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body12:vertex:6", + "sourceRefs": [ + { + "mappedName": "#8:2;:Hfd7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#8:2;:Hfd7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Hfd7:7,V;:Hfd8,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body12:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad12", + "persistentId": "Pad12:mapped:#1b:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad12" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3v22;SKT", + "stageId": "Sketch12" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body12", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body12", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 79.99999999999999 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch12.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch12", + "name": "Sketch12", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch12:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch12:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch12:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch12:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch12:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch12:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch12:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch12:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch12", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch12", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad12.AddSubShape.Map.txt", + "Pad12.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad12", + "name": "Pad12", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hfd7,E" + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hfd7,E" + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hfd7,E" + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:Hfd7:4,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:Hfd7,V" + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:Hfd7,V" + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:Hfd7:7,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:Hfd7,V" + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:Hfd7:7,F", + "#b:2;:Hfd7,E" + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:Hfd7,V" + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:Hfd7:7,F", + "#b:3;:Hfd7,E" + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hfd7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:Hfd7:7,F", + "#b:4;:Hfd7,E" + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hfd7,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:Hfd7:7,E", + "#2:1;:Hfd7,V" + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hfd7,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:Hfd7:7,E", + "#4:2;:Hfd7,V" + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hfd7,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:Hfd7:7,E", + "#6:2;:Hfd7,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hfd7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hfd7,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:Hfd7:7,E", + "#8:2;:Hfd7,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "object": "Pad12", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch12", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad12:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad12:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad12:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad12:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g4;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Hfd7:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad12:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Hfd7:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad12:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad12:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v11;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad12:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad12:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad12:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad12:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad12:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad12:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad12:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad12:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad12:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad12:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g4;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad12:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g4;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hfd7,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hfd7,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad12:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v11;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad12:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v11;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hfd7,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Hfd7,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad12:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad12:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g1v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hfd7,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hfd7,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad12:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad12:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g2v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hfd7,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hfd7,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad12:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3v22;SKT", + "stageId": "Sketch12" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad12:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch12", + "persistentId": "Sketch12:mapped:g3v22;SKT", + "stageId": "Sketch12" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad12", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad12", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 79.99999999999999 + }, + "typeId": "PartDesign::Pad" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "083fcd2630241ee6959872fbfc99a033653587ce8f0027f1879eff2d23261848", + "text": "StringTableStart v1 27\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:Hfd7,E\n-1.4c.1.2\n-1.0 0:;:Hfd7,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:Hfd7:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hfd7:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hfd7:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n" + } + }, + { + "elementMapResources": { + "Body13.Shape.Map.txt": { + "sha256": "a1890a16e2a8dce1cc0d985fa531e875671d3342cb591777373978fff5eb14b7", + "text": "BeginElementMap v1\n1 PostfixCount 11\nEdge\nFace\nVertex\n;:G;MAK;:Hbf6:7,E\n;:U;MAK;:Hbf6:7,E\n;:U;MAK;:Hbf6:7,V\n;:L#1b;MAK;:Hbf6:a,F\n;:Hbf6,V\n;:Hbf6,E\n;:G;MAK;:Hbf6:7,F\n;:L#1a;MAK;:Hbf6:a,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#b:1.9 0\n$#f:2.4 0\n$#14:1.5 0\n$#10:1.4 0\n$#b:2.9 0\n$#11:2.4 0\n$#14:2.5.b.d 0\n$#b:3.9 0\n$#12:2.4 0\n$#14:3.5.b.d 0\n$#b:4.9 0\n$#14:4.5.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b.b.b.b.1a 0\n$#1d:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#4:2.8 $#5:1.8 0\n$#16:2.6 0\n$#17:1.6 0\n$#6:2.8 $#7:1.8 0\n$#18:2.6 0\n$#8:2.8 $#9:1.8 0\n$#19:2.6 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 12 3063 1 ;:Hbf7,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 6 3063 1 ;:Hbf7,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 8 3063 1 ;:Hbf7,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad13.AddSubShape.Map.txt": { + "sha256": "702d03b2e2a446a19d5a11b68408425d00b099e50ed3b49659e5442bc10117b6", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;MAK;:Hbf6:7,E\n;:U;MAK;:Hbf6:7,E\n;:U;MAK;:Hbf6:7,V\n;:L#1b;MAK;:Hbf6:a,F\n;:Hbf6,V\n;:Hbf6,E\n;:G;MAK;:Hbf6:7,F\n;:L#1a;MAK;:Hbf6:a,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#b:1.9 0\n$#f:2.4 0\n$#14:1.5 0\n$#10:1.4 0\n$#b:2.9 0\n$#11:2.4 0\n$#14:2.5.b.d 0\n$#b:3.9 0\n$#12:2.4 0\n$#14:3.5.b.d 0\n$#b:4.9 0\n$#14:4.5.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b.b.b.b.1a 0\n$#1d:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#4:2.8 $#5:1.8 0\n$#16:2.6 0\n$#17:1.6 0\n$#6:2.8 $#7:1.8 0\n$#18:2.6 0\n$#8:2.8 $#9:1.8 0\n$#19:2.6 0\n\nEndMap\n" + }, + "Pad13.Shape.Map.txt": { + "sha256": "303a19dc3b3cab7ede232c0e724e7a71a3f88c0d8b740b0df290e948c6654e49", + "text": "BeginElementMap v1\n2 PostfixCount 11\nEdge\nFace\nVertex\n;:G;MAK;:Hbf6:7,E\n;:U;MAK;:Hbf6:7,E\n;:U;MAK;:Hbf6:7,V\n;:L#1b;MAK;:Hbf6:a,F\n;:Hbf6,V\n;:Hbf6,E\n;:G;MAK;:Hbf6:7,F\n;:L#1a;MAK;:Hbf6:a,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#b:1.9 0\n$#f:2.4 0\n$#14:1.5 0\n$#10:1.4 0\n$#b:2.9 0\n$#11:2.4 0\n$#14:2.5.b.d 0\n$#b:3.9 0\n$#12:2.4 0\n$#14:3.5.b.d 0\n$#b:4.9 0\n$#14:4.5.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b.b.b.b.1a 0\n$#1d:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#4:2.8 $#5:1.8 0\n$#16:2.6 0\n$#17:1.6 0\n$#6:2.8 $#7:1.8 0\n$#18:2.6 0\n$#8:2.8 $#9:1.8 0\n$#19:2.6 0\n\nEndMap\n" + }, + "Sketch13.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pad13", + "id": "partdesign-taper", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body13.Shape.Map.txt" + ], + "elementMapSize": 26, + "elementMapVersion": "15.70200.5", + "label": "Body13", + "name": "Body13", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hbf6,E" + ], + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:Hbf6,E" + ], + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:Hbf6,E" + ], + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:Hbf6,E" + ], + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F;:Hbf7,F", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hbf6,E" + ], + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F;:Hbf7,F", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#14:1;:U;MAK;:Hbf6:7,E", + "#d:1;:G;MAK;:Hbf6:7,F", + "#b:1;:Hbf6,E" + ], + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F;:Hbf7,F", + "mappedStringIds": [ + 29 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hbf6,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:1;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4:2;:Hbf6,V" + ], + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;:G;MAK;:Hbf6:7,F", + "#b:1;:Hbf6,E" + ], + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 20 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2:1;:Hbf6,V" + ], + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hbf6,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:2;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6:2;:Hbf6,V" + ], + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:2;:G;MAK;:Hbf6:7,F", + "#b:2;:Hbf6,E" + ], + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hbf6,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:3;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8:2;:Hbf6,V" + ], + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:3;:G;MAK;:Hbf6:7,F", + "#b:3;:Hbf6,E" + ], + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hbf6,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:4;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:4;:G;MAK;:Hbf6:7,F", + "#b:4;:Hbf6,E" + ], + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hbf6,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2:1;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hbf6,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#4:2;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#f:2;:G;MAK;:Hbf6:7,E", + "#4:2;:Hbf6,V" + ], + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 22 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#10:1;:G;MAK;:Hbf6:7,E", + "#2:1;:Hbf6,V" + ], + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 23 + ], + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 23 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hbf6,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#6:2;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#11:2;:G;MAK;:Hbf6:7,E", + "#6:2;:Hbf6,V" + ], + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hbf6,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#8:2;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "object": "Body13", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#12:2;:G;MAK;:Hbf6:7,E", + "#8:2;:Hbf6,V" + ], + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body13:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#d:1;:G;MAK;:Hbf6:7,F", + "stageId": "Pad13" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body13:face:1", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#d:2;:G;MAK;:Hbf6:7,F", + "stageId": "Pad13" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Body13:face:2", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#d:3;:G;MAK;:Hbf6:7,F", + "stageId": "Pad13" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;MAK;:Hbf6:7,F;:Hbf7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Body13:face:3", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#d:4;:G;MAK;:Hbf6:7,F", + "stageId": "Pad13" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g4;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "kind": "face", + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F;:Hbf7,F", + "mappedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;:L#1a;MAK;:Hbf6:a,F;:Hbf7,F", + "stringIds": [ + 11, + 11, + 11, + 13, + 26 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body13:face:4", + "sourceRefs": [ + { + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#d:1;:L#1a;MAK;:Hbf6:a,F", + "stageId": "Pad13" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 29 + ], + "kind": "face", + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F;:Hbf7,F", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#1d:1;:L#1b;MAK;:Hbf6:a,F;:Hbf7,F", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body13:face:5", + "sourceRefs": [ + { + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#1d:1;:L#1b;MAK;:Hbf6:a,F", + "stageId": "Pad13" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#b:1;:Hbf6,E;:Hbf7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body13:edge:0", + "sourceRefs": [ + { + "mappedName": "#b:1;:Hbf6,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#b:1;:Hbf6,E", + "stageId": "Pad13" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#f:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body13:edge:1", + "sourceRefs": [ + { + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#f:2;:G;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 20 + ], + "kind": "edge", + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#14:1;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body13:edge:2", + "sourceRefs": [ + { + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#14:1;:U;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#10:1;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Body13:edge:3", + "sourceRefs": [ + { + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#10:1;:G;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v11;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#b:2;:Hbf6,E;:Hbf7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body13:edge:4", + "sourceRefs": [ + { + "mappedName": "#b:2;:Hbf6,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#b:2;:Hbf6,E", + "stageId": "Pad13" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#11:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Body13:edge:5", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#11:2;:G;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "kind": "edge", + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#14:2;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 11, + 13, + 20 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body13:edge:6", + "sourceRefs": [ + { + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#14:2;:U;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#b:3;:Hbf6,E;:Hbf7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body13:edge:7", + "sourceRefs": [ + { + "mappedName": "#b:3;:Hbf6,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#b:3;:Hbf6,E", + "stageId": "Pad13" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#12:2;:G;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Body13:edge:8", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#12:2;:G;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "kind": "edge", + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#14:3;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 11, + 13, + 20 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body13:edge:9", + "sourceRefs": [ + { + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#14:3;:U;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hbf6,E;:Hbf7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hbf6,E;:Hbf7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body13:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:4;:Hbf6,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#b:4;:Hbf6,E", + "stageId": "Pad13" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g4;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "kind": "edge", + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#14:4;:U;MAK;:Hbf6:7,E;:Hbf7,E", + "stringIds": [ + 11, + 13, + 20 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body13:edge:11", + "sourceRefs": [ + { + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#14:4;:U;MAK;:Hbf6:7,E", + "stageId": "Pad13" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g4;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hbf6,V;:Hbf7,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body13:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:Hbf6,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#2:1;:Hbf6,V", + "stageId": "Pad13" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v11;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#4:2;:Hbf6,V;:Hbf7,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body13:vertex:1", + "sourceRefs": [ + { + "mappedName": "#4:2;:Hbf6,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#4:2;:Hbf6,V", + "stageId": "Pad13" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 22 + ], + "kind": "vertex", + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#16:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body13:vertex:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#16:2;:U;MAK;:Hbf6:7,V", + "stageId": "Pad13" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 23 + ], + "kind": "vertex", + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 23 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#17:1;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "stringIds": [ + 23 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body13:vertex:3", + "sourceRefs": [ + { + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#17:1;:U;MAK;:Hbf6:7,V", + "stageId": "Pad13" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v11;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hbf6,V;:Hbf7,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body13:vertex:4", + "sourceRefs": [ + { + "mappedName": "#6:2;:Hbf6,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#6:2;:Hbf6,V", + "stageId": "Pad13" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#18:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body13:vertex:5", + "sourceRefs": [ + { + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#18:2;:U;MAK;:Hbf6:7,V", + "stageId": "Pad13" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hbf6,V;:Hbf7,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hbf6,V;:Hbf7,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body13:vertex:6", + "sourceRefs": [ + { + "mappedName": "#8:2;:Hbf6,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#8:2;:Hbf6,V", + "stageId": "Pad13" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#19:2;:U;MAK;:Hbf6:7,V;:Hbf7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body13:vertex:7", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V", + "objectId": "Pad13", + "persistentId": "Pad13:mapped:#19:2;:U;MAK;:Hbf6:7,V", + "stageId": "Pad13" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3v22;SKT", + "stageId": "Sketch13" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body13", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body13", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 176.58190289989568 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch13.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch13", + "name": "Sketch13", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch13:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch13:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch13:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch13:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch13:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch13:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch13:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch13:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch13", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch13", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad13.AddSubShape.Map.txt", + "Pad13.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad13", + "name": "Pad13", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:Hbf6,E" + ], + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hbf6,E" + ], + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hbf6,E" + ], + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hbf6,E" + ], + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hbf6,E" + ], + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F", + "mappedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#14:1;:U;MAK;:Hbf6:7,E", + "#d:1;:G;MAK;:Hbf6:7,F", + "#b:1;:Hbf6,E" + ], + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F", + "mappedStringIds": [ + 29 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:Hbf6,V" + ], + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;MAK;:Hbf6:7,F", + "#b:1;:Hbf6,E" + ], + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 20 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#2:1;:Hbf6,V" + ], + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [ + "#6:2;:Hbf6,V" + ], + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;MAK;:Hbf6:7,F", + "#b:2;:Hbf6,E" + ], + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [ + "#8:2;:Hbf6,V" + ], + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;MAK;:Hbf6:7,F", + "#b:3;:Hbf6,E" + ], + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hbf6,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;MAK;:Hbf6:7,F", + "#b:4;:Hbf6,E" + ], + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hbf6,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hbf6,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [ + "#f:2;:G;MAK;:Hbf6:7,E", + "#4:2;:Hbf6,V" + ], + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 22 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:1;:G;MAK;:Hbf6:7,E", + "#2:1;:Hbf6,V" + ], + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 23 + ], + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 23 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hbf6,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;MAK;:Hbf6:7,E", + "#6:2;:Hbf6,V" + ], + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hbf6,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hbf6,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;MAK;:Hbf6:7,E", + "#8:2;:Hbf6,V" + ], + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V", + "object": "Pad13", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch13", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;MAK;:Hbf6:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad13:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;MAK;:Hbf6:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad13:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;MAK;:Hbf6:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad13:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;MAK;:Hbf6:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;MAK;:Hbf6:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad13:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g4;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "kind": "face", + "mappedName": "#d:1;:L#1a;MAK;:Hbf6:a,F", + "mappedStringIds": [ + 11, + 11, + 11, + 13, + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;:L#1a;MAK;:Hbf6:a,F", + "stringIds": [ + 11, + 11, + 11, + 13, + 26 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad13:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 29 + ], + "kind": "face", + "mappedName": "#1d:1;:L#1b;MAK;:Hbf6:a,F", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#1d:1;:L#1b;MAK;:Hbf6:a,F", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad13:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#b:1;:Hbf6,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad13:edge:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:2;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#f:2;:G;MAK;:Hbf6:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad13:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 20 + ], + "kind": "edge", + "mappedName": "#14:1;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#14:1;:U;MAK;:Hbf6:7,E", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad13:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:1;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#10:1;:G;MAK;:Hbf6:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad13:edge:3", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v11;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#b:2;:Hbf6,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad13:edge:4", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#11:2;:G;MAK;:Hbf6:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad13:edge:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "kind": "edge", + "mappedName": "#14:2;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#14:2;:U;MAK;:Hbf6:7,E", + "stringIds": [ + 11, + 13, + 20 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad13:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#b:3;:Hbf6,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad13:edge:7", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#12:2;:G;MAK;:Hbf6:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Pad13:edge:8", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "kind": "edge", + "mappedName": "#14:3;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#14:3;:U;MAK;:Hbf6:7,E", + "stringIds": [ + 11, + 13, + 20 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad13:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hbf6,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hbf6,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad13:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g4;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 20 + ], + "kind": "edge", + "mappedName": "#14:4;:U;MAK;:Hbf6:7,E", + "mappedStringIds": [ + 11, + 13, + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#14:4;:U;MAK;:Hbf6:7,E", + "stringIds": [ + 11, + 13, + 20 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad13:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g4;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hbf6,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hbf6,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad13:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v11;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hbf6,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#4:2;:Hbf6,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad13:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 22 + ], + "kind": "vertex", + "mappedName": "#16:2;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#16:2;:U;MAK;:Hbf6:7,V", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad13:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 23 + ], + "kind": "vertex", + "mappedName": "#17:1;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 23 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#17:1;:U;MAK;:Hbf6:7,V", + "stringIds": [ + 23 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad13:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g1v11;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hbf6,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hbf6,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad13:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:2;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#18:2;:U;MAK;:Hbf6:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad13:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g2v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hbf6,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hbf6,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad13:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3v22;SKT", + "stageId": "Sketch13" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;MAK;:Hbf6:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#19:2;:U;MAK;:Hbf6:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad13:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch13", + "persistentId": "Sketch13:mapped:g3v22;SKT", + "stageId": "Sketch13" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad13", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad13", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 176.58190289989568 + }, + "typeId": "PartDesign::Pad" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "9e88f56d87cfddde08c15f98964a381f0c46dc88e5dddec4d639898dce4bc14f", + "text": "StringTableStart v1 29\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:Hbf6,E\n-1.4c.1.2\n-1.0 0:;:Hbf6,V\n-1.4c.1.b\n-1.4c.0.-2\n-1.4c.0.4\n-1.4c.0.2\n-1.0 0:;:G;MAK;:Hbf6:7,F\n-1.4c.1.7\n-1.0 0:;:G;MAK;:Hbf6:7,E\n-1.4c.1.7\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:(#b:2;:Hbf6,E|#b:3;:Hbf6,E|#b:4;:Hbf6,E)\n-1.0 0:(#14:2;:U;MAK;:Hbf6:7,E|#14:3;:U;MAK;:Hbf6:7,E|#14:4;:U;MAK;:Hbf6:7,E)\n-1.0 0:;:U;MAK;:Hbf6:7,E\n-1.4c.1.9.12.12.10.10.10.12.9.9.9.2\n" + } + }, + { + "elementMapResources": { + "Body14.Shape.Map.txt": { + "sha256": "f960b254fe74a5b7af66c413761972377339a8c1eb75d14cb3cc0c05048b6e3e", + "text": "BeginElementMap v1\n1 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H606:7,E\n;:G0;XTR;:H606:8,F\n;:U;XTR;:H606:7,E\n;:U;XTR;:H606:7,V\n;:H606,V\n;:H606,E\n;:G;XTR;:H606:7,F\n;FAC;:H606:4,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 12 1543 1 ;:H607,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 6 1543 1 ;:H607,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 8 1543 1 ;:H607,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad14.AddSubShape.Map.txt": { + "sha256": "2e2c7b1ba1860c945ae797c982ac112e184be0c3a2f69c8913fd0c04e3b63215", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H606:7,E\n;:G0;XTR;:H606:8,F\n;:U;XTR;:H606:7,E\n;:U;XTR;:H606:7,V\n;:H606,V\n;:H606,E\n;:G;XTR;:H606:7,F\n;FAC;:H606:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad14.Shape.Map.txt": { + "sha256": "6f1832d20cbdd437b11ec5d5863caa01b1337a0122712ac7408ed5097d2a4213", + "text": "BeginElementMap v1\n2 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H606:7,E\n;:G0;XTR;:H606:8,F\n;:U;XTR;:H606:7,E\n;:U;XTR;:H606:7,V\n;:H606,V\n;:H606,E\n;:G;XTR;:H606:7,F\n;FAC;:H606:4,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Sketch14.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pad14", + "id": "partdesign-twoside", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body14.Shape.Map.txt" + ], + "elementMapSize": 26, + "elementMapVersion": "15.70200.5", + "label": "Body14", + "name": "Body14", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:G;XTR;:H606:7,F;:H607,F", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:H606,E" + ], + "mappedName": "#d:1;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:G;XTR;:H606:7,F;:H607,F", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:H606,E" + ], + "mappedName": "#d:2;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:G;XTR;:H606:7,F;:H607,F", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:H606,E" + ], + "mappedName": "#d:3;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:G;XTR;:H606:7,F;:H607,F", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:H606,E" + ], + "mappedName": "#d:4;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;FAC;:H606:4,F;:H607,F", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:H606,E" + ], + "mappedName": "#d:1;FAC;:H606:4,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H606:4,F;:H607,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:G0;XTR;:H606:8,F;:H607,F", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;FAC;:H606:4,F", + "#b:1;:H606,E" + ], + "mappedName": "#14:1;:G0;XTR;:H606:8,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H606:8,F;:H607,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:G;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2:1;:H606,V" + ], + "mappedName": "#f:1;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:G;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4:2;:H606,V" + ], + "mappedName": "#10:2;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H606,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:1;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:U;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:1;:G;XTR;:H606:7,F", + "#b:1;:H606,E" + ], + "mappedName": "#16:1;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:G;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6:2;:H606,V" + ], + "mappedName": "#11:2;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H606,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:2;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:U;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:2;:G;XTR;:H606:7,F", + "#b:2;:H606,E" + ], + "mappedName": "#16:2;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:G;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8:2;:H606,V" + ], + "mappedName": "#12:2;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H606,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:3;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:U;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:3;:G;XTR;:H606:7,F", + "#b:3;:H606,E" + ], + "mappedName": "#16:3;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H606,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#b:4;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:U;XTR;:H606:7,E;:H607,E", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#d:4;:G;XTR;:H606:7,F", + "#b:4;:H606,E" + ], + "mappedName": "#16:4;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H606,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2:1;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H606,V;:H607,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:U;XTR;:H606:7,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#f:1;:G;XTR;:H606:7,E", + "#2:1;:H606,V" + ], + "mappedName": "#18:1;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H606,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#4:2;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H606,V;:H607,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:U;XTR;:H606:7,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#10:2;:G;XTR;:H606:7,E", + "#4:2;:H606,V" + ], + "mappedName": "#19:2;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H606,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#6:2;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H606,V;:H607,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:U;XTR;:H606:7,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#11:2;:G;XTR;:H606:7,E", + "#6:2;:H606,V" + ], + "mappedName": "#1a:2;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H606,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#8:2;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H606,V;:H607,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:U;XTR;:H606:7,V;:H607,V", + "object": "Body14", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#12:2;:G;XTR;:H606:7,E", + "#8:2;:H606,V" + ], + "mappedName": "#1b:2;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H606:7,F;:H607,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body14:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:H606:7,F", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#d:1;:G;XTR;:H606:7,F", + "stageId": "Pad14" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H606:7,F;:H607,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body14:face:1", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:H606:7,F", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#d:2;:G;XTR;:H606:7,F", + "stageId": "Pad14" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H606:7,F;:H607,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Body14:face:2", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:H606:7,F", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#d:3;:G;XTR;:H606:7,F", + "stageId": "Pad14" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H606:7,F;:H607,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H606:7,F;:H607,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Body14:face:3", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:H606:7,F", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#d:4;:G;XTR;:H606:7,F", + "stageId": "Pad14" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g4;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H606:4,F;:H607,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H606:4,F;:H607,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body14:face:4", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:H606:4,F", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#d:1;FAC;:H606:4,F", + "stageId": "Pad14" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H606:8,F;:H607,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H606:8,F;:H607,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Body14:face:5", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:H606:8,F", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#14:1;:G0;XTR;:H606:8,F", + "stageId": "Pad14" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Body14:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#f:1;:G;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v11;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Body14:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#10:2;:G;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H606,E;:H607,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body14:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:H606,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#b:1;:H606,E", + "stageId": "Pad14" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body14:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#16:1;:U;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Body14:edge:4", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#11:2;:G;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H606,E;:H607,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body14:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:2;:H606,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#b:2;:H606,E", + "stageId": "Pad14" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body14:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#16:2;:U;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Body14:edge:7", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#12:2;:G;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H606,E;:H607,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body14:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:3;:H606,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#b:3;:H606,E", + "stageId": "Pad14" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body14:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#16:3;:U;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H606,E;:H607,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H606,E;:H607,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body14:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:4;:H606,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#b:4;:H606,E", + "stageId": "Pad14" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g4;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H606:7,E;:H607,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H606:7,E;:H607,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body14:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:H606:7,E", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#16:4;:U;XTR;:H606:7,E", + "stageId": "Pad14" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g4;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H606,V;:H607,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H606,V;:H607,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body14:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:H606,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#2:1;:H606,V", + "stageId": "Pad14" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v11;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H606:7,V;:H607,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body14:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:H606:7,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#18:1;:U;XTR;:H606:7,V", + "stageId": "Pad14" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v11;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H606,V;:H607,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H606,V;:H607,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body14:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:H606,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#4:2;:H606,V", + "stageId": "Pad14" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H606:7,V;:H607,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body14:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:H606:7,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#19:2;:U;XTR;:H606:7,V", + "stageId": "Pad14" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H606,V;:H607,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H606,V;:H607,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body14:vertex:4", + "sourceRefs": [ + { + "mappedName": "#6:2;:H606,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#6:2;:H606,V", + "stageId": "Pad14" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H606:7,V;:H607,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body14:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:H606:7,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#1a:2;:U;XTR;:H606:7,V", + "stageId": "Pad14" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H606,V;:H607,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H606,V;:H607,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body14:vertex:6", + "sourceRefs": [ + { + "mappedName": "#8:2;:H606,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#8:2;:H606,V", + "stageId": "Pad14" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H606:7,V;:H607,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H606:7,V;:H607,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body14:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:H606:7,V", + "objectId": "Pad14", + "persistentId": "Pad14:mapped:#1b:2;:U;XTR;:H606:7,V", + "stageId": "Pad14" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3v22;SKT", + "stageId": "Sketch14" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body14", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body14", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 112 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch14.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch14", + "name": "Sketch14", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch14:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch14:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch14:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch14:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch14:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch14:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch14:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch14:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch14", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch14", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad14.AddSubShape.Map.txt", + "Pad14.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad14", + "name": "Pad14", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:H606,E" + ], + "mappedName": "#d:1;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:H606,E" + ], + "mappedName": "#d:2;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:H606,E" + ], + "mappedName": "#d:3;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:H606,E" + ], + "mappedName": "#d:4;:G;XTR;:H606:7,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:H606,E" + ], + "mappedName": "#d:1;FAC;:H606:4,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H606:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:H606:4,F", + "#b:1;:H606,E" + ], + "mappedName": "#14:1;:G0;XTR;:H606:8,F", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H606:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:H606,V" + ], + "mappedName": "#f:1;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:H606,V" + ], + "mappedName": "#10:2;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H606,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:H606:7,F", + "#b:1;:H606,E" + ], + "mappedName": "#16:1;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:H606,V" + ], + "mappedName": "#11:2;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H606,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:H606:7,F", + "#b:2;:H606,E" + ], + "mappedName": "#16:2;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:H606,V" + ], + "mappedName": "#12:2;:G;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H606,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:H606:7,F", + "#b:3;:H606,E" + ], + "mappedName": "#16:3;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H606,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H606,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:H606:7,F", + "#b:4;:H606,E" + ], + "mappedName": "#16:4;:U;XTR;:H606:7,E", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H606,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:H606:7,E", + "#2:1;:H606,V" + ], + "mappedName": "#18:1;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H606,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:H606:7,E", + "#4:2;:H606,V" + ], + "mappedName": "#19:2;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H606,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:H606:7,E", + "#6:2;:H606,V" + ], + "mappedName": "#1a:2;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H606,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H606,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:H606:7,E", + "#8:2;:H606,V" + ], + "mappedName": "#1b:2;:U;XTR;:H606:7,V", + "object": "Pad14", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch14", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H606:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad14:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H606:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad14:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H606:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad14:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H606:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H606:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad14:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g4;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H606:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H606:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad14:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H606:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H606:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad14:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H606:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad14:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v11;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H606:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad14:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H606,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H606,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad14:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H606:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad14:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H606:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad14:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H606,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H606,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad14:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H606:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad14:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H606:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H606:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad14:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H606,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H606,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad14:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H606:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad14:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H606,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H606,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad14:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g4;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H606:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H606:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad14:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g4;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H606,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H606,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad14:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v11;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H606:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad14:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v11;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H606,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H606,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad14:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H606:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad14:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g1v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H606,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H606,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad14:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H606:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad14:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g2v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H606,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H606,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad14:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3v22;SKT", + "stageId": "Sketch14" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H606:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H606:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad14:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch14", + "persistentId": "Sketch14:mapped:g3v22;SKT", + "stageId": "Sketch14" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad14", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad14", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 112 + }, + "typeId": "PartDesign::Pad" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "dee7d82835f8358da44e0218a6244ab28b09e3f27f039c0c57b230b03331d04c", + "text": "StringTableStart v1 27\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:H606,E\n-1.4c.1.2\n-1.0 0:;:H606,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:H606:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H606:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H606:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n" + } + }, + { + "elementMapResources": { + "Body15.Shape.Map.txt": { + "sha256": "666615343ad24f64ee20447f0f028239132ef43677b979bc071461f273154160", + "text": "BeginElementMap v1\n1 PostfixCount 9\nEdge\nFace\nVertex\n;:H723,V\n;:H723,F\n;:H723,E\n;:H-725,E\n;:H-725,V\n;:H-725,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#28:2.7 0\n$#29:4.7 0\n$#1d:1.7 0\n$#43:1.7 0\n$#2b:8.7 0\n$#1d:4.7.b 0\n$#43:4.7.b.1d.26 0\n$#2a:6.7 0\n$#1d:2.7.b 0\n$#43:2.7.b.1d.26 0\n$#1d:3.7.b 0\n$#43:3.7.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 13\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#38:1.5 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:4.9.b.1d 0\n$#26:2.9.b.1d 0\n$#24:1.9 0\n$#45:1.9 0\n$#26:3.9.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 $#39:3.8 0\n$#3b:2.8 0\n$#20.8 $#3c:5.8 0\n$#3d:4.8 0\n$#22.8 $#40:9.8 0\n$#41:8.8 0\n$#21.8 $#3e:7.8 0\n$#3f:6.8 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 24 1829 1 ;:H725,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 12 1829 1 ;:H725,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 16 1829 1 ;:H725,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad15.AddSubShape.Map.txt": { + "sha256": "17eaa3c5ba4421c2519dea4894fe953fbfc614e90f24e4841ec9e8c485959f81", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H722:7,E\n;:G0;XTR;:H722:8,F\n;:U;XTR;:H722:7,E\n;:U;XTR;:H722:7,V\n;:H722,V\n;:H722,E\n;:G;XTR;:H722:7,F\n;FAC;:H722:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad15.Shape.Map.txt": { + "sha256": "af963cc66423cfb9f40a5c17c7f230c508e40369898799221672b2332064178c", + "text": "BeginElementMap v1\n5 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H722:7,E\n;:G0;XTR;:H722:8,F\n;:U;XTR;:H722:7,E\n;:U;XTR;:H722:7,V\n;:H722,V\n;:H722,E\n;:G;XTR;:H722:7,F\n;FAC;:H722:4,F\n\nMapCount 1\n\nElementMap 1 5 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pocket15.AddSubShape.Map.txt": { + "sha256": "2c0c25f21acf8a80c0cbe00660ad51f5548664fbec6d78de57dfc38e43890ede", + "text": "BeginElementMap v1\n7 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H724:7,F\n;FAC;:H724:4,F\n;:G;XTR;:H724:7,E\n;:G0;XTR;:H724:8,F\n;:U;XTR;:H724:7,E\n;:U;XTR;:H724:7,V\n;:H724,V\n;:H724,E\n\nMapCount 1\n\nElementMap 1 7 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#1f:2.6 0\n$#20:4.6 0\n$#b:1.b 0\n$#26:1.8 0\n$#21:6.6 0\n$#b:2.b 0\n$#26:2.8.b.1d 0\n$#22:8.6 0\n$#b:3.b 0\n$#26:3.8.b.1d 0\n$#b:4.b 0\n$#26:4.8.b.1d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#1d:1.4 0\n$#1d:2.4.b 0\n$#1d:3.4.b 0\n$#1d:4.4.b 0\n$#1d:1.5 0\n$#24:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2.a $#3.a 0\n$#28:2.9 0\n$#4.a $#5.a 0\n$#29:4.9 0\n$#6.a $#7.a 0\n$#2a:6.9 0\n$#8.a $#9.a 0\n$#2b:8.9 0\n\nEndMap\n" + }, + "Pocket15.Shape.Map.txt": { + "sha256": "62cf2cc24fb6719c8226266aa23967a30ea71ac69ab1d6938b762978a2e49ff2", + "text": "BeginElementMap v1\n2 PostfixCount 9\nEdge\nFace\nVertex\n;:H723,V\n;:H723,F\n;:H723,E\n;:H-725,E\n;:H-725,V\n;:H-725,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#28:2.7 0\n$#29:4.7 0\n$#1d:1.7 0\n$#43:1.7 0\n$#2b:8.7 0\n$#1d:4.7.b 0\n$#43:4.7.b.1d.26 0\n$#2a:6.7 0\n$#1d:2.7.b 0\n$#43:2.7.b.1d.26 0\n$#1d:3.7.b 0\n$#43:3.7.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 13\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#38:1.5 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:4.9.b.1d 0\n$#26:2.9.b.1d 0\n$#24:1.9 0\n$#45:1.9 0\n$#26:3.9.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 $#39:3.8 0\n$#3b:2.8 0\n$#20.8 $#3c:5.8 0\n$#3d:4.8 0\n$#22.8 $#40:9.8 0\n$#41:8.8 0\n$#21.8 $#3e:7.8 0\n$#3f:6.8 0\n\nEndMap\n" + }, + "PocketSketch15.Shape.Map.txt": { + "sha256": "1ed561710b6beacd691b5c137e89026185121dd34f9665cf426096572e48efa0", + "text": "BeginElementMap v1\n6 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 6 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + }, + "Sketch15.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pocket15", + "id": "partdesign-pocket", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body15.Shape.Map.txt" + ], + "elementMapSize": 52, + "elementMapVersion": "15.70200.5", + "label": "Body15", + "name": "Body15", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:H723,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:1;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H722,E" + ], + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:H723,F;:H725,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:H723,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:4;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:H722,E" + ], + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:H723,F;:H725,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:H723,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:2;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:H722,E" + ], + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:H723,F;:H725,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:H723,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#14:1;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H722,E" + ], + "mappedName": "#d:1;FAC;:H722:4,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:H723,F;:H725,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#38:1;:H723,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#38:1;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:H722:4,F", + "#b:1;:H722,E" + ], + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:1;:H723,F;:H725,F", + "mappedStringIds": [ + 56 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:H723,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:3;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:H722,E" + ], + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:H723,F;:H725,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#26:1;:H-725,F" + ], + "mappedName": "#26:1;:H-725,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:H724:7,F", + "#b:1;:H724,E" + ], + "mappedName": "#26:1;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:H-725,F;:H725,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#26:4;:H-725,F" + ], + "mappedName": "#26:4;:H-725,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:H724:7,F", + "#b:4;:H724,E" + ], + "mappedName": "#26:4;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:H-725,F;:H725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#26:2;:H-725,F" + ], + "mappedName": "#26:2;:H-725,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:H724:7,F", + "#b:2;:H724,E" + ], + "mappedName": "#26:2;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:H-725,F;:H725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#24:1;:H-725,F" + ], + "mappedName": "#24:1;:H-725,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;FAC;:H724:4,F", + "#b:1;:H724,E" + ], + "mappedName": "#24:1;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "mappedName": "#24:1;:H-725,F;:H725,F", + "mappedStringIds": [ + 36 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#45:1;:H-725,F" + ], + "mappedName": "#45:1;:H-725,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#24:1;:G0;XTR;:H724:8,F", + "#1d:1;FAC;:H724:4,F", + "#b:1;:H724,E" + ], + "mappedName": "#45:1;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "mappedName": "#45:1;:H-725,F;:H725,F", + "mappedStringIds": [ + 69 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [ + "#26:3;:H-725,F" + ], + "mappedName": "#26:3;:H-725,F;:H725,F", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:H724:7,F", + "#b:3;:H724,E" + ], + "mappedName": "#26:3;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:H-725,F;:H725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#18:1;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:H722,V" + ], + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:H723,E;:H725,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#19:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:H722,V" + ], + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:H723,E;:H725,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:1;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:H723,E;:H725,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:1;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:H722:7,F", + "#b:1;:H722,E" + ], + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:H723,E;:H725,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1b:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:H722,V" + ], + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:H723,E;:H725,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:4;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:4;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:H722:7,F", + "#b:4;:H722,E" + ], + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1a:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:H722,V" + ], + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:H723,E;:H725,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:H722:7,F", + "#b:2;:H722,E" + ], + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:3;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:H723,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:3;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:H722:7,F", + "#b:3;:H722,E" + ], + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#28:2;:H-725,E" + ], + "mappedName": "#28:2;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:H724:7,E", + "#22;:H724,V", + "#8;:H724,V" + ], + "mappedName": "#28:2;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:H-725,E;:H725,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#29:4;:H-725,E" + ], + "mappedName": "#29:4;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:H724:7,E", + "#44;:H724,V", + ";:G0;XTR;:H724:8,F" + ], + "mappedName": "#29:4;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:H-725,E;:H725,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#1d:1;:H-725,E" + ], + "mappedName": "#1d:1;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:H724,E" + ], + "mappedName": "#1d:1;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:H-725,E;:H725,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#43:1;:H-725,E" + ], + "mappedName": "#43:1;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:1;:U;XTR;:H724:7,E", + "#1d:1;:G;XTR;:H724:7,F", + "#b:1;:H724,E" + ], + "mappedName": "#43:1;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "mappedName": "#43:1;:H-725,E;:H725,E", + "mappedStringIds": [ + 67 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#2b:8;:H-725,E" + ], + "mappedName": "#2b:8;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:H724:7,E", + "#88;:H724,V" + ], + "mappedName": "#2b:8;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:H-725,E;:H725,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#1d:4;:H-725,E" + ], + "mappedName": "#1d:4;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:H724,E" + ], + "mappedName": "#1d:4;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#43:4;:H-725,E" + ], + "mappedName": "#43:4;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:4;:U;XTR;:H724:7,E", + "#1d:4;:G;XTR;:H724:7,F", + "#b:4;:H724,E" + ], + "mappedName": "#43:4;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:4;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#2a:6;:H-725,E" + ], + "mappedName": "#2a:6;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:H724:7,E", + "#66;:H724,V" + ], + "mappedName": "#2a:6;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:H-725,E;:H725,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#1d:2;:H-725,E" + ], + "mappedName": "#1d:2;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:H724,E" + ], + "mappedName": "#1d:2;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#43:2;:H-725,E" + ], + "mappedName": "#43:2;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:2;:U;XTR;:H724:7,E", + "#1d:2;:G;XTR;:H724:7,F", + "#b:2;:H724,E" + ], + "mappedName": "#43:2;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:2;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#1d:3;:H-725,E" + ], + "mappedName": "#1d:3;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:H724,E" + ], + "mappedName": "#1d:3;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#43:3;:H-725,E" + ], + "mappedName": "#43:3;:H-725,E;:H725,E", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:3;:U;XTR;:H724:7,E", + "#1d:3;:G;XTR;:H724:7,F", + "#b:3;:H724,E" + ], + "mappedName": "#43:3;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:3;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#f:1;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:H723,V;:H725,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2e:1;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:H722:7,E", + "#2:1;:H722,V" + ], + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:H723,V;:H725,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#10:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:H723,V;:H725,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#30:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:H722:7,E", + "#4:2;:H722,V" + ], + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:H723,V;:H725,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#12:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:H723,V;:H725,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#34:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:H722:7,E", + "#8:2;:H722,V" + ], + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:H723,V;:H725,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#11:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:H723,V;:H725,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:H723,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#32:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:H722:7,E", + "#6:2;:H722,V" + ], + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:H723,V;:H725,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#1f;:H-725,V" + ], + "mappedName": "#1f;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2;:H724,V" + ], + "mappedName": "#1f;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:H-725,V;:H725,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#3b:2;:H-725,V" + ], + "mappedName": "#3b:2;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#28:2;:U;XTR;:H724:7,V", + "#1f:2;:G;XTR;:H724:7,E", + "#22;:H724,V", + "#8;:H724,V" + ], + "mappedName": "#3b:2;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:2;:H-725,V;:H725,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#20;:H-725,V" + ], + "mappedName": "#20;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4;:H724,V" + ], + "mappedName": "#20;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:H-725,V;:H725,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#3d:4;:H-725,V" + ], + "mappedName": "#3d:4;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#29:4;:U;XTR;:H724:7,V", + "#20:4;:G;XTR;:H724:7,E", + "#44;:H724,V", + ";:G0;XTR;:H724:8,F" + ], + "mappedName": "#3d:4;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:4;:H-725,V;:H725,V", + "mappedStringIds": [ + 61 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#22;:H-725,V" + ], + "mappedName": "#22;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8;:H724,V" + ], + "mappedName": "#22;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:H-725,V;:H725,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#41:8;:H-725,V" + ], + "mappedName": "#41:8;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2b:8;:U;XTR;:H724:7,V", + "#22:8;:G;XTR;:H724:7,E", + "#88;:H724,V" + ], + "mappedName": "#41:8;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:8;:H-725,V;:H725,V", + "mappedStringIds": [ + 65 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#21;:H-725,V" + ], + "mappedName": "#21;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6;:H724,V" + ], + "mappedName": "#21;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:H-725,V;:H725,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#3f:6;:H-725,V" + ], + "mappedName": "#3f:6;:H-725,V;:H725,V", + "object": "Body15", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2a:6;:U;XTR;:H724:7,V", + "#21:6;:G;XTR;:H724:7,E", + "#66;:H724,V" + ], + "mappedName": "#3f:6;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:6;:H-725,V;:H725,V", + "mappedStringIds": [ + 63 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 52, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 52, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:H723,F;:H725,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:H723,F;:H725,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body15:face:0", + "sourceRefs": [ + { + "mappedName": "#16:1;:H723,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#16:1;:H723,F", + "stageId": "Pocket15" + }, + { + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:1;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:H723,F;:H725,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:H723,F;:H725,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body15:face:1", + "sourceRefs": [ + { + "mappedName": "#16:4;:H723,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#16:4;:H723,F", + "stageId": "Pocket15" + }, + { + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:4;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:H723,F;:H725,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:H723,F;:H725,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body15:face:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:H723,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#16:2;:H723,F", + "stageId": "Pocket15" + }, + { + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:2;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:H723,F;:H725,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:H723,F;:H725,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body15:face:3", + "sourceRefs": [ + { + "mappedName": "#14:1;:H723,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#14:1;:H723,F", + "stageId": "Pocket15" + }, + { + "mappedName": "#d:1;FAC;:H722:4,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:1;FAC;:H722:4,F", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "kind": "face", + "mappedName": "#38:1;:H723,F;:H725,F", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#38:1;:H723,F;:H725,F", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body15:face:4", + "sourceRefs": [ + { + "mappedName": "#38:1;:H723,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#38:1;:H723,F", + "stageId": "Pocket15" + }, + { + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#14:1;:G0;XTR;:H722:8,F", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:H723,F;:H725,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:H723,F;:H725,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body15:face:5", + "sourceRefs": [ + { + "mappedName": "#16:3;:H723,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#16:3;:H723,F", + "stageId": "Pocket15" + }, + { + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:3;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:H-725,F;:H725,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:H-725,F;:H725,F", + "stringIds": [ + 38 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body15:face:6", + "sourceRefs": [ + { + "mappedName": "#26:1;:H-725,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#26:1;:H-725,F", + "stageId": "Pocket15" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:H-725,F;:H725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:4;:H-725,F;:H725,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body15:face:7", + "sourceRefs": [ + { + "mappedName": "#26:4;:H-725,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#26:4;:H-725,F", + "stageId": "Pocket15" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g4;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:H-725,F;:H725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:2;:H-725,F;:H725,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body15:face:8", + "sourceRefs": [ + { + "mappedName": "#26:2;:H-725,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#26:2;:H-725,F", + "stageId": "Pocket15" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "kind": "face", + "mappedName": "#24:1;:H-725,F;:H725,F", + "mappedStringIds": [ + 36 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#24:1;:H-725,F;:H725,F", + "stringIds": [ + 36 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body15:face:9", + "sourceRefs": [ + { + "mappedName": "#24:1;:H-725,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#24:1;:H-725,F", + "stageId": "Pocket15" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "kind": "face", + "mappedName": "#45:1;:H-725,F;:H725,F", + "mappedStringIds": [ + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#45:1;:H-725,F;:H725,F", + "stringIds": [ + 69 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body15:face:10", + "sourceRefs": [ + { + "mappedName": "#45:1;:H-725,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#45:1;:H-725,F", + "stageId": "Pocket15" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:H-725,F;:H725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "#26:3;:H-725,F;:H725,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body15:face:11", + "sourceRefs": [ + { + "mappedName": "#26:3;:H-725,F", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#26:3;:H-725,F", + "stageId": "Pocket15" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:H723,E;:H725,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:H723,E;:H725,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body15:edge:0", + "sourceRefs": [ + { + "mappedName": "#18:1;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#18:1;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#f:1;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:H723,E;:H725,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:H723,E;:H725,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body15:edge:1", + "sourceRefs": [ + { + "mappedName": "#19:2;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#19:2;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#10:2;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:H723,E;:H725,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:H723,E;:H725,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body15:edge:2", + "sourceRefs": [ + { + "mappedName": "#d:1;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#d:1;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#b:1;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:1;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:H723,E;:H725,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:H723,E;:H725,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body15:edge:3", + "sourceRefs": [ + { + "mappedName": "#36:1;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#36:1;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:1;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:H723,E;:H725,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:H723,E;:H725,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body15:edge:4", + "sourceRefs": [ + { + "mappedName": "#1b:2;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1b:2;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#12:2;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:H723,E;:H725,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body15:edge:5", + "sourceRefs": [ + { + "mappedName": "#d:4;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#d:4;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#b:4;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:4;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:H723,E;:H725,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body15:edge:6", + "sourceRefs": [ + { + "mappedName": "#36:4;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#36:4;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:4;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:H723,E;:H725,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:H723,E;:H725,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body15:edge:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1a:2;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#11:2;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:H723,E;:H725,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body15:edge:8", + "sourceRefs": [ + { + "mappedName": "#d:2;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#d:2;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#b:2;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:2;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:H723,E;:H725,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body15:edge:9", + "sourceRefs": [ + { + "mappedName": "#36:2;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#36:2;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:2;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:H723,E;:H725,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body15:edge:10", + "sourceRefs": [ + { + "mappedName": "#d:3;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#d:3;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#b:3;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:3;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:H723,E;:H725,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:H723,E;:H725,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body15:edge:11", + "sourceRefs": [ + { + "mappedName": "#36:3;:H723,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#36:3;:H723,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:3;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:H-725,E;:H725,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#28:2;:H-725,E;:H725,E", + "stringIds": [ + 40 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body15:edge:12", + "sourceRefs": [ + { + "mappedName": "#28:2;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#28:2;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:H-725,E;:H725,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#29:4;:H-725,E;:H725,E", + "stringIds": [ + 41 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body15:edge:13", + "sourceRefs": [ + { + "mappedName": "#29:4;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#29:4;:H-725,E", + "stageId": "Pocket15" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:H-725,E;:H725,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:1;:H-725,E;:H725,E", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body15:edge:14", + "sourceRefs": [ + { + "mappedName": "#1d:1;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1d:1;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "kind": "edge", + "mappedName": "#43:1;:H-725,E;:H725,E", + "mappedStringIds": [ + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#43:1;:H-725,E;:H725,E", + "stringIds": [ + 67 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body15:edge:15", + "sourceRefs": [ + { + "mappedName": "#43:1;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#43:1;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:H-725,E;:H725,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#2b:8;:H-725,E;:H725,E", + "stringIds": [ + 43 + ] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Body15:edge:16", + "sourceRefs": [ + { + "mappedName": "#2b:8;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#2b:8;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#88", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:4;:H-725,E;:H725,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Body15:edge:17", + "sourceRefs": [ + { + "mappedName": "#1d:4;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1d:4;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g4;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:4;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#43:4;:H-725,E;:H725,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Body15:edge:18", + "sourceRefs": [ + { + "mappedName": "#43:4;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#43:4;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g4;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:H-725,E;:H725,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:H-725,E;:H725,E", + "stringIds": [ + 42 + ] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "Body15:edge:19", + "sourceRefs": [ + { + "mappedName": "#2a:6;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#2a:6;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#66", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#1d:2;:H-725,E;:H725,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Body15:edge:20", + "sourceRefs": [ + { + "mappedName": "#1d:2;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1d:2;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:2;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#43:2;:H-725,E;:H725,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "Body15:edge:21", + "sourceRefs": [ + { + "mappedName": "#43:2;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#43:2;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#1d:3;:H-725,E;:H725,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Body15:edge:22", + "sourceRefs": [ + { + "mappedName": "#1d:3;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1d:3;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:3;:H-725,E;:H725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#43:3;:H-725,E;:H725,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Body15:edge:23", + "sourceRefs": [ + { + "mappedName": "#43:3;:H-725,E", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#43:3;:H-725,E", + "stageId": "Pocket15" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:H723,V;:H725,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:H723,V;:H725,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body15:vertex:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#f:1;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#2:1;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#2:1;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:H723,V;:H725,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:H723,V;:H725,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body15:vertex:1", + "sourceRefs": [ + { + "mappedName": "#2e:1;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#2e:1;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#18:1;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:H723,V;:H725,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:H723,V;:H725,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body15:vertex:2", + "sourceRefs": [ + { + "mappedName": "#10:2;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#10:2;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#4:2;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#4:2;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:H723,V;:H725,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:H723,V;:H725,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body15:vertex:3", + "sourceRefs": [ + { + "mappedName": "#30:2;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#30:2;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#19:2;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:H723,V;:H725,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:H723,V;:H725,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body15:vertex:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#12:2;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#8:2;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#8:2;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:H723,V;:H725,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:H723,V;:H725,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body15:vertex:5", + "sourceRefs": [ + { + "mappedName": "#34:2;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#34:2;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#1b:2;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:H723,V;:H725,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:H723,V;:H725,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body15:vertex:6", + "sourceRefs": [ + { + "mappedName": "#11:2;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#11:2;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#6:2;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#6:2;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:H723,V;:H725,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:H723,V;:H725,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body15:vertex:7", + "sourceRefs": [ + { + "mappedName": "#32:2;:H723,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#32:2;:H723,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#1a:2;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:H-725,V;:H725,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:H-725,V;:H725,V", + "stringIds": [ + 31 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body15:vertex:8", + "sourceRefs": [ + { + "mappedName": "#1f;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#1f;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1v1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:2;:H-725,V;:H725,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#3b:2;:H-725,V;:H725,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body15:vertex:9", + "sourceRefs": [ + { + "mappedName": "#3b:2;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#3b:2;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:H-725,V;:H725,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#20;:H-725,V;:H725,V", + "stringIds": [ + 32 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body15:vertex:10", + "sourceRefs": [ + { + "mappedName": "#20;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#20;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "kind": "vertex", + "mappedName": "#3d:4;:H-725,V;:H725,V", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#3d:4;:H-725,V;:H725,V", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body15:vertex:11", + "sourceRefs": [ + { + "mappedName": "#3d:4;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#3d:4;:H-725,V", + "stageId": "Pocket15" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:H-725,V;:H725,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#22;:H-725,V;:H725,V", + "stringIds": [ + 34 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body15:vertex:12", + "sourceRefs": [ + { + "mappedName": "#22;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#22;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "kind": "vertex", + "mappedName": "#41:8;:H-725,V;:H725,V", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#41:8;:H-725,V;:H725,V", + "stringIds": [ + 65 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body15:vertex:13", + "sourceRefs": [ + { + "mappedName": "#41:8;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#41:8;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#88", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:H-725,V;:H725,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:H-725,V;:H725,V", + "stringIds": [ + 33 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body15:vertex:14", + "sourceRefs": [ + { + "mappedName": "#21;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#21;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "kind": "vertex", + "mappedName": "#3f:6;:H-725,V;:H725,V", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3f:6;:H-725,V;:H725,V", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body15:vertex:15", + "sourceRefs": [ + { + "mappedName": "#3f:6;:H-725,V", + "objectId": "Pocket15", + "persistentId": "Pocket15:mapped:#3f:6;:H-725,V", + "stageId": "Pocket15" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#66", + "stageId": "PocketSketch15" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body15", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body15", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 12, + "solids": 1, + "valid": true, + "volume": 192.32 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch15.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch15", + "name": "Sketch15", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch15:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch15:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch15:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch15:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch15:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch15:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch15:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch15:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch15", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch15", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad15.AddSubShape.Map.txt", + "Pad15.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad15", + "name": "Pad15", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:H722,E" + ], + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:H722,E" + ], + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:H722,E" + ], + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:H722,E" + ], + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:H722,E" + ], + "mappedName": "#d:1;FAC;:H722:4,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H722:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:H722:4,F", + "#b:1;:H722,E" + ], + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:H722,V" + ], + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:H722,V" + ], + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H722,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:H722:7,F", + "#b:1;:H722,E" + ], + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:H722,V" + ], + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H722,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:H722:7,F", + "#b:2;:H722,E" + ], + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:H722,V" + ], + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H722,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:H722:7,F", + "#b:3;:H722,E" + ], + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H722,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:H722:7,F", + "#b:4;:H722,E" + ], + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H722,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:H722:7,E", + "#2:1;:H722,V" + ], + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H722,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:H722:7,E", + "#4:2;:H722,V" + ], + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H722,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:H722:7,E", + "#6:2;:H722,V" + ], + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H722,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:H722:7,E", + "#8:2;:H722,V" + ], + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H722:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad15:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H722:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad15:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H722:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad15:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H722:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad15:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H722:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H722:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad15:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H722:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad15:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H722:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad15:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H722:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad15:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H722,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H722,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad15:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H722:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad15:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H722:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad15:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H722,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H722,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad15:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H722:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad15:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H722:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad15:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H722,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H722,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad15:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H722:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad15:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H722,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H722,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad15:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H722:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad15:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H722,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H722,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad15:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H722:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad15:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H722,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H722,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad15:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H722:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad15:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H722,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H722,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad15:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H722:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad15:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H722,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H722,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad15:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H722:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad15:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad15", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad15", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 199.99999999999994 + }, + "typeId": "PartDesign::Pad" + }, + { + "elementMap2ResourcePaths": [ + "PocketSketch15.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "PocketSketch15", + "name": "PocketSketch15", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch15:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch15:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch15:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch15:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch15:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch15:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch15:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch15:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "PocketSketch15", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "PocketSketch15", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pocket15.AddSubShape.Map.txt", + "Pocket15.Shape.Map.txt" + ], + "elementMapSize": 60, + "elementMapVersion": "15.70200.5", + "label": "Pocket15", + "name": "Pocket15", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H722,E" + ], + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:H723,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:H722,E" + ], + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:H723,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:H722,E" + ], + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:H723,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H722,E" + ], + "mappedName": "#d:1;FAC;:H722:4,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:H723,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#38:1;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:H722:4,F", + "#b:1;:H722,E" + ], + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:1;:H723,F", + "mappedStringIds": [ + 56 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:H723,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:H722,E" + ], + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:H723,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:H724:7,F", + "#b:1;:H724,E" + ], + "mappedName": "#26:1;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:H-725,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:H724:7,F", + "#b:4;:H724,E" + ], + "mappedName": "#26:4;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:H-725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:H724:7,F", + "#b:2;:H724,E" + ], + "mappedName": "#26:2;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:H-725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#1d:1;FAC;:H724:4,F", + "#b:1;:H724,E" + ], + "mappedName": "#24:1;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "mappedName": "#24:1;:H-725,F", + "mappedStringIds": [ + 36 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#24:1;:G0;XTR;:H724:8,F", + "#1d:1;FAC;:H724:4,F", + "#b:1;:H724,E" + ], + "mappedName": "#45:1;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "mappedName": "#45:1;:H-725,F", + "mappedStringIds": [ + 69 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:H724:7,F", + "#b:3;:H724,E" + ], + "mappedName": "#26:3;:H-725,F", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:H-725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:H722,V" + ], + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:H723,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:H722,V" + ], + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:H723,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:H723,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:H722:7,F", + "#b:1;:H722,E" + ], + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:H723,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:H722,V" + ], + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:H723,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:H723,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:H722:7,F", + "#b:4;:H722,E" + ], + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:H723,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:H722,V" + ], + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:H723,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:H723,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:H722:7,F", + "#b:2;:H722,E" + ], + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:H723,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:H722,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:H723,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:H723,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:H722:7,F", + "#b:3;:H722,E" + ], + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:H723,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:H724:7,E", + "#22;:H724,V", + "#8;:H724,V" + ], + "mappedName": "#28:2;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:H-725,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:H724:7,E", + "#44;:H724,V", + ";:G0;XTR;:H724:8,F" + ], + "mappedName": "#29:4;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:H-725,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#b:1;:H724,E" + ], + "mappedName": "#1d:1;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:H-725,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#26:1;:U;XTR;:H724:7,E", + "#1d:1;:G;XTR;:H724:7,F", + "#b:1;:H724,E" + ], + "mappedName": "#43:1;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "mappedName": "#43:1;:H-725,E", + "mappedStringIds": [ + 67 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:H724:7,E", + "#88;:H724,V" + ], + "mappedName": "#2b:8;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:H-725,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#b:4;:H724,E" + ], + "mappedName": "#1d:4;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:H-725,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#26:4;:U;XTR;:H724:7,E", + "#1d:4;:G;XTR;:H724:7,F", + "#b:4;:H724,E" + ], + "mappedName": "#43:4;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:4;:H-725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:H724:7,E", + "#66;:H724,V" + ], + "mappedName": "#2a:6;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:H-725,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#b:2;:H724,E" + ], + "mappedName": "#1d:2;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:H-725,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#26:2;:U;XTR;:H724:7,E", + "#1d:2;:G;XTR;:H724:7,F", + "#b:2;:H724,E" + ], + "mappedName": "#43:2;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:2;:H-725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#b:3;:H724,E" + ], + "mappedName": "#1d:3;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:H-725,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#26:3;:U;XTR;:H724:7,E", + "#1d:3;:G;XTR;:H724:7,F", + "#b:3;:H724,E" + ], + "mappedName": "#43:3;:H-725,E", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:3;:H-725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:H723,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:H722:7,E", + "#2:1;:H722,V" + ], + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:H723,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:H723,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:H722:7,E", + "#4:2;:H722,V" + ], + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:H723,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:H723,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:H722:7,E", + "#8:2;:H722,V" + ], + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:H723,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:H722,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:H723,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:H723,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:H722:7,E", + "#6:2;:H722,V" + ], + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "object": "Pad15", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:H723,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#2;:H724,V" + ], + "mappedName": "#1f;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:H-725,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#28:2;:U;XTR;:H724:7,V", + "#1f:2;:G;XTR;:H724:7,E", + "#22;:H724,V", + "#8;:H724,V" + ], + "mappedName": "#3b:2;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:2;:H-725,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#4;:H724,V" + ], + "mappedName": "#20;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:H-725,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#29:4;:U;XTR;:H724:7,V", + "#20:4;:G;XTR;:H724:7,E", + "#44;:H724,V", + ";:G0;XTR;:H724:8,F" + ], + "mappedName": "#3d:4;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:4;:H-725,V", + "mappedStringIds": [ + 61 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#8;:H724,V" + ], + "mappedName": "#22;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:H-725,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#2b:8;:U;XTR;:H724:7,V", + "#22:8;:G;XTR;:H724:7,E", + "#88;:H724,V" + ], + "mappedName": "#41:8;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:8;:H-725,V", + "mappedStringIds": [ + 65 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#6;:H724,V" + ], + "mappedName": "#21;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:H-725,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#2a:6;:U;XTR;:H724:7,V", + "#21:6;:G;XTR;:H724:7,E", + "#66;:H724,V" + ], + "mappedName": "#3f:6;:H-725,V", + "object": "Pocket15", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch15", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:6;:H-725,V", + "mappedStringIds": [ + 63 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 52, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 52, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:H723,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:H723,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket15:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:1;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:H723,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:H723,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket15:face:1", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:4;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:H723,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:H723,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket15:face:2", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:2;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:H723,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:H723,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket15:face:3", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:H722:4,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:1;FAC;:H722:4,F", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "kind": "face", + "mappedName": "#38:1;:H723,F", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#38:1;:H723,F", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket15:face:4", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:H722:8,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#14:1;:G0;XTR;:H722:8,F", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:H723,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:H723,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket15:face:5", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:H722:7,F", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#d:3;:G;XTR;:H722:7,F", + "stageId": "Pad15" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:H-725,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:H-725,F", + "stringIds": [ + 38 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket15:face:6", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:H-725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:4;:H-725,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket15:face:7", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g4;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:H-725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:2;:H-725,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket15:face:8", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "kind": "face", + "mappedName": "#24:1;:H-725,F", + "mappedStringIds": [ + 36 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#24:1;:H-725,F", + "stringIds": [ + 36 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket15:face:9", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "kind": "face", + "mappedName": "#45:1;:H-725,F", + "mappedStringIds": [ + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#45:1;:H-725,F", + "stringIds": [ + 69 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket15:face:10", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:H-725,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "#26:3;:H-725,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket15:face:11", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:H723,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:H723,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket15:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#f:1;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:H723,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:H723,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket15:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#10:2;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:H723,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:H723,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket15:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:1;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:H723,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:H723,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket15:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:1;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:H723,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:H723,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket15:edge:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#12:2;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:H723,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:H723,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket15:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:4;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:4;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:H723,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:H723,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket15:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:4;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g4;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:H723,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:H723,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket15:edge:7", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#11:2;:G;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:H723,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:H723,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket15:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:2;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:2;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:H723,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:H723,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket15:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:2;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:H723,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:H723,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket15:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:3;:H722,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#b:3;:H722,E", + "stageId": "Pad15" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:H723,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:H723,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket15:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:H722:7,E", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#16:3;:U;XTR;:H722:7,E", + "stageId": "Pad15" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:H-725,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#28:2;:H-725,E", + "stringIds": [ + 40 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket15:edge:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:H-725,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#29:4;:H-725,E", + "stringIds": [ + 41 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket15:edge:13", + "sourceRefs": [] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:H-725,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:1;:H-725,E", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket15:edge:14", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "kind": "edge", + "mappedName": "#43:1;:H-725,E", + "mappedStringIds": [ + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#43:1;:H-725,E", + "stringIds": [ + 67 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket15:edge:15", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:H-725,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#2b:8;:H-725,E", + "stringIds": [ + 43 + ] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Pocket15:edge:16", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#88", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:H-725,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:4;:H-725,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Pocket15:edge:17", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g4;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:4;:H-725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#43:4;:H-725,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Pocket15:edge:18", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g4;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:H-725,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:H-725,E", + "stringIds": [ + 42 + ] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "Pocket15:edge:19", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#66", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:H-725,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#1d:2;:H-725,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Pocket15:edge:20", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:2;:H-725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#43:2;:H-725,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "Pocket15:edge:21", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:H-725,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#1d:3;:H-725,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Pocket15:edge:22", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:3;:H-725,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#43:3;:H-725,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Pocket15:edge:23", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:H723,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:H723,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket15:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#2:1;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:H723,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:H723,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket15:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#18:1;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v11;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:H723,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:H723,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket15:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#4:2;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:H723,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:H723,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket15:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#19:2;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g1v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:H723,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:H723,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket15:vertex:4", + "sourceRefs": [ + { + "mappedName": "#8:2;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#8:2;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:H723,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:H723,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket15:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#1b:2;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g3v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:H723,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:H723,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket15:vertex:6", + "sourceRefs": [ + { + "mappedName": "#6:2;:H722,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#6:2;:H722,V", + "stageId": "Pad15" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:H723,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:H723,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket15:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:H722:7,V", + "objectId": "Pad15", + "persistentId": "Pad15:mapped:#1a:2;:U;XTR;:H722:7,V", + "stageId": "Pad15" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch15", + "persistentId": "Sketch15:mapped:g2v22;SKT", + "stageId": "Sketch15" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:H-725,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:H-725,V", + "stringIds": [ + 31 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket15:vertex:8", + "sourceRefs": [ + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1v1;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:2;:H-725,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#3b:2;:H-725,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket15:vertex:9", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:H-725,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#20;:H-725,V", + "stringIds": [ + 32 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket15:vertex:10", + "sourceRefs": [ + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g1v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "kind": "vertex", + "mappedName": "#3d:4;:H-725,V", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#3d:4;:H-725,V", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket15:vertex:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:H-725,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#22;:H-725,V", + "stringIds": [ + 34 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket15:vertex:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g3v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "kind": "vertex", + "mappedName": "#41:8;:H-725,V", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#41:8;:H-725,V", + "stringIds": [ + 65 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket15:vertex:13", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#88", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:H-725,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:H-725,V", + "stringIds": [ + 33 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket15:vertex:14", + "sourceRefs": [ + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:g2v2;SKT", + "stageId": "PocketSketch15" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "kind": "vertex", + "mappedName": "#3f:6;:H-725,V", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3f:6;:H-725,V", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket15:vertex:15", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch15", + "persistentId": "PocketSketch15:mapped:#66", + "stageId": "PocketSketch15" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pocket15", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pocket15", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 12, + "solids": 1, + "valid": true, + "volume": 192.32 + }, + "typeId": "PartDesign::Pocket" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "d7f89395efe38cc2d6c4cec84da13cfe5201cb3192c1b5fff25e451749fd2875", + "text": "StringTableStart v1 69\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:H722,E\n-1.4c.1.2\n-1.0 0:;:H722,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:H722:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H722:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H722:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:H724,E\n-1.4c.1.12\n-1.0 0:;:H724,V\n-1.2c.1.1d\n-1.2c.0.2\n-1.2c.0.2\n-1.2c.0.2\n-1.0 0:;FAC;:H724:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H724:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H724:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.-19.-1f\n-1.0 0:;:U;XTR;:H722:7,V\n-1.4c.1.16\n-1.4c.-1f.-13\n-1.4c.1f.14\n-1.4c.-1f.-12\n-1.4c.1f.13\n-1.4c.-1f.-11\n-1.4c.1f.12\n-1.0 0:;:U;XTR;:H722:7,E\n-1.4c.1.20\n-1.0 0:;:G0;XTR;:H722:8,F\n-1.4c.1.24\n-1.2c.-19.-11\n-1.0 0:;:U;XTR;:H724:7,V\n-1.4c.1.13\n-1.2c.-1c.-23\n-1.4c.1c.24\n-1.2c.-1c.-22\n-1.4c.1c.23\n-1.2c.-1c.-21\n-1.4c.1c.22\n-1.0 0:;:U;XTR;:H724:7,E\n-1.4c.1.1d\n-1.0 0:;:G0;XTR;:H724:8,F\n-1.4c.1.21\n" + } + }, + { + "elementMapResources": { + "Body16.Shape.Map.txt": { + "sha256": "24d9d34a25eec4ea4b0f4b5bd4b44f4e90a3131f255e193d7436266746a8b0da", + "text": "BeginElementMap v1\n1 PostfixCount 18\nEdge\nFace\nVertex\n;:H27d,V\n;:M;CUT;:H27d:7,F\n;:H27d,F\n;:H27d,E\n;:M;CUT;:H-27f:7,E\n;:M;CUT;:H-27f:7,V\n;:G#37;CUT;:H-27f:a,E\n;:M;CUT;:H-27f:7,F\n;:G#38;CUT;:H-27f:a,E\n;:G#39;CUT;:H-27f:a,E\n;:G#3a;CUT;:H-27f:a,E\n;:G#3d;CUT;:H-27f:a,V\n;:G#3e;CUT;:H-27f:a,V\n;:G#3f;CUT;:H-27f:a,V\n;:G#40;CUT;:H-27f:a,V\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.7 0\n$#19:2.7 0\n$#d:1.7 0\n$#36:1.7 0\n$#1b:2.7 0\n$#d:4.7.b 0\n$#36:4.7.b.d.16 0\n$#1a:2.7 0\n$#d:2.7.b 0\n$#36:2.7.b.d.16 0\n$#d:3.7.b 0\n$#26:1.a.d.14.37 0\n$#26:2.c.b.d.14.1d.38 0\n$#26:3.d.b.d.14.1d.39 0\n$#26:4.e.b.d.14.1d.3a 0\n$#36:3.7.b.d.16 0\n$#1d:1.8 0\n$#1d:2.8.b 0\n$#1d:3.8.b 0\n$#1d:4.8.b 0\n$#29:4.8 0\n$#28:2.8 0\n$#2a:6.8 0\n$#2b:8.8 0\n\nFace\n\nChildCount 0\n\nNameCount 11\n0\n$#16:1.6 0\n$#16:4.6.b.d 0\n$#16:2.6.b.d 0\n$#14:1.5 0\n$#3c:1.5 0\n$#16:3.6.b.d 0\n$#26:1.b 0\n$#26:2.b.b.1d 0\n$#26:3.b.b.1d 0\n$#26:4.b.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#28:2.f.d.14.3d 0\n$#29:4.10.d.14.3e 0\n$#2a:6.11.d.14.3f 0\n$#2b:8.12.d.14.40 0\n$#1f.9 0\n$#20.9 0\n$#21.9 0\n$#22.9 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 24 639 1 ;:H27f,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 10 639 1 ;:H27f,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 16 639 1 ;:H27f,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad16.AddSubShape.Map.txt": { + "sha256": "ca2992a6d9657a120e0975aae617ae85c7dd7ded873c6dcdcfa30926551a27d8", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H27c:7,E\n;:G0;XTR;:H27c:8,F\n;:U;XTR;:H27c:7,E\n;:U;XTR;:H27c:7,V\n;:H27c,V\n;:H27c,E\n;:G;XTR;:H27c:7,F\n;FAC;:H27c:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad16.Shape.Map.txt": { + "sha256": "e253f1f63fd75cda0c1933315d07e2d8efd32f2bfe5a3429f8d2016e365b4607", + "text": "BeginElementMap v1\n5 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H27c:7,E\n;:G0;XTR;:H27c:8,F\n;:U;XTR;:H27c:7,E\n;:U;XTR;:H27c:7,V\n;:H27c,V\n;:H27c,E\n;:G;XTR;:H27c:7,F\n;FAC;:H27c:4,F\n\nMapCount 1\n\nElementMap 1 5 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pocket16.AddSubShape.Map.txt": { + "sha256": "27f7cbdc6fe5bf484a63cac7ba411c7d8734ef2e2c9329cdcd43ffff1523a061", + "text": "BeginElementMap v1\n7 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H27e:7,F\n;FAC;:H27e:4,F\n;:G;XTR;:H27e:7,E\n;:G0;XTR;:H27e:8,F\n;:U;XTR;:H27e:7,E\n;:U;XTR;:H27e:7,V\n;:H27e,V\n;:H27e,E\n\nMapCount 1\n\nElementMap 1 7 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#1f:2.6 0\n$#20:4.6 0\n$#b:1.b 0\n$#26:1.8 0\n$#21:6.6 0\n$#b:2.b 0\n$#26:2.8.b.1d 0\n$#22:8.6 0\n$#b:3.b 0\n$#26:3.8.b.1d 0\n$#b:4.b 0\n$#26:4.8.b.1d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#1d:1.4 0\n$#1d:2.4.b 0\n$#1d:3.4.b 0\n$#1d:4.4.b 0\n$#1d:1.5 0\n$#24:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2.a $#3.a 0\n$#28:2.9 0\n$#4.a $#5.a 0\n$#29:4.9 0\n$#6.a $#7.a 0\n$#2a:6.9 0\n$#8.a $#9.a 0\n$#2b:8.9 0\n\nEndMap\n" + }, + "Pocket16.Shape.Map.txt": { + "sha256": "51cbab27fa4ea0ce9cbf1da347c251b781cfbf845fa87f028f9e34916d2c2014", + "text": "BeginElementMap v1\n2 PostfixCount 18\nEdge\nFace\nVertex\n;:H27d,V\n;:M;CUT;:H27d:7,F\n;:H27d,F\n;:H27d,E\n;:M;CUT;:H-27f:7,E\n;:M;CUT;:H-27f:7,V\n;:G#37;CUT;:H-27f:a,E\n;:M;CUT;:H-27f:7,F\n;:G#38;CUT;:H-27f:a,E\n;:G#39;CUT;:H-27f:a,E\n;:G#3a;CUT;:H-27f:a,E\n;:G#3d;CUT;:H-27f:a,V\n;:G#3e;CUT;:H-27f:a,V\n;:G#3f;CUT;:H-27f:a,V\n;:G#40;CUT;:H-27f:a,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.7 0\n$#19:2.7 0\n$#d:1.7 0\n$#36:1.7 0\n$#1b:2.7 0\n$#d:4.7.b 0\n$#36:4.7.b.d.16 0\n$#1a:2.7 0\n$#d:2.7.b 0\n$#36:2.7.b.d.16 0\n$#d:3.7.b 0\n$#26:1.a.d.14.37 0\n$#26:2.c.b.d.14.1d.38 0\n$#26:3.d.b.d.14.1d.39 0\n$#26:4.e.b.d.14.1d.3a 0\n$#36:3.7.b.d.16 0\n$#1d:1.8 0\n$#1d:2.8.b 0\n$#1d:3.8.b 0\n$#1d:4.8.b 0\n$#29:4.8 0\n$#28:2.8 0\n$#2a:6.8 0\n$#2b:8.8 0\n\nFace\n\nChildCount 0\n\nNameCount 11\n0\n$#16:1.6 0\n$#16:4.6.b.d 0\n$#16:2.6.b.d 0\n$#14:1.5 0\n$#3c:1.5 0\n$#16:3.6.b.d 0\n$#26:1.b 0\n$#26:2.b.b.1d 0\n$#26:3.b.b.1d 0\n$#26:4.b.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#28:2.f.d.14.3d 0\n$#29:4.10.d.14.3e 0\n$#2a:6.11.d.14.3f 0\n$#2b:8.12.d.14.40 0\n$#1f.9 0\n$#20.9 0\n$#21.9 0\n$#22.9 0\n\nEndMap\n" + }, + "PocketSketch16.Shape.Map.txt": { + "sha256": "1ed561710b6beacd691b5c137e89026185121dd34f9665cf426096572e48efa0", + "text": "BeginElementMap v1\n6 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 6 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + }, + "Sketch16.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pocket16", + "id": "partdesign-pocket-through", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body16.Shape.Map.txt" + ], + "elementMapSize": 50, + "elementMapVersion": "15.70200.5", + "label": "Body16", + "name": "Body16", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:H27d,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:1;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H27c,E" + ], + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:H27d,F;:H27f,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:H27d,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:4;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:H27c,E" + ], + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:H27d,F;:H27f,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:H27d,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:2;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:H27c,E" + ], + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:H27d,F;:H27f,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:M;CUT;:H27d:7,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#14:1;:M;CUT;:H27d:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H27c,E" + ], + "mappedName": "#d:1;FAC;:H27c:4,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:M;CUT;:H27d:7,F;:H27f,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#3c:1;:M;CUT;:H27d:7,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#3c:1;:M;CUT;:H27d:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:H27c:4,F", + "#b:1;:H27c,E" + ], + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 60 + ], + "mappedName": "#3c:1;:M;CUT;:H27d:7,F;:H27f,F", + "mappedStringIds": [ + 60 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:H27d,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:3;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:H27c,E" + ], + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:H27d,F;:H27f,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#26:1;:M;CUT;:H-27f:7,F" + ], + "mappedName": "#26:1;:M;CUT;:H-27f:7,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:H27e:7,F", + "#b:1;:H27e,E" + ], + "mappedName": "#26:1;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#26:2;:M;CUT;:H-27f:7,F" + ], + "mappedName": "#26:2;:M;CUT;:H-27f:7,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:H27e:7,F", + "#b:2;:H27e,E" + ], + "mappedName": "#26:2;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#26:3;:M;CUT;:H-27f:7,F" + ], + "mappedName": "#26:3;:M;CUT;:H-27f:7,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:H27e:7,F", + "#b:3;:H27e,E" + ], + "mappedName": "#26:3;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#26:4;:M;CUT;:H-27f:7,F" + ], + "mappedName": "#26:4;:M;CUT;:H-27f:7,F;:H27f,F", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:H27e:7,F", + "#b:4;:H27e,E" + ], + "mappedName": "#26:4;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#18:1;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:H27c,V" + ], + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:H27d,E;:H27f,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#19:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:H27c,V" + ], + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:1;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:H27d,E;:H27f,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:1;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:H27c:7,F", + "#b:1;:H27c,E" + ], + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:H27d,E;:H27f,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1b:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:H27c,V" + ], + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:4;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:4;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:H27c:7,F", + "#b:4;:H27c,E" + ], + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1a:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:H27c,V" + ], + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:H27c:7,F", + "#b:2;:H27c,E" + ], + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:3;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#26:1;:G#37;CUT;:H-27f:a,E" + ], + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:H27e:7,F", + "#b:1;:H27e,E" + ], + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 13, + 20, + 38, + 55 + ], + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 13, + 20, + 38, + 55 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#26:2;:G#38;CUT;:H-27f:a,E" + ], + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:H27e:7,F", + "#b:2;:H27e,E" + ], + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#26:3;:G#39;CUT;:H-27f:a,E" + ], + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:H27e:7,F", + "#b:3;:H27e,E" + ], + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#26:4;:G#3a;CUT;:H-27f:a,E" + ], + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:H27e:7,F", + "#b:4;:H27e,E" + ], + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:H27d,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:3;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:H27c:7,F", + "#b:3;:H27c,E" + ], + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#1d:1;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:H27e,E" + ], + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#1d:2;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:H27e,E" + ], + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#1d:3;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:H27e,E" + ], + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#1d:4;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:H27e,E" + ], + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#29:4;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#29:4;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:H27e:7,E", + "#44;:H27e,V" + ], + "mappedName": "#29:4;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#28:2;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#28:2;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:H27e:7,E", + "#22;:H27e,V", + "#8;:H27e,V" + ], + "mappedName": "#28:2;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#2a:6;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:H27e:7,E", + "#66;:H27e,V" + ], + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#2b:8;:M;CUT;:H-27f:7,E" + ], + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E;:H27f,E", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:H27e:7,E", + "#88;:H27e,V" + ], + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#f:1;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:H27d,V;:H27f,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2e:1;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:H27c:7,E", + "#2:1;:H27c,V" + ], + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:H27d,V;:H27f,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#10:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#30:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:H27c:7,E", + "#4:2;:H27c,V" + ], + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#12:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#34:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:H27c:7,E", + "#8:2;:H27c,V" + ], + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#11:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:H27d,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#32:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:H27c:7,E", + "#6:2;:H27c,V" + ], + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#28:2;:G#3d;CUT;:H-27f:a,V" + ], + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:H27e:7,E", + "#22;:H27e,V", + "#8;:H27e,V" + ], + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 13, + 20, + 40, + 61 + ], + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 40, + 61 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#29:4;:G#3e;CUT;:H-27f:a,V" + ], + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:H27e:7,E", + "#44;:H27e,V" + ], + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 13, + 20, + 41, + 62 + ], + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 41, + 62 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#2a:6;:G#3f;CUT;:H-27f:a,V" + ], + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:H27e:7,E", + "#66;:H27e,V" + ], + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 13, + 20, + 42, + 63 + ], + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 42, + 63 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#2b:8;:G#40;CUT;:H-27f:a,V" + ], + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:H27e:7,E", + "#88;:H27e,V" + ], + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 13, + 20, + 43, + 64 + ], + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 43, + 64 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#1f;:M;CUT;:H-27f:7,V" + ], + "mappedName": "#1f;:M;CUT;:H-27f:7,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2;:H27e,V" + ], + "mappedName": "#1f;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#20;:M;CUT;:H-27f:7,V" + ], + "mappedName": "#20;:M;CUT;:H-27f:7,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4;:H27e,V" + ], + "mappedName": "#20;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#21;:M;CUT;:H-27f:7,V" + ], + "mappedName": "#21;:M;CUT;:H-27f:7,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6;:H27e,V" + ], + "mappedName": "#21;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#22;:M;CUT;:H-27f:7,V" + ], + "mappedName": "#22;:M;CUT;:H-27f:7,V;:H27f,V", + "object": "Body16", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8;:H27e,V" + ], + "mappedName": "#22;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 50, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 50, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:H27d,F;:H27f,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:H27d,F;:H27f,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body16:face:0", + "sourceRefs": [ + { + "mappedName": "#16:1;:H27d,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#16:1;:H27d,F", + "stageId": "Pocket16" + }, + { + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:1;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:H27d,F;:H27f,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:H27d,F;:H27f,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body16:face:1", + "sourceRefs": [ + { + "mappedName": "#16:4;:H27d,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#16:4;:H27d,F", + "stageId": "Pocket16" + }, + { + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:4;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:H27d,F;:H27f,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:H27d,F;:H27f,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body16:face:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:H27d,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#16:2;:H27d,F", + "stageId": "Pocket16" + }, + { + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:2;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:M;CUT;:H27d:7,F;:H27f,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:M;CUT;:H27d:7,F;:H27f,F", + "stringIds": [ + 20 + ] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Body16:face:3", + "sourceRefs": [ + { + "mappedName": "#14:1;:M;CUT;:H27d:7,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#14:1;:M;CUT;:H27d:7,F", + "stageId": "Pocket16" + }, + { + "mappedName": "#d:1;FAC;:H27c:4,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:1;FAC;:H27c:4,F", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 60 + ], + "kind": "face", + "mappedName": "#3c:1;:M;CUT;:H27d:7,F;:H27f,F", + "mappedStringIds": [ + 60 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#3c:1;:M;CUT;:H27d:7,F;:H27f,F", + "stringIds": [ + 60 + ] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Body16:face:4", + "sourceRefs": [ + { + "mappedName": "#3c:1;:M;CUT;:H27d:7,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#3c:1;:M;CUT;:H27d:7,F", + "stageId": "Pocket16" + }, + { + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#14:1;:G0;XTR;:H27c:8,F", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:H27d,F;:H27f,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:H27d,F;:H27f,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body16:face:5", + "sourceRefs": [ + { + "mappedName": "#16:3;:H27d,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#16:3;:H27d,F", + "stageId": "Pocket16" + }, + { + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:3;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:M;CUT;:H-27f:7,F;:H27f,F", + "stringIds": [ + 38 + ] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Body16:face:6", + "sourceRefs": [ + { + "mappedName": "#26:1;:M;CUT;:H-27f:7,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:1;:M;CUT;:H-27f:7,F", + "stageId": "Pocket16" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:2;:M;CUT;:H-27f:7,F;:H27f,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Body16:face:7", + "sourceRefs": [ + { + "mappedName": "#26:2;:M;CUT;:H-27f:7,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:2;:M;CUT;:H-27f:7,F", + "stageId": "Pocket16" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:3;:M;CUT;:H-27f:7,F;:H27f,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Body16:face:8", + "sourceRefs": [ + { + "mappedName": "#26:3;:M;CUT;:H-27f:7,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:3;:M;CUT;:H-27f:7,F", + "stageId": "Pocket16" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:M;CUT;:H-27f:7,F;:H27f,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#26:4;:M;CUT;:H-27f:7,F;:H27f,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Body16:face:9", + "sourceRefs": [ + { + "mappedName": "#26:4;:M;CUT;:H-27f:7,F", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:4;:M;CUT;:H-27f:7,F", + "stageId": "Pocket16" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g4;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:H27d,E;:H27f,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:H27d,E;:H27f,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body16:edge:0", + "sourceRefs": [ + { + "mappedName": "#18:1;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#18:1;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#f:1;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:H27d,E;:H27f,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body16:edge:1", + "sourceRefs": [ + { + "mappedName": "#19:2;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#19:2;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#10:2;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:H27d,E;:H27f,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:H27d,E;:H27f,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body16:edge:2", + "sourceRefs": [ + { + "mappedName": "#d:1;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#d:1;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#b:1;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:1;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:H27d,E;:H27f,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:H27d,E;:H27f,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body16:edge:3", + "sourceRefs": [ + { + "mappedName": "#36:1;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#36:1;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:1;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:H27d,E;:H27f,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body16:edge:4", + "sourceRefs": [ + { + "mappedName": "#1b:2;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1b:2;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#12:2;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:H27d,E;:H27f,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body16:edge:5", + "sourceRefs": [ + { + "mappedName": "#d:4;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#d:4;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#b:4;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:4;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:H27d,E;:H27f,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body16:edge:6", + "sourceRefs": [ + { + "mappedName": "#36:4;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#36:4;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:4;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:H27d,E;:H27f,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body16:edge:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1a:2;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#11:2;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:H27d,E;:H27f,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body16:edge:8", + "sourceRefs": [ + { + "mappedName": "#d:2;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#d:2;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#b:2;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:2;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:H27d,E;:H27f,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body16:edge:9", + "sourceRefs": [ + { + "mappedName": "#36:2;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#36:2;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:2;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:H27d,E;:H27f,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body16:edge:10", + "sourceRefs": [ + { + "mappedName": "#d:3;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#d:3;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#b:3;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:3;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 13, + 20, + 38, + 55 + ], + "kind": "edge", + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 13, + 20, + 38, + 55 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#26:1;:G#37;CUT;:H-27f:a,E;:H27f,E", + "stringIds": [ + 13, + 20, + 38, + 55 + ] + }, + "relation": "generated", + "resultIndex": 11, + "resultPersistentId": "Body16:edge:11", + "sourceRefs": [ + { + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:1;:G#37;CUT;:H-27f:a,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "kind": "edge", + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#26:2;:G#38;CUT;:H-27f:a,E;:H27f,E", + "stringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Body16:edge:12", + "sourceRefs": [ + { + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:2;:G#38;CUT;:H-27f:a,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "kind": "edge", + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#26:3;:G#39;CUT;:H-27f:a,E;:H27f,E", + "stringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Body16:edge:13", + "sourceRefs": [ + { + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:3;:G#39;CUT;:H-27f:a,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "kind": "edge", + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#26:4;:G#3a;CUT;:H-27f:a,E;:H27f,E", + "stringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ] + }, + "relation": "generated", + "resultIndex": 14, + "resultPersistentId": "Body16:edge:14", + "sourceRefs": [ + { + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#26:4;:G#3a;CUT;:H-27f:a,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g4;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:H27d,E;:H27f,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#36:3;:H27d,E;:H27f,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body16:edge:15", + "sourceRefs": [ + { + "mappedName": "#36:3;:H27d,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#36:3;:H27d,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:3;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#1d:1;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 29 + ] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Body16:edge:16", + "sourceRefs": [ + { + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1d:1;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:2;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Body16:edge:17", + "sourceRefs": [ + { + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1d:2;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#1d:3;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "Body16:edge:18", + "sourceRefs": [ + { + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1d:3;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#1d:4;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Body16:edge:19", + "sourceRefs": [ + { + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1d:4;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g4;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#29:4;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 41 + ] + }, + "relation": "modified", + "resultIndex": 20, + "resultPersistentId": "Body16:edge:20", + "sourceRefs": [ + { + "mappedName": "#29:4;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#29:4;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#44", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#44", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#28:2;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 40 + ] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Body16:edge:21", + "sourceRefs": [ + { + "mappedName": "#28:2;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#28:2;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#2a:6;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 42 + ] + }, + "relation": "modified", + "resultIndex": 22, + "resultPersistentId": "Body16:edge:22", + "sourceRefs": [ + { + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#2a:6;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#66", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E;:H27f,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#2b:8;:M;CUT;:H-27f:7,E;:H27f,E", + "stringIds": [ + 43 + ] + }, + "relation": "modified", + "resultIndex": 23, + "resultPersistentId": "Body16:edge:23", + "sourceRefs": [ + { + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#2b:8;:M;CUT;:H-27f:7,E", + "stageId": "Pocket16" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#88", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:H27d,V;:H27f,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:H27d,V;:H27f,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body16:vertex:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#f:1;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#2:1;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#2:1;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:H27d,V;:H27f,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:H27d,V;:H27f,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body16:vertex:1", + "sourceRefs": [ + { + "mappedName": "#2e:1;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#2e:1;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#18:1;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:H27d,V;:H27f,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body16:vertex:2", + "sourceRefs": [ + { + "mappedName": "#10:2;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#10:2;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#4:2;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#4:2;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:H27d,V;:H27f,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body16:vertex:3", + "sourceRefs": [ + { + "mappedName": "#30:2;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#30:2;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#19:2;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:H27d,V;:H27f,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body16:vertex:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#12:2;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#8:2;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#8:2;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:H27d,V;:H27f,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body16:vertex:5", + "sourceRefs": [ + { + "mappedName": "#34:2;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#34:2;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#1b:2;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:H27d,V;:H27f,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body16:vertex:6", + "sourceRefs": [ + { + "mappedName": "#11:2;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#11:2;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#6:2;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#6:2;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:H27d,V;:H27f,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:H27d,V;:H27f,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body16:vertex:7", + "sourceRefs": [ + { + "mappedName": "#32:2;:H27d,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#32:2;:H27d,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#1a:2;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 13, + 20, + 40, + 61 + ], + "kind": "vertex", + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 40, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#28:2;:G#3d;CUT;:H-27f:a,V;:H27f,V", + "stringIds": [ + 13, + 20, + 40, + 61 + ] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Body16:vertex:8", + "sourceRefs": [ + { + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#28:2;:G#3d;CUT;:H-27f:a,V", + "stageId": "Pocket16" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 13, + 20, + 41, + 62 + ], + "kind": "vertex", + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 41, + 62 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#29:4;:G#3e;CUT;:H-27f:a,V;:H27f,V", + "stringIds": [ + 13, + 20, + 41, + 62 + ] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Body16:vertex:9", + "sourceRefs": [ + { + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#29:4;:G#3e;CUT;:H-27f:a,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#44", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#44", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 13, + 20, + 42, + 63 + ], + "kind": "vertex", + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 42, + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#2a:6;:G#3f;CUT;:H-27f:a,V;:H27f,V", + "stringIds": [ + 13, + 20, + 42, + 63 + ] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "Body16:vertex:10", + "sourceRefs": [ + { + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#2a:6;:G#3f;CUT;:H-27f:a,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#66", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 13, + 20, + 43, + 64 + ], + "kind": "vertex", + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V;:H27f,V", + "mappedStringIds": [ + 13, + 20, + 43, + 64 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#2b:8;:G#40;CUT;:H-27f:a,V;:H27f,V", + "stringIds": [ + 13, + 20, + 43, + 64 + ] + }, + "relation": "generated", + "resultIndex": 11, + "resultPersistentId": "Body16:vertex:11", + "sourceRefs": [ + { + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#2b:8;:G#40;CUT;:H-27f:a,V", + "stageId": "Pocket16" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#88", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#1f;:M;CUT;:H-27f:7,V;:H27f,V", + "stringIds": [ + 31 + ] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Body16:vertex:12", + "sourceRefs": [ + { + "mappedName": "#1f;:M;CUT;:H-27f:7,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#1f;:M;CUT;:H-27f:7,V", + "stageId": "Pocket16" + }, + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1v1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#20;:M;CUT;:H-27f:7,V;:H27f,V", + "stringIds": [ + 32 + ] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Body16:vertex:13", + "sourceRefs": [ + { + "mappedName": "#20;:M;CUT;:H-27f:7,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#20;:M;CUT;:H-27f:7,V", + "stageId": "Pocket16" + }, + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:M;CUT;:H-27f:7,V;:H27f,V", + "stringIds": [ + 33 + ] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Body16:vertex:14", + "sourceRefs": [ + { + "mappedName": "#21;:M;CUT;:H-27f:7,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#21;:M;CUT;:H-27f:7,V", + "stageId": "Pocket16" + }, + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:M;CUT;:H-27f:7,V;:H27f,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#22;:M;CUT;:H-27f:7,V;:H27f,V", + "stringIds": [ + 34 + ] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Body16:vertex:15", + "sourceRefs": [ + { + "mappedName": "#22;:M;CUT;:H-27f:7,V", + "objectId": "Pocket16", + "persistentId": "Pocket16:mapped:#22;:M;CUT;:H-27f:7,V", + "stageId": "Pocket16" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3v2;SKT", + "stageId": "PocketSketch16" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body16", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body16", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "volume": 67.19999999999996 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch16.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch16", + "name": "Sketch16", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch16:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch16:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch16:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch16:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch16:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch16:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch16:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch16:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch16", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch16", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad16.AddSubShape.Map.txt", + "Pad16.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad16", + "name": "Pad16", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:H27c,E" + ], + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:H27c,E" + ], + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:H27c,E" + ], + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:H27c,E" + ], + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:H27c,E" + ], + "mappedName": "#d:1;FAC;:H27c:4,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H27c:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:H27c:4,F", + "#b:1;:H27c,E" + ], + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:H27c,V" + ], + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:H27c,V" + ], + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H27c,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:H27c:7,F", + "#b:1;:H27c,E" + ], + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:H27c,V" + ], + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H27c,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:H27c:7,F", + "#b:2;:H27c,E" + ], + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:H27c,V" + ], + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H27c,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:H27c:7,F", + "#b:3;:H27c,E" + ], + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H27c,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:H27c:7,F", + "#b:4;:H27c,E" + ], + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H27c,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:H27c:7,E", + "#2:1;:H27c,V" + ], + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H27c,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:H27c:7,E", + "#4:2;:H27c,V" + ], + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H27c,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:H27c:7,E", + "#6:2;:H27c,V" + ], + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H27c,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:H27c:7,E", + "#8:2;:H27c,V" + ], + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H27c:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad16:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H27c:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad16:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H27c:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad16:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H27c:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad16:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H27c:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H27c:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad16:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H27c:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad16:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H27c:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad16:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H27c:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad16:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H27c,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H27c,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad16:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H27c:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad16:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H27c:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad16:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H27c,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H27c,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad16:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H27c:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad16:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H27c:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad16:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H27c,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H27c,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad16:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H27c:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad16:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H27c,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H27c,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad16:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H27c:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad16:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H27c,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H27c,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad16:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H27c:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad16:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H27c,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H27c,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad16:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H27c:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad16:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H27c,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H27c,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad16:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H27c:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad16:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H27c,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H27c,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad16:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H27c:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad16:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad16", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad16", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 79.99999999999999 + }, + "typeId": "PartDesign::Pad" + }, + { + "elementMap2ResourcePaths": [ + "PocketSketch16.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "PocketSketch16", + "name": "PocketSketch16", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch16:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch16:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch16:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch16:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch16:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch16:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch16:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch16:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "PocketSketch16", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "PocketSketch16", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pocket16.AddSubShape.Map.txt", + "Pocket16.Shape.Map.txt" + ], + "elementMapSize": 54, + "elementMapVersion": "15.70200.5", + "label": "Pocket16", + "name": "Pocket16", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H27c,E" + ], + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:H27d,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:H27c,E" + ], + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:H27d,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:H27c,E" + ], + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:H27d,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:M;CUT;:H27d:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H27c,E" + ], + "mappedName": "#d:1;FAC;:H27c:4,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:M;CUT;:H27d:7,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#3c:1;:M;CUT;:H27d:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:H27c:4,F", + "#b:1;:H27c,E" + ], + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 60 + ], + "mappedName": "#3c:1;:M;CUT;:H27d:7,F", + "mappedStringIds": [ + 60 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:H27d,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:H27c,E" + ], + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:H27d,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:H27e:7,F", + "#b:1;:H27e,E" + ], + "mappedName": "#26:1;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:H27e:7,F", + "#b:2;:H27e,E" + ], + "mappedName": "#26:2;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:H27e:7,F", + "#b:3;:H27e,E" + ], + "mappedName": "#26:3;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:H27e:7,F", + "#b:4;:H27e,E" + ], + "mappedName": "#26:4;:M;CUT;:H-27f:7,F", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:H27c,V" + ], + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:H27d,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:H27c,V" + ], + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:H27d,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:H27d,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:H27c:7,F", + "#b:1;:H27c,E" + ], + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:H27d,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:H27c,V" + ], + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:H27d,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:H27d,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:H27c:7,F", + "#b:4;:H27c,E" + ], + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:H27d,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:H27c,V" + ], + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:H27d,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:H27d,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:H27c:7,F", + "#b:2;:H27c,E" + ], + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:H27d,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:H27c,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:H27d,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:H27e:7,F", + "#b:1;:H27e,E" + ], + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 13, + 20, + 38, + 55 + ], + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E", + "mappedStringIds": [ + 13, + 20, + 38, + 55 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:H27e:7,F", + "#b:2;:H27e,E" + ], + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:H27e:7,F", + "#b:3;:H27e,E" + ], + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:H27e:7,F", + "#b:4;:H27e,E" + ], + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:H27d,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:H27c:7,F", + "#b:3;:H27c,E" + ], + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:H27d,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#b:1;:H27e,E" + ], + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#b:2;:H27e,E" + ], + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#b:3;:H27e,E" + ], + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#b:4;:H27e,E" + ], + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:H27e:7,E", + "#44;:H27e,V" + ], + "mappedName": "#29:4;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:H27e:7,E", + "#22;:H27e,V", + "#8;:H27e,V" + ], + "mappedName": "#28:2;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:H27e:7,E", + "#66;:H27e,V" + ], + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:H27e:7,E", + "#88;:H27e,V" + ], + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:H27d,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:H27c:7,E", + "#2:1;:H27c,V" + ], + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:H27d,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:H27d,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:H27c:7,E", + "#4:2;:H27c,V" + ], + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:H27d,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:H27d,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:H27c:7,E", + "#8:2;:H27c,V" + ], + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:H27d,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:H27c,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:H27d,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:H27d,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:H27c:7,E", + "#6:2;:H27c,V" + ], + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "object": "Pad16", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:H27d,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:H27e:7,E", + "#22;:H27e,V", + "#8;:H27e,V" + ], + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 13, + 20, + 40, + 61 + ], + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 40, + 61 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:H27e:7,E", + "#44;:H27e,V" + ], + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 13, + 20, + 41, + 62 + ], + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 41, + 62 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:H27e:7,E", + "#66;:H27e,V" + ], + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 13, + 20, + 42, + 63 + ], + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 42, + 63 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:H27e:7,E", + "#88;:H27e,V" + ], + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 13, + 20, + 43, + 64 + ], + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 43, + 64 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#2;:H27e,V" + ], + "mappedName": "#1f;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#4;:H27e,V" + ], + "mappedName": "#20;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#6;:H27e,V" + ], + "mappedName": "#21;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#8;:H27e,V" + ], + "mappedName": "#22;:M;CUT;:H-27f:7,V", + "object": "Pocket16", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch16", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 50, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 50, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:H27d,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:H27d,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket16:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:1;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:H27d,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:H27d,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket16:face:1", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:4;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:H27d,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:H27d,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket16:face:2", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:2;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:M;CUT;:H27d:7,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:M;CUT;:H27d:7,F", + "stringIds": [ + 20 + ] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Pocket16:face:3", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:H27c:4,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:1;FAC;:H27c:4,F", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 60 + ], + "kind": "face", + "mappedName": "#3c:1;:M;CUT;:H27d:7,F", + "mappedStringIds": [ + 60 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#3c:1;:M;CUT;:H27d:7,F", + "stringIds": [ + 60 + ] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Pocket16:face:4", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:H27c:8,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#14:1;:G0;XTR;:H27c:8,F", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:H27d,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:H27d,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket16:face:5", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:H27c:7,F", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#d:3;:G;XTR;:H27c:7,F", + "stageId": "Pad16" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:M;CUT;:H-27f:7,F", + "stringIds": [ + 38 + ] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Pocket16:face:6", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:2;:M;CUT;:H-27f:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Pocket16:face:7", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:3;:M;CUT;:H-27f:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Pocket16:face:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:M;CUT;:H-27f:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#26:4;:M;CUT;:H-27f:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Pocket16:face:9", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g4;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:H27d,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:H27d,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket16:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#f:1;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:H27d,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:H27d,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket16:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#10:2;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:H27d,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:H27d,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket16:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:1;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:H27d,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:H27d,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket16:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:1;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:H27d,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:H27d,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket16:edge:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#12:2;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:H27d,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:H27d,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket16:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:4;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:4;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:H27d,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:H27d,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket16:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:4;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g4;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:H27d,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:H27d,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket16:edge:7", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#11:2;:G;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:H27d,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:H27d,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket16:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:2;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:2;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:H27d,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:H27d,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket16:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:2;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:H27d,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:H27d,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket16:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:3;:H27c,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#b:3;:H27c,E", + "stageId": "Pad16" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 13, + 20, + 38, + 55 + ], + "kind": "edge", + "mappedName": "#26:1;:G#37;CUT;:H-27f:a,E", + "mappedStringIds": [ + 13, + 20, + 38, + 55 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#26:1;:G#37;CUT;:H-27f:a,E", + "stringIds": [ + 13, + 20, + 38, + 55 + ] + }, + "relation": "generated", + "resultIndex": 11, + "resultPersistentId": "Pocket16:edge:11", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "kind": "edge", + "mappedName": "#26:2;:G#38;CUT;:H-27f:a,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#26:2;:G#38;CUT;:H-27f:a,E", + "stringIds": [ + 11, + 13, + 20, + 29, + 38, + 56 + ] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Pocket16:edge:12", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "kind": "edge", + "mappedName": "#26:3;:G#39;CUT;:H-27f:a,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#26:3;:G#39;CUT;:H-27f:a,E", + "stringIds": [ + 11, + 13, + 20, + 29, + 38, + 57 + ] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Pocket16:edge:13", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "kind": "edge", + "mappedName": "#26:4;:G#3a;CUT;:H-27f:a,E", + "mappedStringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#26:4;:G#3a;CUT;:H-27f:a,E", + "stringIds": [ + 11, + 13, + 20, + 29, + 38, + 58 + ] + }, + "relation": "generated", + "resultIndex": 14, + "resultPersistentId": "Pocket16:edge:14", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g4;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:H27d,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#36:3;:H27d,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket16:edge:15", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:H27c:7,E", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#16:3;:U;XTR;:H27c:7,E", + "stageId": "Pad16" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#1d:1;:M;CUT;:H-27f:7,E", + "stringIds": [ + 29 + ] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Pocket16:edge:16", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:2;:M;CUT;:H-27f:7,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Pocket16:edge:17", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#1d:3;:M;CUT;:H-27f:7,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "Pocket16:edge:18", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#1d:4;:M;CUT;:H-27f:7,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Pocket16:edge:19", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g4;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#29:4;:M;CUT;:H-27f:7,E", + "stringIds": [ + 41 + ] + }, + "relation": "modified", + "resultIndex": 20, + "resultPersistentId": "Pocket16:edge:20", + "sourceRefs": [ + { + "mappedName": "#44", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#44", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#28:2;:M;CUT;:H-27f:7,E", + "stringIds": [ + 40 + ] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Pocket16:edge:21", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#2a:6;:M;CUT;:H-27f:7,E", + "stringIds": [ + 42 + ] + }, + "relation": "modified", + "resultIndex": 22, + "resultPersistentId": "Pocket16:edge:22", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#66", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:M;CUT;:H-27f:7,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#2b:8;:M;CUT;:H-27f:7,E", + "stringIds": [ + 43 + ] + }, + "relation": "modified", + "resultIndex": 23, + "resultPersistentId": "Pocket16:edge:23", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#88", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:H27d,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:H27d,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket16:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#2:1;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:H27d,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:H27d,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket16:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#18:1;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v11;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:H27d,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:H27d,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket16:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#4:2;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:H27d,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:H27d,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket16:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#19:2;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g1v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:H27d,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:H27d,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket16:vertex:4", + "sourceRefs": [ + { + "mappedName": "#8:2;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#8:2;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:H27d,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:H27d,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket16:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#1b:2;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g3v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:H27d,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:H27d,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket16:vertex:6", + "sourceRefs": [ + { + "mappedName": "#6:2;:H27c,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#6:2;:H27c,V", + "stageId": "Pad16" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:H27d,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:H27d,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket16:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:H27c:7,V", + "objectId": "Pad16", + "persistentId": "Pad16:mapped:#1a:2;:U;XTR;:H27c:7,V", + "stageId": "Pad16" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch16", + "persistentId": "Sketch16:mapped:g2v22;SKT", + "stageId": "Sketch16" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 13, + 20, + 40, + 61 + ], + "kind": "vertex", + "mappedName": "#28:2;:G#3d;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 40, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#28:2;:G#3d;CUT;:H-27f:a,V", + "stringIds": [ + 13, + 20, + 40, + 61 + ] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Pocket16:vertex:8", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 13, + 20, + 41, + 62 + ], + "kind": "vertex", + "mappedName": "#29:4;:G#3e;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 41, + 62 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#29:4;:G#3e;CUT;:H-27f:a,V", + "stringIds": [ + 13, + 20, + 41, + 62 + ] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Pocket16:vertex:9", + "sourceRefs": [ + { + "mappedName": "#44", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#44", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 13, + 20, + 42, + 63 + ], + "kind": "vertex", + "mappedName": "#2a:6;:G#3f;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 42, + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#2a:6;:G#3f;CUT;:H-27f:a,V", + "stringIds": [ + 13, + 20, + 42, + 63 + ] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "Pocket16:vertex:10", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#66", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 13, + 20, + 43, + 64 + ], + "kind": "vertex", + "mappedName": "#2b:8;:G#40;CUT;:H-27f:a,V", + "mappedStringIds": [ + 13, + 20, + 43, + 64 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#2b:8;:G#40;CUT;:H-27f:a,V", + "stringIds": [ + 13, + 20, + 43, + 64 + ] + }, + "relation": "generated", + "resultIndex": 11, + "resultPersistentId": "Pocket16:vertex:11", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:#88", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#1f;:M;CUT;:H-27f:7,V", + "stringIds": [ + 31 + ] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Pocket16:vertex:12", + "sourceRefs": [ + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1v1;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#20;:M;CUT;:H-27f:7,V", + "stringIds": [ + 32 + ] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Pocket16:vertex:13", + "sourceRefs": [ + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g1v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:M;CUT;:H-27f:7,V", + "stringIds": [ + 33 + ] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Pocket16:vertex:14", + "sourceRefs": [ + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g2v2;SKT", + "stageId": "PocketSketch16" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:M;CUT;:H-27f:7,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#22;:M;CUT;:H-27f:7,V", + "stringIds": [ + 34 + ] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Pocket16:vertex:15", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch16", + "persistentId": "PocketSketch16:mapped:g3v2;SKT", + "stageId": "PocketSketch16" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pocket16", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pocket16", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 10, + "solids": 1, + "valid": true, + "volume": 67.19999999999996 + }, + "typeId": "PartDesign::Pocket" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "ac58c6e9e9a7c10e853b5e8ca554110e8a3198c89d91ac83030152b1924f2932", + "text": "StringTableStart v1 64\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:H27c,E\n-1.4c.1.2\n-1.0 0:;:H27c,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:H27c:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H27c:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H27c:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:H27e,E\n-1.4c.1.12\n-1.0 0:;:H27e,V\n-1.2c.1.1d\n-1.2c.0.2\n-1.2c.0.2\n-1.2c.0.2\n-1.0 0:;FAC;:H27e:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H27e:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H27e:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.-19.-1f\n-1.0 0:;:U;XTR;:H27c:7,V\n-1.4c.1.16\n-1.4c.-1f.-13\n-1.4c.1f.14\n-1.4c.-1f.-12\n-1.4c.1f.13\n-1.4c.-1f.-11\n-1.4c.1f.12\n-1.0 0:;:U;XTR;:H27c:7,E\n-1.4c.1.20\n-1.0 0:(#14:1;K-5;:H27d:4,F)\n-1.0 0:(#14:1;K-6;:H27d:4,F)\n-1.0 0:(#14:1;K-7;:H27d:4,F)\n-1.0 0:(#14:1;K-8;:H27d:4,F)\n-1.0 0:;:G0;XTR;:H27c:8,F\n-1.4c.1.28\n-1.0 0:(#14:1;K-1;:H27d:4,F)\n-1.0 0:(#14:1;K-2;:H27d:4,F)\n-1.0 0:(#14:1;K-3;:H27d:4,F)\n-1.0 0:(#14:1;K-4;:H27d:4,F)\n" + } + }, + { + "elementMapResources": { + "Body17.Shape.Map.txt": { + "sha256": "e28d469acb8c0ab3a6b69a8135c61c686f0f41a1ade50155b7ebb48beca082bc", + "text": "BeginElementMap v1\n1 PostfixCount 20\nEdge\nFace\nVertex\n;:H94a,V\n;:H94a,F\n;:H94a,E\n;:G#42;CUT;:H-94c:a,E\n;:M;CUT;:H-94c:7,F\n;:G#43;CUT;:H-94c:a,E\n;:G#44;CUT;:H-94c:a,E\n;:G#45;CUT;:H-94c:a,E\n;:G#46;CUT;:H-94c:a,V\n;:M;CUT;:H-94c:7,E\n;:G#47;CUT;:H-94c:a,V\n;:G#48;CUT;:H-94c:a,V\n;:G#49;CUT;:H-94c:a,V\n;:H-94c,V\n;:H-94c,E\n;:H-94c,F\n;:M;CUT;:H94a:7,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#26:1.7.14.41.42 0\n$#26:2.9.b.14.1d.41.43 0\n$#26:3.a.b.14.1d.41.44 0\n$#26:4.b.b.14.1d.41.45 0\n$#29:4.d 0\n$#3d:1.12 0\n$#28:2.d 0\n$#2a:6.d 0\n$#3d:2.12.b.1d.26 0\n$#2b:8.d 0\n$#3d:3.12.b.1d.26 0\n$#3d:4.12.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 12\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#41:1.14.14 0\n$#16:3.5.b.d 0\n$#26:1.8 0\n$#26:2.8.b.1d 0\n$#26:3.8.b.1d 0\n$#26:4.8.b.1d 0\n$#3f:1.13 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#28:2.c.14.41.46 0\n$#29:4.e.14.41.47 0\n$#2a:6.f.14.41.48 0\n$#2b:8.10.14.41.49 0\n$#39:4.11 0\n$#38:2.11 0\n$#3a:6.11 0\n$#3b:8.11 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 24 2380 1 ;:H94c,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 11 2380 1 ;:H94c,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 16 2380 1 ;:H94c,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad17.AddSubShape.Map.txt": { + "sha256": "746df832f5c57d14a888e93d5b744a5ba6f92b536f508df1508ad3b7bab466a6", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H949:7,E\n;:G0;XTR;:H949:8,F\n;:U;XTR;:H949:7,E\n;:U;XTR;:H949:7,V\n;:H949,V\n;:H949,E\n;:G;XTR;:H949:7,F\n;FAC;:H949:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad17.Shape.Map.txt": { + "sha256": "b7e67e587b9fb886e7afd1a440a6add563c19e372a8dc1328a9aabab05f1a80c", + "text": "BeginElementMap v1\n5 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H949:7,E\n;:G0;XTR;:H949:8,F\n;:U;XTR;:H949:7,E\n;:U;XTR;:H949:7,V\n;:H949,V\n;:H949,E\n;:G;XTR;:H949:7,F\n;FAC;:H949:4,F\n\nMapCount 1\n\nElementMap 1 5 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pocket17.AddSubShape.Map.txt": { + "sha256": "f551d8ecf939c657242cbaddbcb22ebf72f2a57f2a803bf02cbe6a5450d33f69", + "text": "BeginElementMap v1\n7 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:H94b:7,F\n;FAC;:H94b:4,F\n;:G;XTR;:H94b:7,E\n;:G0;XTR;:H94b:8,F\n;:U;XTR;:H94b:7,E\n;:U;XTR;:H94b:7,V\n;:H94b,V\n;:H94b,E\n\nMapCount 1\n\nElementMap 1 7 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#1f:2.6 0\n$#20:4.6 0\n$#b:1.b 0\n$#26:1.8 0\n$#21:6.6 0\n$#b:2.b 0\n$#26:2.8.b.1d 0\n$#22:8.6 0\n$#b:3.b 0\n$#26:3.8.b.1d 0\n$#b:4.b 0\n$#26:4.8.b.1d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#1d:1.4 0\n$#1d:2.4.b 0\n$#1d:3.4.b 0\n$#1d:4.4.b 0\n$#1d:1.5 0\n$#24:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2.a $#3.a 0\n$#28:2.9 0\n$#4.a $#5.a 0\n$#29:4.9 0\n$#6.a $#7.a 0\n$#2a:6.9 0\n$#8.a $#9.a 0\n$#2b:8.9 0\n\nEndMap\n" + }, + "Pocket17.Shape.Map.txt": { + "sha256": "e8f6e7fb98234a09359c8a37cb92bd83cd7ba819e940f5abb39c8398b4773fd5", + "text": "BeginElementMap v1\n2 PostfixCount 20\nEdge\nFace\nVertex\n;:H94a,V\n;:H94a,F\n;:H94a,E\n;:G#42;CUT;:H-94c:a,E\n;:M;CUT;:H-94c:7,F\n;:G#43;CUT;:H-94c:a,E\n;:G#44;CUT;:H-94c:a,E\n;:G#45;CUT;:H-94c:a,E\n;:G#46;CUT;:H-94c:a,V\n;:M;CUT;:H-94c:7,E\n;:G#47;CUT;:H-94c:a,V\n;:G#48;CUT;:H-94c:a,V\n;:G#49;CUT;:H-94c:a,V\n;:H-94c,V\n;:H-94c,E\n;:H-94c,F\n;:M;CUT;:H94a:7,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#26:1.7.14.41.42 0\n$#26:2.9.b.14.1d.41.43 0\n$#26:3.a.b.14.1d.41.44 0\n$#26:4.b.b.14.1d.41.45 0\n$#29:4.d 0\n$#3d:1.12 0\n$#28:2.d 0\n$#2a:6.d 0\n$#3d:2.12.b.1d.26 0\n$#2b:8.d 0\n$#3d:3.12.b.1d.26 0\n$#3d:4.12.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 12\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#41:1.14.14 0\n$#16:3.5.b.d 0\n$#26:1.8 0\n$#26:2.8.b.1d 0\n$#26:3.8.b.1d 0\n$#26:4.8.b.1d 0\n$#3f:1.13 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#28:2.c.14.41.46 0\n$#29:4.e.14.41.47 0\n$#2a:6.f.14.41.48 0\n$#2b:8.10.14.41.49 0\n$#39:4.11 0\n$#38:2.11 0\n$#3a:6.11 0\n$#3b:8.11 0\n\nEndMap\n" + }, + "PocketSketch17.Shape.Map.txt": { + "sha256": "1ed561710b6beacd691b5c137e89026185121dd34f9665cf426096572e48efa0", + "text": "BeginElementMap v1\n6 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 6 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + }, + "Sketch17.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pocket17", + "id": "partdesign-pocket-midplane", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body17.Shape.Map.txt" + ], + "elementMapSize": 51, + "elementMapVersion": "15.70200.5", + "label": "Body17", + "name": "Body17", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:H94a,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:1;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H949,E" + ], + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:H94a,F;:H94c,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:H94a,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:4;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:H949,E" + ], + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:H94a,F;:H94c,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:H94a,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:2;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:H949,E" + ], + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:H94a,F;:H94c,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:H94a,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#14:1;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H949,E" + ], + "mappedName": "#d:1;FAC;:H949:4,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:H94a,F;:H94c,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#41:1;:M;CUT;:H94a:7,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#41:1;:M;CUT;:H94a:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:H949:4,F", + "#b:1;:H949,E" + ], + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 20, + 65 + ], + "mappedName": "#41:1;:M;CUT;:H94a:7,F;:H94c,F", + "mappedStringIds": [ + 20, + 65 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:H94a,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:3;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:H949,E" + ], + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:H94a,F;:H94c,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#26:1;:M;CUT;:H-94c:7,F" + ], + "mappedName": "#26:1;:M;CUT;:H-94c:7,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:H94b:7,F", + "#b:1;:H94b,E" + ], + "mappedName": "#26:1;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#26:2;:M;CUT;:H-94c:7,F" + ], + "mappedName": "#26:2;:M;CUT;:H-94c:7,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:H94b:7,F", + "#b:2;:H94b,E" + ], + "mappedName": "#26:2;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#26:3;:M;CUT;:H-94c:7,F" + ], + "mappedName": "#26:3;:M;CUT;:H-94c:7,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:H94b:7,F", + "#b:3;:H94b,E" + ], + "mappedName": "#26:3;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#26:4;:M;CUT;:H-94c:7,F" + ], + "mappedName": "#26:4;:M;CUT;:H-94c:7,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:H94b:7,F", + "#b:4;:H94b,E" + ], + "mappedName": "#26:4;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#3f:1;:H-94c,F" + ], + "mappedName": "#3f:1;:H-94c,F;:H94c,F", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#24:1;:G0;XTR;:H94b:8,F", + "#1d:1;FAC;:H94b:4,F", + "#b:1;:H94b,E" + ], + "mappedName": "#3f:1;:H-94c,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:1;:H-94c,F;:H94c,F", + "mappedStringIds": [ + 63 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#18:1;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:H949,V" + ], + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:H94a,E;:H94c,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#19:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:H949,V" + ], + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:1;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:H94a,E;:H94c,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:1;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:H949:7,F", + "#b:1;:H949,E" + ], + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:H94a,E;:H94c,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1b:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:H949,V" + ], + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:4;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:4;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:H949:7,F", + "#b:4;:H949,E" + ], + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1a:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:H949,V" + ], + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:H949:7,F", + "#b:2;:H949,E" + ], + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:3;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:H94a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:3;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:H949:7,F", + "#b:3;:H949,E" + ], + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#26:1;:G#42;CUT;:H-94c:a,E" + ], + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:H94b:7,F", + "#b:1;:H94b,E" + ], + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 20, + 38, + 65, + 66 + ], + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 20, + 38, + 65, + 66 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#26:2;:G#43;CUT;:H-94c:a,E" + ], + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:H94b:7,F", + "#b:2;:H94b,E" + ], + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#26:3;:G#44;CUT;:H-94c:a,E" + ], + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:H94b:7,F", + "#b:3;:H94b,E" + ], + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#26:4;:G#45;CUT;:H-94c:a,E" + ], + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:H94b:7,F", + "#b:4;:H94b,E" + ], + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#29:4;:M;CUT;:H-94c:7,E" + ], + "mappedName": "#29:4;:M;CUT;:H-94c:7,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:H94b:7,E", + "#44;:H94b,V" + ], + "mappedName": "#29:4;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#3d:1;:H-94c,E" + ], + "mappedName": "#3d:1;:H-94c,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:1;:U;XTR;:H94b:7,E", + "#1d:1;:G;XTR;:H94b:7,F", + "#b:1;:H94b,E" + ], + "mappedName": "#3d:1;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:1;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 61 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#28:2;:M;CUT;:H-94c:7,E" + ], + "mappedName": "#28:2;:M;CUT;:H-94c:7,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:H94b:7,E", + "#22;:H94b,V", + "#8;:H94b,V" + ], + "mappedName": "#28:2;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#2a:6;:M;CUT;:H-94c:7,E" + ], + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:H94b:7,E", + "#66;:H94b,V" + ], + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#3d:2;:H-94c,E" + ], + "mappedName": "#3d:2;:H-94c,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:2;:U;XTR;:H94b:7,E", + "#1d:2;:G;XTR;:H94b:7,F", + "#b:2;:H94b,E" + ], + "mappedName": "#3d:2;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:2;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#2b:8;:M;CUT;:H-94c:7,E" + ], + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:H94b:7,E", + "#88;:H94b,V" + ], + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#3d:3;:H-94c,E" + ], + "mappedName": "#3d:3;:H-94c,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:3;:U;XTR;:H94b:7,E", + "#1d:3;:G;XTR;:H94b:7,F", + "#b:3;:H94b,E" + ], + "mappedName": "#3d:3;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:3;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#3d:4;:H-94c,E" + ], + "mappedName": "#3d:4;:H-94c,E;:H94c,E", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:4;:U;XTR;:H94b:7,E", + "#1d:4;:G;XTR;:H94b:7,F", + "#b:4;:H94b,E" + ], + "mappedName": "#3d:4;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:4;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#f:1;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:H94a,V;:H94c,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2e:1;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:H949:7,E", + "#2:1;:H949,V" + ], + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:H94a,V;:H94c,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#10:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#30:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:H949:7,E", + "#4:2;:H949,V" + ], + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#12:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#34:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:H949:7,E", + "#8:2;:H949,V" + ], + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#11:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:H94a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#32:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:H949:7,E", + "#6:2;:H949,V" + ], + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#28:2;:G#46;CUT;:H-94c:a,V" + ], + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:H94b:7,E", + "#22;:H94b,V", + "#8;:H94b,V" + ], + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 20, + 40, + 65, + 70 + ], + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 40, + 65, + 70 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#29:4;:G#47;CUT;:H-94c:a,V" + ], + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:H94b:7,E", + "#44;:H94b,V" + ], + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 20, + 41, + 65, + 71 + ], + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 41, + 65, + 71 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#2a:6;:G#48;CUT;:H-94c:a,V" + ], + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:H94b:7,E", + "#66;:H94b,V" + ], + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 20, + 42, + 65, + 72 + ], + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 42, + 65, + 72 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#2b:8;:G#49;CUT;:H-94c:a,V" + ], + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:H94b:7,E", + "#88;:H94b,V" + ], + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 20, + 43, + 65, + 73 + ], + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 43, + 65, + 73 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#39:4;:H-94c,V" + ], + "mappedName": "#39:4;:H-94c,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#29:4;:U;XTR;:H94b:7,V", + "#20:4;:G;XTR;:H94b:7,E", + "#44;:H94b,V" + ], + "mappedName": "#39:4;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 57 + ], + "mappedName": "#39:4;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 57 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#38:2;:H-94c,V" + ], + "mappedName": "#38:2;:H-94c,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#28:2;:U;XTR;:H94b:7,V", + "#1f:2;:G;XTR;:H94b:7,E", + "#22;:H94b,V", + "#8;:H94b,V" + ], + "mappedName": "#38:2;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:2;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 56 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#3a:6;:H-94c,V" + ], + "mappedName": "#3a:6;:H-94c,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2a:6;:U;XTR;:H94b:7,V", + "#21:6;:G;XTR;:H94b:7,E", + "#66;:H94b,V" + ], + "mappedName": "#3a:6;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "mappedName": "#3a:6;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 58 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#3b:8;:H-94c,V" + ], + "mappedName": "#3b:8;:H-94c,V;:H94c,V", + "object": "Body17", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2b:8;:U;XTR;:H94b:7,V", + "#22:8;:G;XTR;:H94b:7,E", + "#88;:H94b,V" + ], + "mappedName": "#3b:8;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:8;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 51, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 51, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:H94a,F;:H94c,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:H94a,F;:H94c,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body17:face:0", + "sourceRefs": [ + { + "mappedName": "#16:1;:H94a,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#16:1;:H94a,F", + "stageId": "Pocket17" + }, + { + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:1;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:H94a,F;:H94c,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:H94a,F;:H94c,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body17:face:1", + "sourceRefs": [ + { + "mappedName": "#16:4;:H94a,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#16:4;:H94a,F", + "stageId": "Pocket17" + }, + { + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:4;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:H94a,F;:H94c,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:H94a,F;:H94c,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body17:face:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:H94a,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#16:2;:H94a,F", + "stageId": "Pocket17" + }, + { + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:2;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:H94a,F;:H94c,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:H94a,F;:H94c,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body17:face:3", + "sourceRefs": [ + { + "mappedName": "#14:1;:H94a,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#14:1;:H94a,F", + "stageId": "Pocket17" + }, + { + "mappedName": "#d:1;FAC;:H949:4,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:1;FAC;:H949:4,F", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 20, + 65 + ], + "kind": "face", + "mappedName": "#41:1;:M;CUT;:H94a:7,F;:H94c,F", + "mappedStringIds": [ + 20, + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#41:1;:M;CUT;:H94a:7,F;:H94c,F", + "stringIds": [ + 20, + 65 + ] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Body17:face:4", + "sourceRefs": [ + { + "mappedName": "#41:1;:M;CUT;:H94a:7,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#41:1;:M;CUT;:H94a:7,F", + "stageId": "Pocket17" + }, + { + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#14:1;:G0;XTR;:H949:8,F", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:H94a,F;:H94c,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:H94a,F;:H94c,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body17:face:5", + "sourceRefs": [ + { + "mappedName": "#16:3;:H94a,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#16:3;:H94a,F", + "stageId": "Pocket17" + }, + { + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:3;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:M;CUT;:H-94c:7,F;:H94c,F", + "stringIds": [ + 38 + ] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Body17:face:6", + "sourceRefs": [ + { + "mappedName": "#26:1;:M;CUT;:H-94c:7,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:1;:M;CUT;:H-94c:7,F", + "stageId": "Pocket17" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:2;:M;CUT;:H-94c:7,F;:H94c,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Body17:face:7", + "sourceRefs": [ + { + "mappedName": "#26:2;:M;CUT;:H-94c:7,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:2;:M;CUT;:H-94c:7,F", + "stageId": "Pocket17" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:3;:M;CUT;:H-94c:7,F;:H94c,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Body17:face:8", + "sourceRefs": [ + { + "mappedName": "#26:3;:M;CUT;:H-94c:7,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:3;:M;CUT;:H-94c:7,F", + "stageId": "Pocket17" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:M;CUT;:H-94c:7,F;:H94c,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#26:4;:M;CUT;:H-94c:7,F;:H94c,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Body17:face:9", + "sourceRefs": [ + { + "mappedName": "#26:4;:M;CUT;:H-94c:7,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:4;:M;CUT;:H-94c:7,F", + "stageId": "Pocket17" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g4;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "kind": "face", + "mappedName": "#3f:1;:H-94c,F;:H94c,F", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#3f:1;:H-94c,F;:H94c,F", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body17:face:10", + "sourceRefs": [ + { + "mappedName": "#3f:1;:H-94c,F", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3f:1;:H-94c,F", + "stageId": "Pocket17" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:H94a,E;:H94c,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:H94a,E;:H94c,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body17:edge:0", + "sourceRefs": [ + { + "mappedName": "#18:1;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#18:1;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#f:1;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:H94a,E;:H94c,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body17:edge:1", + "sourceRefs": [ + { + "mappedName": "#19:2;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#19:2;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#10:2;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:H94a,E;:H94c,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:H94a,E;:H94c,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body17:edge:2", + "sourceRefs": [ + { + "mappedName": "#d:1;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#d:1;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#b:1;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:1;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:H94a,E;:H94c,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:H94a,E;:H94c,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body17:edge:3", + "sourceRefs": [ + { + "mappedName": "#36:1;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#36:1;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:1;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:H94a,E;:H94c,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body17:edge:4", + "sourceRefs": [ + { + "mappedName": "#1b:2;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#1b:2;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#12:2;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:H94a,E;:H94c,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body17:edge:5", + "sourceRefs": [ + { + "mappedName": "#d:4;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#d:4;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#b:4;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:4;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:H94a,E;:H94c,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body17:edge:6", + "sourceRefs": [ + { + "mappedName": "#36:4;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#36:4;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:4;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:H94a,E;:H94c,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body17:edge:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#1a:2;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#11:2;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:H94a,E;:H94c,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body17:edge:8", + "sourceRefs": [ + { + "mappedName": "#d:2;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#d:2;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#b:2;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:2;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:H94a,E;:H94c,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body17:edge:9", + "sourceRefs": [ + { + "mappedName": "#36:2;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#36:2;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:2;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:H94a,E;:H94c,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body17:edge:10", + "sourceRefs": [ + { + "mappedName": "#d:3;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#d:3;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#b:3;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:3;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:H94a,E;:H94c,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:H94a,E;:H94c,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body17:edge:11", + "sourceRefs": [ + { + "mappedName": "#36:3;:H94a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#36:3;:H94a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:3;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 20, + 38, + 65, + 66 + ], + "kind": "edge", + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 20, + 38, + 65, + 66 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#26:1;:G#42;CUT;:H-94c:a,E;:H94c,E", + "stringIds": [ + 20, + 38, + 65, + 66 + ] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Body17:edge:12", + "sourceRefs": [ + { + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:1;:G#42;CUT;:H-94c:a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "kind": "edge", + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#26:2;:G#43;CUT;:H-94c:a,E;:H94c,E", + "stringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Body17:edge:13", + "sourceRefs": [ + { + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:2;:G#43;CUT;:H-94c:a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "kind": "edge", + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#26:3;:G#44;CUT;:H-94c:a,E;:H94c,E", + "stringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ] + }, + "relation": "generated", + "resultIndex": 14, + "resultPersistentId": "Body17:edge:14", + "sourceRefs": [ + { + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:3;:G#44;CUT;:H-94c:a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "kind": "edge", + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E;:H94c,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#26:4;:G#45;CUT;:H-94c:a,E;:H94c,E", + "stringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "Body17:edge:15", + "sourceRefs": [ + { + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#26:4;:G#45;CUT;:H-94c:a,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g4;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#29:4;:M;CUT;:H-94c:7,E;:H94c,E", + "stringIds": [ + 41 + ] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Body17:edge:16", + "sourceRefs": [ + { + "mappedName": "#29:4;:M;CUT;:H-94c:7,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#29:4;:M;CUT;:H-94c:7,E", + "stageId": "Pocket17" + }, + { + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:(#41:1;K-7;:H94a:4,F)", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 61 + ], + "kind": "edge", + "mappedName": "#3d:1;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#3d:1;:H-94c,E;:H94c,E", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Body17:edge:17", + "sourceRefs": [ + { + "mappedName": "#3d:1;:H-94c,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3d:1;:H-94c,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#28:2;:M;CUT;:H-94c:7,E;:H94c,E", + "stringIds": [ + 40 + ] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "Body17:edge:18", + "sourceRefs": [ + { + "mappedName": "#28:2;:M;CUT;:H-94c:7,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#28:2;:M;CUT;:H-94c:7,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3v2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:M;CUT;:H-94c:7,E;:H94c,E", + "stringIds": [ + 42 + ] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Body17:edge:19", + "sourceRefs": [ + { + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#2a:6;:M;CUT;:H-94c:7,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#66", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:2;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#3d:2;:H-94c,E;:H94c,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Body17:edge:20", + "sourceRefs": [ + { + "mappedName": "#3d:2;:H-94c,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3d:2;:H-94c,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E;:H94c,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#2b:8;:M;CUT;:H-94c:7,E;:H94c,E", + "stringIds": [ + 43 + ] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Body17:edge:21", + "sourceRefs": [ + { + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#2b:8;:M;CUT;:H-94c:7,E", + "stageId": "Pocket17" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#88", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:3;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#3d:3;:H-94c,E;:H94c,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Body17:edge:22", + "sourceRefs": [ + { + "mappedName": "#3d:3;:H-94c,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3d:3;:H-94c,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:4;:H-94c,E;:H94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#3d:4;:H-94c,E;:H94c,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Body17:edge:23", + "sourceRefs": [ + { + "mappedName": "#3d:4;:H-94c,E", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3d:4;:H-94c,E", + "stageId": "Pocket17" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g4;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:H94a,V;:H94c,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:H94a,V;:H94c,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body17:vertex:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#f:1;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#2:1;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#2:1;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:H94a,V;:H94c,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:H94a,V;:H94c,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body17:vertex:1", + "sourceRefs": [ + { + "mappedName": "#2e:1;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#2e:1;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#18:1;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:H94a,V;:H94c,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body17:vertex:2", + "sourceRefs": [ + { + "mappedName": "#10:2;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#10:2;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#4:2;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#4:2;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:H94a,V;:H94c,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body17:vertex:3", + "sourceRefs": [ + { + "mappedName": "#30:2;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#30:2;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#19:2;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:H94a,V;:H94c,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body17:vertex:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#12:2;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#8:2;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#8:2;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:H94a,V;:H94c,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body17:vertex:5", + "sourceRefs": [ + { + "mappedName": "#34:2;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#34:2;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#1b:2;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:H94a,V;:H94c,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body17:vertex:6", + "sourceRefs": [ + { + "mappedName": "#11:2;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#11:2;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#6:2;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#6:2;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:H94a,V;:H94c,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:H94a,V;:H94c,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body17:vertex:7", + "sourceRefs": [ + { + "mappedName": "#32:2;:H94a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#32:2;:H94a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#1a:2;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 20, + 40, + 65, + 70 + ], + "kind": "vertex", + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 40, + 65, + 70 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#28:2;:G#46;CUT;:H-94c:a,V;:H94c,V", + "stringIds": [ + 20, + 40, + 65, + 70 + ] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Body17:vertex:8", + "sourceRefs": [ + { + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#28:2;:G#46;CUT;:H-94c:a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3v2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 20, + 41, + 65, + 71 + ], + "kind": "vertex", + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 41, + 65, + 71 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#29:4;:G#47;CUT;:H-94c:a,V;:H94c,V", + "stringIds": [ + 20, + 41, + 65, + 71 + ] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Body17:vertex:9", + "sourceRefs": [ + { + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#29:4;:G#47;CUT;:H-94c:a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:(#41:1;K-7;:H94a:4,F)", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 20, + 42, + 65, + 72 + ], + "kind": "vertex", + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 42, + 65, + 72 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#2a:6;:G#48;CUT;:H-94c:a,V;:H94c,V", + "stringIds": [ + 20, + 42, + 65, + 72 + ] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "Body17:vertex:10", + "sourceRefs": [ + { + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#2a:6;:G#48;CUT;:H-94c:a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#66", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 20, + 43, + 65, + 73 + ], + "kind": "vertex", + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V;:H94c,V", + "mappedStringIds": [ + 20, + 43, + 65, + 73 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#2b:8;:G#49;CUT;:H-94c:a,V;:H94c,V", + "stringIds": [ + 20, + 43, + 65, + 73 + ] + }, + "relation": "generated", + "resultIndex": 11, + "resultPersistentId": "Body17:vertex:11", + "sourceRefs": [ + { + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#2b:8;:G#49;CUT;:H-94c:a,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#88", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 57 + ], + "kind": "vertex", + "mappedName": "#39:4;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 57 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#39:4;:H-94c,V;:H94c,V", + "stringIds": [ + 57 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body17:vertex:12", + "sourceRefs": [ + { + "mappedName": "#39:4;:H-94c,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#39:4;:H-94c,V", + "stageId": "Pocket17" + }, + { + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:(#41:1;K-7;:H94a:4,F)", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 56 + ], + "kind": "vertex", + "mappedName": "#38:2;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#38:2;:H-94c,V;:H94c,V", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body17:vertex:13", + "sourceRefs": [ + { + "mappedName": "#38:2;:H-94c,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#38:2;:H-94c,V", + "stageId": "Pocket17" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3v2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "kind": "vertex", + "mappedName": "#3a:6;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 58 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#3a:6;:H-94c,V;:H94c,V", + "stringIds": [ + 58 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body17:vertex:14", + "sourceRefs": [ + { + "mappedName": "#3a:6;:H-94c,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3a:6;:H-94c,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#66", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:8;:H-94c,V;:H94c,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3b:8;:H-94c,V;:H94c,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body17:vertex:15", + "sourceRefs": [ + { + "mappedName": "#3b:8;:H-94c,V", + "objectId": "Pocket17", + "persistentId": "Pocket17:mapped:#3b:8;:H-94c,V", + "stageId": "Pocket17" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#88", + "stageId": "PocketSketch17" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body17", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body17", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "volume": 143.60000000000002 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch17.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch17", + "name": "Sketch17", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch17:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch17:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch17:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch17:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch17:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch17:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch17:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch17:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch17", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch17", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad17.AddSubShape.Map.txt", + "Pad17.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad17", + "name": "Pad17", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:H949,E" + ], + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:H949,E" + ], + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:H949,E" + ], + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:H949,E" + ], + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:H949,E" + ], + "mappedName": "#d:1;FAC;:H949:4,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:H949:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:H949:4,F", + "#b:1;:H949,E" + ], + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:H949,V" + ], + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:H949,V" + ], + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:H949,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:H949:7,F", + "#b:1;:H949,E" + ], + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:H949,V" + ], + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:H949,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:H949:7,F", + "#b:2;:H949,E" + ], + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:H949,V" + ], + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:H949,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:H949:7,F", + "#b:3;:H949,E" + ], + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:H949,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:H949:7,F", + "#b:4;:H949,E" + ], + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:H949,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:H949:7,E", + "#2:1;:H949,V" + ], + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:H949,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:H949:7,E", + "#4:2;:H949,V" + ], + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:H949,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:H949:7,E", + "#6:2;:H949,V" + ], + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:H949,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:H949:7,E", + "#8:2;:H949,V" + ], + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:H949:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad17:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:H949:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad17:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:H949:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad17:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:H949:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad17:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:H949:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:H949:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad17:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:H949:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad17:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:H949:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad17:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:H949:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad17:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:H949,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:H949,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad17:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:H949:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad17:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:H949:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad17:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:H949,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:H949,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad17:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:H949:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad17:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:H949:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad17:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:H949,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:H949,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad17:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:H949:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad17:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:H949,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:H949,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad17:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:H949:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad17:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:H949,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:H949,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad17:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:H949:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad17:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:H949,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:H949,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad17:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:H949:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad17:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:H949,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:H949,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad17:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:H949:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad17:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:H949,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:H949,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad17:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:H949:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad17:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad17", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad17", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 149.99999999999997 + }, + "typeId": "PartDesign::Pad" + }, + { + "elementMap2ResourcePaths": [ + "PocketSketch17.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "PocketSketch17", + "name": "PocketSketch17", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch17:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch17:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch17:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch17:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch17:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch17:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch17:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch17:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "PocketSketch17", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "PocketSketch17", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pocket17.AddSubShape.Map.txt", + "Pocket17.Shape.Map.txt" + ], + "elementMapSize": 55, + "elementMapVersion": "15.70200.5", + "label": "Pocket17", + "name": "Pocket17", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H949,E" + ], + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:H94a,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:H949,E" + ], + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:H94a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:H949,E" + ], + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:H94a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:H949,E" + ], + "mappedName": "#d:1;FAC;:H949:4,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:H94a,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#41:1;:M;CUT;:H94a:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:H949:4,F", + "#b:1;:H949,E" + ], + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 20, + 65 + ], + "mappedName": "#41:1;:M;CUT;:H94a:7,F", + "mappedStringIds": [ + 20, + 65 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:H94a,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:H949,E" + ], + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:H94a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:H94b:7,F", + "#b:1;:H94b,E" + ], + "mappedName": "#26:1;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:H94b:7,F", + "#b:2;:H94b,E" + ], + "mappedName": "#26:2;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:H94b:7,F", + "#b:3;:H94b,E" + ], + "mappedName": "#26:3;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:H94b:7,F", + "#b:4;:H94b,E" + ], + "mappedName": "#26:4;:M;CUT;:H-94c:7,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#24:1;:G0;XTR;:H94b:8,F", + "#1d:1;FAC;:H94b:4,F", + "#b:1;:H94b,E" + ], + "mappedName": "#3f:1;:H-94c,F", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:1;:H-94c,F", + "mappedStringIds": [ + 63 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:H949,V" + ], + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:H94a,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:H949,V" + ], + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:H94a,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:H94a,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:H949:7,F", + "#b:1;:H949,E" + ], + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:H94a,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:H949,V" + ], + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:H94a,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:H94a,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:H949:7,F", + "#b:4;:H949,E" + ], + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:H94a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:H949,V" + ], + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:H94a,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:H94a,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:H949:7,F", + "#b:2;:H949,E" + ], + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:H94a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:H949,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:H94a,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:H94a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:H949:7,F", + "#b:3;:H949,E" + ], + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:H94a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:H94b:7,F", + "#b:1;:H94b,E" + ], + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 20, + 38, + 65, + 66 + ], + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E", + "mappedStringIds": [ + 20, + 38, + 65, + 66 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:H94b:7,F", + "#b:2;:H94b,E" + ], + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:H94b:7,F", + "#b:3;:H94b,E" + ], + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:H94b:7,F", + "#b:4;:H94b,E" + ], + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:H94b:7,E", + "#44;:H94b,V" + ], + "mappedName": "#29:4;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#26:1;:U;XTR;:H94b:7,E", + "#1d:1;:G;XTR;:H94b:7,F", + "#b:1;:H94b,E" + ], + "mappedName": "#3d:1;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:1;:H-94c,E", + "mappedStringIds": [ + 61 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:H94b:7,E", + "#22;:H94b,V", + "#8;:H94b,V" + ], + "mappedName": "#28:2;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:H94b:7,E", + "#66;:H94b,V" + ], + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#26:2;:U;XTR;:H94b:7,E", + "#1d:2;:G;XTR;:H94b:7,F", + "#b:2;:H94b,E" + ], + "mappedName": "#3d:2;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:2;:H-94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:H94b:7,E", + "#88;:H94b,V" + ], + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#26:3;:U;XTR;:H94b:7,E", + "#1d:3;:G;XTR;:H94b:7,F", + "#b:3;:H94b,E" + ], + "mappedName": "#3d:3;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:3;:H-94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#26:4;:U;XTR;:H94b:7,E", + "#1d:4;:G;XTR;:H94b:7,F", + "#b:4;:H94b,E" + ], + "mappedName": "#3d:4;:H-94c,E", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:4;:H-94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:H94a,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:H949:7,E", + "#2:1;:H949,V" + ], + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:H94a,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:H94a,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:H949:7,E", + "#4:2;:H949,V" + ], + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:H94a,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:H94a,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:H949:7,E", + "#8:2;:H949,V" + ], + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:H94a,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:H949,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:H94a,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:H94a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:H949:7,E", + "#6:2;:H949,V" + ], + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "object": "Pad17", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:H94a,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:H94b:7,E", + "#22;:H94b,V", + "#8;:H94b,V" + ], + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 20, + 40, + 65, + 70 + ], + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 40, + 65, + 70 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:H94b:7,E", + "#44;:H94b,V" + ], + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 20, + 41, + 65, + 71 + ], + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 41, + 65, + 71 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:H94b:7,E", + "#66;:H94b,V" + ], + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 20, + 42, + 65, + 72 + ], + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 42, + 65, + 72 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:H94b:7,E", + "#88;:H94b,V" + ], + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 20, + 43, + 65, + 73 + ], + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 43, + 65, + 73 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#29:4;:U;XTR;:H94b:7,V", + "#20:4;:G;XTR;:H94b:7,E", + "#44;:H94b,V" + ], + "mappedName": "#39:4;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 57 + ], + "mappedName": "#39:4;:H-94c,V", + "mappedStringIds": [ + 57 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#28:2;:U;XTR;:H94b:7,V", + "#1f:2;:G;XTR;:H94b:7,E", + "#22;:H94b,V", + "#8;:H94b,V" + ], + "mappedName": "#38:2;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:2;:H-94c,V", + "mappedStringIds": [ + 56 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#2a:6;:U;XTR;:H94b:7,V", + "#21:6;:G;XTR;:H94b:7,E", + "#66;:H94b,V" + ], + "mappedName": "#3a:6;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "mappedName": "#3a:6;:H-94c,V", + "mappedStringIds": [ + 58 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#2b:8;:U;XTR;:H94b:7,V", + "#22:8;:G;XTR;:H94b:7,E", + "#88;:H94b,V" + ], + "mappedName": "#3b:8;:H-94c,V", + "object": "Pocket17", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch17", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:8;:H-94c,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 51, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 51, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:H94a,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:H94a,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket17:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:1;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:H94a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:H94a,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket17:face:1", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:4;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:H94a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:H94a,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket17:face:2", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:2;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:H94a,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:H94a,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket17:face:3", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:H949:4,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:1;FAC;:H949:4,F", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 20, + 65 + ], + "kind": "face", + "mappedName": "#41:1;:M;CUT;:H94a:7,F", + "mappedStringIds": [ + 20, + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#41:1;:M;CUT;:H94a:7,F", + "stringIds": [ + 20, + 65 + ] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Pocket17:face:4", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:H949:8,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#14:1;:G0;XTR;:H949:8,F", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:H94a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:H94a,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket17:face:5", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:H949:7,F", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#d:3;:G;XTR;:H949:7,F", + "stageId": "Pad17" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:M;CUT;:H-94c:7,F", + "stringIds": [ + 38 + ] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Pocket17:face:6", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:2;:M;CUT;:H-94c:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Pocket17:face:7", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:3;:M;CUT;:H-94c:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Pocket17:face:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:M;CUT;:H-94c:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#26:4;:M;CUT;:H-94c:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Pocket17:face:9", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g4;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "kind": "face", + "mappedName": "#3f:1;:H-94c,F", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#3f:1;:H-94c,F", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket17:face:10", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:H94a,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:H94a,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket17:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#f:1;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:H94a,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:H94a,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket17:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#10:2;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:H94a,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:H94a,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket17:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:1;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:H94a,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:H94a,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket17:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:1;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:H94a,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:H94a,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket17:edge:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#12:2;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:H94a,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:H94a,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket17:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:4;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:4;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:H94a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:H94a,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket17:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:4;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g4;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:H94a,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:H94a,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket17:edge:7", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#11:2;:G;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:H94a,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:H94a,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket17:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:2;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:2;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:H94a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:H94a,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket17:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:2;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:H94a,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:H94a,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket17:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:3;:H949,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#b:3;:H949,E", + "stageId": "Pad17" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:H94a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:H94a,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket17:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:H949:7,E", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#16:3;:U;XTR;:H949:7,E", + "stageId": "Pad17" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 20, + 38, + 65, + 66 + ], + "kind": "edge", + "mappedName": "#26:1;:G#42;CUT;:H-94c:a,E", + "mappedStringIds": [ + 20, + 38, + 65, + 66 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#26:1;:G#42;CUT;:H-94c:a,E", + "stringIds": [ + 20, + 38, + 65, + 66 + ] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Pocket17:edge:12", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "kind": "edge", + "mappedName": "#26:2;:G#43;CUT;:H-94c:a,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#26:2;:G#43;CUT;:H-94c:a,E", + "stringIds": [ + 11, + 20, + 29, + 38, + 65, + 67 + ] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Pocket17:edge:13", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "kind": "edge", + "mappedName": "#26:3;:G#44;CUT;:H-94c:a,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#26:3;:G#44;CUT;:H-94c:a,E", + "stringIds": [ + 11, + 20, + 29, + 38, + 65, + 68 + ] + }, + "relation": "generated", + "resultIndex": 14, + "resultPersistentId": "Pocket17:edge:14", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "kind": "edge", + "mappedName": "#26:4;:G#45;CUT;:H-94c:a,E", + "mappedStringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#26:4;:G#45;CUT;:H-94c:a,E", + "stringIds": [ + 11, + 20, + 29, + 38, + 65, + 69 + ] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "Pocket17:edge:15", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g4;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#29:4;:M;CUT;:H-94c:7,E", + "stringIds": [ + 41 + ] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Pocket17:edge:16", + "sourceRefs": [ + { + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:(#41:1;K-7;:H94a:4,F)", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 61 + ], + "kind": "edge", + "mappedName": "#3d:1;:H-94c,E", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#3d:1;:H-94c,E", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Pocket17:edge:17", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g1;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#28:2;:M;CUT;:H-94c:7,E", + "stringIds": [ + 40 + ] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "Pocket17:edge:18", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3v2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:M;CUT;:H-94c:7,E", + "stringIds": [ + 42 + ] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Pocket17:edge:19", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#66", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:2;:H-94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#3d:2;:H-94c,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Pocket17:edge:20", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:M;CUT;:H-94c:7,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#2b:8;:M;CUT;:H-94c:7,E", + "stringIds": [ + 43 + ] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Pocket17:edge:21", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#88", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:3;:H-94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#3d:3;:H-94c,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Pocket17:edge:22", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:4;:H-94c,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#3d:4;:H-94c,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Pocket17:edge:23", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g4;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:H94a,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:H94a,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket17:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#2:1;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:H94a,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:H94a,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket17:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#18:1;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v11;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:H94a,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:H94a,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket17:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#4:2;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:H94a,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:H94a,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket17:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#19:2;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g1v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:H94a,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:H94a,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket17:vertex:4", + "sourceRefs": [ + { + "mappedName": "#8:2;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#8:2;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:H94a,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:H94a,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket17:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#1b:2;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g3v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:H94a,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:H94a,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket17:vertex:6", + "sourceRefs": [ + { + "mappedName": "#6:2;:H949,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#6:2;:H949,V", + "stageId": "Pad17" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:H94a,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:H94a,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket17:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:H949:7,V", + "objectId": "Pad17", + "persistentId": "Pad17:mapped:#1a:2;:U;XTR;:H949:7,V", + "stageId": "Pad17" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch17", + "persistentId": "Sketch17:mapped:g2v22;SKT", + "stageId": "Sketch17" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 20, + 40, + 65, + 70 + ], + "kind": "vertex", + "mappedName": "#28:2;:G#46;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 40, + 65, + 70 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#28:2;:G#46;CUT;:H-94c:a,V", + "stringIds": [ + 20, + 40, + 65, + 70 + ] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Pocket17:vertex:8", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3v2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 20, + 41, + 65, + 71 + ], + "kind": "vertex", + "mappedName": "#29:4;:G#47;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 41, + 65, + 71 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#29:4;:G#47;CUT;:H-94c:a,V", + "stringIds": [ + 20, + 41, + 65, + 71 + ] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Pocket17:vertex:9", + "sourceRefs": [ + { + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:(#41:1;K-7;:H94a:4,F)", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 20, + 42, + 65, + 72 + ], + "kind": "vertex", + "mappedName": "#2a:6;:G#48;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 42, + 65, + 72 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#2a:6;:G#48;CUT;:H-94c:a,V", + "stringIds": [ + 20, + 42, + 65, + 72 + ] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "Pocket17:vertex:10", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#66", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 20, + 43, + 65, + 73 + ], + "kind": "vertex", + "mappedName": "#2b:8;:G#49;CUT;:H-94c:a,V", + "mappedStringIds": [ + 20, + 43, + 65, + 73 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#2b:8;:G#49;CUT;:H-94c:a,V", + "stringIds": [ + 20, + 43, + 65, + 73 + ] + }, + "relation": "generated", + "resultIndex": 11, + "resultPersistentId": "Pocket17:vertex:11", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#88", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 57 + ], + "kind": "vertex", + "mappedName": "#39:4;:H-94c,V", + "mappedStringIds": [ + 57 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#39:4;:H-94c,V", + "stringIds": [ + 57 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket17:vertex:12", + "sourceRefs": [ + { + "mappedName": "(#41:1;K-7;:H94a:4,F)", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:(#41:1;K-7;:H94a:4,F)", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 56 + ], + "kind": "vertex", + "mappedName": "#38:2;:H-94c,V", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#38:2;:H-94c,V", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket17:vertex:13", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:g3v2;SKT", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "kind": "vertex", + "mappedName": "#3a:6;:H-94c,V", + "mappedStringIds": [ + 58 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#3a:6;:H-94c,V", + "stringIds": [ + 58 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket17:vertex:14", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#66", + "stageId": "PocketSketch17" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:8;:H-94c,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3b:8;:H-94c,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket17:vertex:15", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch17", + "persistentId": "PocketSketch17:mapped:#88", + "stageId": "PocketSketch17" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pocket17", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pocket17", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "volume": 143.60000000000002 + }, + "typeId": "PartDesign::Pocket" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "72fb0595c1a538cbb294fdbad988f67db93ab081ce18abef98918643b0a47dd1", + "text": "StringTableStart v1 73\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:H949,E\n-1.4c.1.2\n-1.0 0:;:H949,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:H949:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H949:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H949:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:H94b,E\n-1.4c.1.12\n-1.0 0:;:H94b,V\n-1.2c.1.1d\n-1.2c.0.2\n-1.2c.0.2\n-1.2c.0.2\n-1.0 0:;FAC;:H94b:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:H94b:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:H94b:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.-19.-1f\n-1.0 0:;:U;XTR;:H949:7,V\n-1.4c.1.16\n-1.4c.-1f.-13\n-1.4c.1f.14\n-1.4c.-1f.-12\n-1.4c.1f.13\n-1.4c.-1f.-11\n-1.4c.1f.12\n-1.0 0:;:U;XTR;:H949:7,E\n-1.4c.1.20\n-1.0 0:;:U;XTR;:H94b:7,V\n-1.4c.1.10\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:U;XTR;:H94b:7,E\n-1.4c.1.17\n-1.0 0:;:G0;XTR;:H94b:8,F\n-1.4c.1.1b\n-1.0 0:;:G0;XTR;:H949:8,F\n-1.c.1.24 #14:\n-1.0 0:(#41:1;K-5;:H94a:4,F)\n-1.0 0:(#41:1;K-6;:H94a:4,F)\n-1.0 0:(#41:1;K-7;:H94a:4,F)\n-1.0 0:(#41:1;K-8;:H94a:4,F)\n-1.0 0:(#41:1;K-1;:H94a:4,F)\n-1.0 0:(#41:1;K-2;:H94a:4,F)\n-1.0 0:(#41:1;K-3;:H94a:4,F)\n-1.0 0:(#41:1;K-4;:H94a:4,F)\n" + } + }, + { + "elementMapResources": { + "Body18.Shape.Map.txt": { + "sha256": "476c9b538074155bc08c359a2f1a0f601f97aec949f2692cb0ce5cab687befd8", + "text": "BeginElementMap v1\n1 PostfixCount 9\nEdge\nFace\nVertex\n;:Hf68,V\n;:Hf68,F\n;:Hf68,E\n;:H-f6a,E\n;:H-f6a,V\n;:H-f6a,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#28:2.7 0\n$#29:4.7 0\n$#1d:1.7 0\n$#43:1.7 0\n$#2b:8.7 0\n$#1d:4.7.b 0\n$#43:4.7.b.1d.26 0\n$#2a:6.7 0\n$#1d:2.7.b 0\n$#43:2.7.b.1d.26 0\n$#1d:3.7.b 0\n$#43:3.7.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 13\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#38:1.5 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:4.9.b.1d 0\n$#26:2.9.b.1d 0\n$#24:1.9 0\n$#45:1.9 0\n$#26:3.9.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 $#39:3.8 0\n$#3b:2.8 0\n$#20.8 $#3c:5.8 0\n$#3d:4.8 0\n$#22.8 $#40:9.8 0\n$#41:8.8 0\n$#21.8 $#3e:7.8 0\n$#3f:6.8 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 24 3946 1 ;:Hf6a,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 12 3946 1 ;:Hf6a,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 16 3946 1 ;:Hf6a,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad18.AddSubShape.Map.txt": { + "sha256": "f913e36c0c40da0f0a68d0ef29f75182a9665c96063f02fe5c73429b33ce1696", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hf67:7,E\n;:G0;XTR;:Hf67:8,F\n;:U;XTR;:Hf67:7,E\n;:U;XTR;:Hf67:7,V\n;:Hf67,V\n;:Hf67,E\n;:G;XTR;:Hf67:7,F\n;FAC;:Hf67:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad18.Shape.Map.txt": { + "sha256": "8c67dfa5c0bc0fc258e56f645c38448bd6911d2623ce790f6138d52f9f5dffc6", + "text": "BeginElementMap v1\n5 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hf67:7,E\n;:G0;XTR;:Hf67:8,F\n;:U;XTR;:Hf67:7,E\n;:U;XTR;:Hf67:7,V\n;:Hf67,V\n;:Hf67,E\n;:G;XTR;:Hf67:7,F\n;FAC;:Hf67:4,F\n\nMapCount 1\n\nElementMap 1 5 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pocket18.AddSubShape.Map.txt": { + "sha256": "70a627efc38e4e875810375b337e4afd4e3bf960edd3d9e3a3bdf2dc019b3455", + "text": "BeginElementMap v1\n7 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hf69:7,F\n;FAC;:Hf69:4,F\n;:G;XTR;:Hf69:7,E\n;:G0;XTR;:Hf69:8,F\n;:U;XTR;:Hf69:7,E\n;:U;XTR;:Hf69:7,V\n;:Hf69,V\n;:Hf69,E\n\nMapCount 1\n\nElementMap 1 7 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#1f:2.6 0\n$#20:4.6 0\n$#b:1.b 0\n$#26:1.8 0\n$#21:6.6 0\n$#b:2.b 0\n$#26:2.8.b.1d 0\n$#22:8.6 0\n$#b:3.b 0\n$#26:3.8.b.1d 0\n$#b:4.b 0\n$#26:4.8.b.1d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#1d:1.4 0\n$#1d:2.4.b 0\n$#1d:3.4.b 0\n$#1d:4.4.b 0\n$#1d:1.5 0\n$#24:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2.a $#3.a 0\n$#28:2.9 0\n$#4.a $#5.a 0\n$#29:4.9 0\n$#6.a $#7.a 0\n$#2a:6.9 0\n$#8.a $#9.a 0\n$#2b:8.9 0\n\nEndMap\n" + }, + "Pocket18.Shape.Map.txt": { + "sha256": "85eb18ff52953e534394400a34c65a7934979290b18a57fad3434e8fb8346c5d", + "text": "BeginElementMap v1\n2 PostfixCount 9\nEdge\nFace\nVertex\n;:Hf68,V\n;:Hf68,F\n;:Hf68,E\n;:H-f6a,E\n;:H-f6a,V\n;:H-f6a,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#28:2.7 0\n$#29:4.7 0\n$#1d:1.7 0\n$#43:1.7 0\n$#2b:8.7 0\n$#1d:4.7.b 0\n$#43:4.7.b.1d.26 0\n$#2a:6.7 0\n$#1d:2.7.b 0\n$#43:2.7.b.1d.26 0\n$#1d:3.7.b 0\n$#43:3.7.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 13\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#38:1.5 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:4.9.b.1d 0\n$#26:2.9.b.1d 0\n$#24:1.9 0\n$#45:1.9 0\n$#26:3.9.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 $#39:3.8 0\n$#3b:2.8 0\n$#20.8 $#3c:5.8 0\n$#3d:4.8 0\n$#22.8 $#40:9.8 0\n$#41:8.8 0\n$#21.8 $#3e:7.8 0\n$#3f:6.8 0\n\nEndMap\n" + }, + "PocketSketch18.Shape.Map.txt": { + "sha256": "1ed561710b6beacd691b5c137e89026185121dd34f9665cf426096572e48efa0", + "text": "BeginElementMap v1\n6 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 6 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + }, + "Sketch18.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pocket18", + "id": "partdesign-pocket-twoside", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body18.Shape.Map.txt" + ], + "elementMapSize": 52, + "elementMapVersion": "15.70200.5", + "label": "Body18", + "name": "Body18", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:Hf68,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:1;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hf67,E" + ], + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:Hf68,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:4;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:Hf67,E" + ], + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:Hf68,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:2;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:Hf67,E" + ], + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:Hf68,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#14:1;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hf67,E" + ], + "mappedName": "#d:1;FAC;:Hf67:4,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#38:1;:Hf68,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#38:1;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:Hf67:4,F", + "#b:1;:Hf67,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:1;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 56 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:Hf68,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:3;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:Hf67,E" + ], + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#26:1;:H-f6a,F" + ], + "mappedName": "#26:1;:H-f6a,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:Hf69:7,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#26:1;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#26:4;:H-f6a,F" + ], + "mappedName": "#26:4;:H-f6a,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:Hf69:7,F", + "#b:4;:Hf69,E" + ], + "mappedName": "#26:4;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#26:2;:H-f6a,F" + ], + "mappedName": "#26:2;:H-f6a,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:Hf69:7,F", + "#b:2;:Hf69,E" + ], + "mappedName": "#26:2;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#24:1;:H-f6a,F" + ], + "mappedName": "#24:1;:H-f6a,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;FAC;:Hf69:4,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#24:1;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "mappedName": "#24:1;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 36 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#45:1;:H-f6a,F" + ], + "mappedName": "#45:1;:H-f6a,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#24:1;:G0;XTR;:Hf69:8,F", + "#1d:1;FAC;:Hf69:4,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#45:1;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "mappedName": "#45:1;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 69 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [ + "#26:3;:H-f6a,F" + ], + "mappedName": "#26:3;:H-f6a,F;:Hf6a,F", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:Hf69:7,F", + "#b:3;:Hf69,E" + ], + "mappedName": "#26:3;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#18:1;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:Hf67,V" + ], + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#19:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:Hf67,V" + ], + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:1;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:1;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:Hf67:7,F", + "#b:1;:Hf67,E" + ], + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1b:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:Hf67,V" + ], + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:4;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:4;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:Hf67:7,F", + "#b:4;:Hf67,E" + ], + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1a:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:Hf67,V" + ], + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:Hf67:7,F", + "#b:2;:Hf67,E" + ], + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:3;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:Hf68,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:3;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:Hf67:7,F", + "#b:3;:Hf67,E" + ], + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#28:2;:H-f6a,E" + ], + "mappedName": "#28:2;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:Hf69:7,E", + "#22;:Hf69,V", + "#8;:Hf69,V" + ], + "mappedName": "#28:2;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#29:4;:H-f6a,E" + ], + "mappedName": "#29:4;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:Hf69:7,E", + "#44;:Hf69,V", + ";:G0;XTR;:Hf69:8,F" + ], + "mappedName": "#29:4;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#1d:1;:H-f6a,E" + ], + "mappedName": "#1d:1;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hf69,E" + ], + "mappedName": "#1d:1;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#43:1;:H-f6a,E" + ], + "mappedName": "#43:1;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:1;:U;XTR;:Hf69:7,E", + "#1d:1;:G;XTR;:Hf69:7,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#43:1;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "mappedName": "#43:1;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 67 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#2b:8;:H-f6a,E" + ], + "mappedName": "#2b:8;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:Hf69:7,E", + "#88;:Hf69,V" + ], + "mappedName": "#2b:8;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#1d:4;:H-f6a,E" + ], + "mappedName": "#1d:4;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:Hf69,E" + ], + "mappedName": "#1d:4;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#43:4;:H-f6a,E" + ], + "mappedName": "#43:4;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:4;:U;XTR;:Hf69:7,E", + "#1d:4;:G;XTR;:Hf69:7,F", + "#b:4;:Hf69,E" + ], + "mappedName": "#43:4;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:4;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#2a:6;:H-f6a,E" + ], + "mappedName": "#2a:6;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:Hf69:7,E", + "#66;:Hf69,V" + ], + "mappedName": "#2a:6;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#1d:2;:H-f6a,E" + ], + "mappedName": "#1d:2;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:Hf69,E" + ], + "mappedName": "#1d:2;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#43:2;:H-f6a,E" + ], + "mappedName": "#43:2;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:2;:U;XTR;:Hf69:7,E", + "#1d:2;:G;XTR;:Hf69:7,F", + "#b:2;:Hf69,E" + ], + "mappedName": "#43:2;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:2;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#1d:3;:H-f6a,E" + ], + "mappedName": "#1d:3;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:Hf69,E" + ], + "mappedName": "#1d:3;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#43:3;:H-f6a,E" + ], + "mappedName": "#43:3;:H-f6a,E;:Hf6a,E", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:3;:U;XTR;:Hf69:7,E", + "#1d:3;:G;XTR;:Hf69:7,F", + "#b:3;:Hf69,E" + ], + "mappedName": "#43:3;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:3;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#f:1;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2e:1;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:Hf67:7,E", + "#2:1;:Hf67,V" + ], + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#10:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#30:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:Hf67:7,E", + "#4:2;:Hf67,V" + ], + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#12:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#34:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:Hf67:7,E", + "#8:2;:Hf67,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#11:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:Hf68,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#32:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:Hf67:7,E", + "#6:2;:Hf67,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#1f;:H-f6a,V" + ], + "mappedName": "#1f;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2;:Hf69,V" + ], + "mappedName": "#1f;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#3b:2;:H-f6a,V" + ], + "mappedName": "#3b:2;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#28:2;:U;XTR;:Hf69:7,V", + "#1f:2;:G;XTR;:Hf69:7,E", + "#22;:Hf69,V", + "#8;:Hf69,V" + ], + "mappedName": "#3b:2;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:2;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#20;:H-f6a,V" + ], + "mappedName": "#20;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4;:Hf69,V" + ], + "mappedName": "#20;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#3d:4;:H-f6a,V" + ], + "mappedName": "#3d:4;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#29:4;:U;XTR;:Hf69:7,V", + "#20:4;:G;XTR;:Hf69:7,E", + "#44;:Hf69,V", + ";:G0;XTR;:Hf69:8,F" + ], + "mappedName": "#3d:4;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:4;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 61 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#22;:H-f6a,V" + ], + "mappedName": "#22;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8;:Hf69,V" + ], + "mappedName": "#22;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#41:8;:H-f6a,V" + ], + "mappedName": "#41:8;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2b:8;:U;XTR;:Hf69:7,V", + "#22:8;:G;XTR;:Hf69:7,E", + "#88;:Hf69,V" + ], + "mappedName": "#41:8;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:8;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 65 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#21;:H-f6a,V" + ], + "mappedName": "#21;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6;:Hf69,V" + ], + "mappedName": "#21;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#3f:6;:H-f6a,V" + ], + "mappedName": "#3f:6;:H-f6a,V;:Hf6a,V", + "object": "Body18", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2a:6;:U;XTR;:Hf69:7,V", + "#21:6;:G;XTR;:Hf69:7,E", + "#66;:Hf69,V" + ], + "mappedName": "#3f:6;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:6;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 63 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 52, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 52, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:Hf68,F;:Hf6a,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body18:face:0", + "sourceRefs": [ + { + "mappedName": "#16:1;:Hf68,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#16:1;:Hf68,F", + "stageId": "Pocket18" + }, + { + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:1;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:Hf68,F;:Hf6a,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body18:face:1", + "sourceRefs": [ + { + "mappedName": "#16:4;:Hf68,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#16:4;:Hf68,F", + "stageId": "Pocket18" + }, + { + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:4;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:Hf68,F;:Hf6a,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body18:face:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:Hf68,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#16:2;:Hf68,F", + "stageId": "Pocket18" + }, + { + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:2;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:Hf68,F;:Hf6a,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body18:face:3", + "sourceRefs": [ + { + "mappedName": "#14:1;:Hf68,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#14:1;:Hf68,F", + "stageId": "Pocket18" + }, + { + "mappedName": "#d:1;FAC;:Hf67:4,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:1;FAC;:Hf67:4,F", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "kind": "face", + "mappedName": "#38:1;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#38:1;:Hf68,F;:Hf6a,F", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body18:face:4", + "sourceRefs": [ + { + "mappedName": "#38:1;:Hf68,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#38:1;:Hf68,F", + "stageId": "Pocket18" + }, + { + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#14:1;:G0;XTR;:Hf67:8,F", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:Hf68,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:Hf68,F;:Hf6a,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body18:face:5", + "sourceRefs": [ + { + "mappedName": "#16:3;:Hf68,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#16:3;:Hf68,F", + "stageId": "Pocket18" + }, + { + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:3;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:H-f6a,F;:Hf6a,F", + "stringIds": [ + 38 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body18:face:6", + "sourceRefs": [ + { + "mappedName": "#26:1;:H-f6a,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#26:1;:H-f6a,F", + "stageId": "Pocket18" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:4;:H-f6a,F;:Hf6a,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body18:face:7", + "sourceRefs": [ + { + "mappedName": "#26:4;:H-f6a,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#26:4;:H-f6a,F", + "stageId": "Pocket18" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g4;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:2;:H-f6a,F;:Hf6a,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body18:face:8", + "sourceRefs": [ + { + "mappedName": "#26:2;:H-f6a,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#26:2;:H-f6a,F", + "stageId": "Pocket18" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "kind": "face", + "mappedName": "#24:1;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 36 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#24:1;:H-f6a,F;:Hf6a,F", + "stringIds": [ + 36 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body18:face:9", + "sourceRefs": [ + { + "mappedName": "#24:1;:H-f6a,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#24:1;:H-f6a,F", + "stageId": "Pocket18" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "kind": "face", + "mappedName": "#45:1;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#45:1;:H-f6a,F;:Hf6a,F", + "stringIds": [ + 69 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body18:face:10", + "sourceRefs": [ + { + "mappedName": "#45:1;:H-f6a,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#45:1;:H-f6a,F", + "stageId": "Pocket18" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:H-f6a,F;:Hf6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "#26:3;:H-f6a,F;:Hf6a,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body18:face:11", + "sourceRefs": [ + { + "mappedName": "#26:3;:H-f6a,F", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#26:3;:H-f6a,F", + "stageId": "Pocket18" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:Hf68,E;:Hf6a,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body18:edge:0", + "sourceRefs": [ + { + "mappedName": "#18:1;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#18:1;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#f:1;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:Hf68,E;:Hf6a,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body18:edge:1", + "sourceRefs": [ + { + "mappedName": "#19:2;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#19:2;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#10:2;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:Hf68,E;:Hf6a,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body18:edge:2", + "sourceRefs": [ + { + "mappedName": "#d:1;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#d:1;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#b:1;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:1;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:Hf68,E;:Hf6a,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body18:edge:3", + "sourceRefs": [ + { + "mappedName": "#36:1;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#36:1;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:1;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:Hf68,E;:Hf6a,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body18:edge:4", + "sourceRefs": [ + { + "mappedName": "#1b:2;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1b:2;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#12:2;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:Hf68,E;:Hf6a,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body18:edge:5", + "sourceRefs": [ + { + "mappedName": "#d:4;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#d:4;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#b:4;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:4;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:Hf68,E;:Hf6a,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body18:edge:6", + "sourceRefs": [ + { + "mappedName": "#36:4;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#36:4;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:4;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:Hf68,E;:Hf6a,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body18:edge:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1a:2;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#11:2;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:Hf68,E;:Hf6a,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body18:edge:8", + "sourceRefs": [ + { + "mappedName": "#d:2;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#d:2;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#b:2;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:2;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:Hf68,E;:Hf6a,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body18:edge:9", + "sourceRefs": [ + { + "mappedName": "#36:2;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#36:2;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:2;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:Hf68,E;:Hf6a,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body18:edge:10", + "sourceRefs": [ + { + "mappedName": "#d:3;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#d:3;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#b:3;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:3;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:Hf68,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:Hf68,E;:Hf6a,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body18:edge:11", + "sourceRefs": [ + { + "mappedName": "#36:3;:Hf68,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#36:3;:Hf68,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:3;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#28:2;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 40 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body18:edge:12", + "sourceRefs": [ + { + "mappedName": "#28:2;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#28:2;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#29:4;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 41 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body18:edge:13", + "sourceRefs": [ + { + "mappedName": "#29:4;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#29:4;:H-f6a,E", + "stageId": "Pocket18" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:1;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body18:edge:14", + "sourceRefs": [ + { + "mappedName": "#1d:1;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1d:1;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "kind": "edge", + "mappedName": "#43:1;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#43:1;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 67 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body18:edge:15", + "sourceRefs": [ + { + "mappedName": "#43:1;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#43:1;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#2b:8;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 43 + ] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Body18:edge:16", + "sourceRefs": [ + { + "mappedName": "#2b:8;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#2b:8;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#88", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:4;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Body18:edge:17", + "sourceRefs": [ + { + "mappedName": "#1d:4;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1d:4;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g4;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:4;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#43:4;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Body18:edge:18", + "sourceRefs": [ + { + "mappedName": "#43:4;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#43:4;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g4;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 42 + ] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "Body18:edge:19", + "sourceRefs": [ + { + "mappedName": "#2a:6;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#2a:6;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#66", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#1d:2;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Body18:edge:20", + "sourceRefs": [ + { + "mappedName": "#1d:2;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1d:2;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:2;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#43:2;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "Body18:edge:21", + "sourceRefs": [ + { + "mappedName": "#43:2;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#43:2;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#1d:3;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Body18:edge:22", + "sourceRefs": [ + { + "mappedName": "#1d:3;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1d:3;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:3;:H-f6a,E;:Hf6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#43:3;:H-f6a,E;:Hf6a,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Body18:edge:23", + "sourceRefs": [ + { + "mappedName": "#43:3;:H-f6a,E", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#43:3;:H-f6a,E", + "stageId": "Pocket18" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:Hf68,V;:Hf6a,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body18:vertex:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#f:1;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#2:1;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#2:1;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:Hf68,V;:Hf6a,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body18:vertex:1", + "sourceRefs": [ + { + "mappedName": "#2e:1;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#2e:1;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#18:1;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:Hf68,V;:Hf6a,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body18:vertex:2", + "sourceRefs": [ + { + "mappedName": "#10:2;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#10:2;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#4:2;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#4:2;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:Hf68,V;:Hf6a,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body18:vertex:3", + "sourceRefs": [ + { + "mappedName": "#30:2;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#30:2;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#19:2;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:Hf68,V;:Hf6a,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body18:vertex:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#12:2;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#8:2;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#8:2;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:Hf68,V;:Hf6a,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body18:vertex:5", + "sourceRefs": [ + { + "mappedName": "#34:2;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#34:2;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#1b:2;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:Hf68,V;:Hf6a,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body18:vertex:6", + "sourceRefs": [ + { + "mappedName": "#11:2;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#11:2;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#6:2;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#6:2;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:Hf68,V;:Hf6a,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:Hf68,V;:Hf6a,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body18:vertex:7", + "sourceRefs": [ + { + "mappedName": "#32:2;:Hf68,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#32:2;:Hf68,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#1a:2;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 31 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body18:vertex:8", + "sourceRefs": [ + { + "mappedName": "#1f;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#1f;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1v1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:2;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#3b:2;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body18:vertex:9", + "sourceRefs": [ + { + "mappedName": "#3b:2;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#3b:2;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#20;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 32 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body18:vertex:10", + "sourceRefs": [ + { + "mappedName": "#20;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#20;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "kind": "vertex", + "mappedName": "#3d:4;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#3d:4;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body18:vertex:11", + "sourceRefs": [ + { + "mappedName": "#3d:4;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#3d:4;:H-f6a,V", + "stageId": "Pocket18" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#22;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 34 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body18:vertex:12", + "sourceRefs": [ + { + "mappedName": "#22;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#22;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "kind": "vertex", + "mappedName": "#41:8;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#41:8;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 65 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body18:vertex:13", + "sourceRefs": [ + { + "mappedName": "#41:8;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#41:8;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#88", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 33 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body18:vertex:14", + "sourceRefs": [ + { + "mappedName": "#21;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#21;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "kind": "vertex", + "mappedName": "#3f:6;:H-f6a,V;:Hf6a,V", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3f:6;:H-f6a,V;:Hf6a,V", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body18:vertex:15", + "sourceRefs": [ + { + "mappedName": "#3f:6;:H-f6a,V", + "objectId": "Pocket18", + "persistentId": "Pocket18:mapped:#3f:6;:H-f6a,V", + "stageId": "Pocket18" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#66", + "stageId": "PocketSketch18" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body18", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body18", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 12, + "solids": 1, + "valid": true, + "volume": 104.32 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch18.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch18", + "name": "Sketch18", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch18:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch18:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch18:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch18:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch18:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch18:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch18:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch18:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch18", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch18", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad18.AddSubShape.Map.txt", + "Pad18.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad18", + "name": "Pad18", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:Hf67,E" + ], + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hf67,E" + ], + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hf67,E" + ], + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hf67,E" + ], + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hf67,E" + ], + "mappedName": "#d:1;FAC;:Hf67:4,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Hf67:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:Hf67:4,F", + "#b:1;:Hf67,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:Hf67,V" + ], + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:Hf67,V" + ], + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:Hf67:7,F", + "#b:1;:Hf67,E" + ], + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:Hf67,V" + ], + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:Hf67:7,F", + "#b:2;:Hf67,E" + ], + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:Hf67,V" + ], + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:Hf67:7,F", + "#b:3;:Hf67,E" + ], + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:Hf67:7,F", + "#b:4;:Hf67,E" + ], + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hf67,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:Hf67:7,E", + "#2:1;:Hf67,V" + ], + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hf67,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:Hf67:7,E", + "#4:2;:Hf67,V" + ], + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hf67,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:Hf67:7,E", + "#6:2;:Hf67,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hf67,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:Hf67:7,E", + "#8:2;:Hf67,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Hf67:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad18:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Hf67:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad18:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Hf67:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad18:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Hf67:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad18:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Hf67:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Hf67:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad18:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Hf67:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad18:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Hf67:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad18:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Hf67:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad18:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Hf67,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad18:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Hf67:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad18:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Hf67:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad18:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Hf67,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad18:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Hf67:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad18:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Hf67:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad18:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Hf67,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad18:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Hf67:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad18:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hf67,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hf67,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad18:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Hf67:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad18:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hf67,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hf67,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad18:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Hf67:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad18:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hf67,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Hf67,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad18:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Hf67:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad18:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hf67,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hf67,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad18:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Hf67:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad18:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hf67,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hf67,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad18:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Hf67:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad18:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad18", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad18", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 112 + }, + "typeId": "PartDesign::Pad" + }, + { + "elementMap2ResourcePaths": [ + "PocketSketch18.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "PocketSketch18", + "name": "PocketSketch18", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch18:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch18:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch18:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch18:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch18:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch18:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch18:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch18:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "PocketSketch18", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "PocketSketch18", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pocket18.AddSubShape.Map.txt", + "Pocket18.Shape.Map.txt" + ], + "elementMapSize": 60, + "elementMapVersion": "15.70200.5", + "label": "Pocket18", + "name": "Pocket18", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hf67,E" + ], + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:Hf68,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:Hf67,E" + ], + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:Hf68,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:Hf67,E" + ], + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:Hf68,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hf67,E" + ], + "mappedName": "#d:1;FAC;:Hf67:4,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:Hf68,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#38:1;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:Hf67:4,F", + "#b:1;:Hf67,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:1;:Hf68,F", + "mappedStringIds": [ + 56 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:Hf68,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:Hf67,E" + ], + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:Hf68,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:Hf69:7,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#26:1;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:H-f6a,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:Hf69:7,F", + "#b:4;:Hf69,E" + ], + "mappedName": "#26:4;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:H-f6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:Hf69:7,F", + "#b:2;:Hf69,E" + ], + "mappedName": "#26:2;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:H-f6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#1d:1;FAC;:Hf69:4,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#24:1;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "mappedName": "#24:1;:H-f6a,F", + "mappedStringIds": [ + 36 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#24:1;:G0;XTR;:Hf69:8,F", + "#1d:1;FAC;:Hf69:4,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#45:1;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "mappedName": "#45:1;:H-f6a,F", + "mappedStringIds": [ + 69 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:Hf69:7,F", + "#b:3;:Hf69,E" + ], + "mappedName": "#26:3;:H-f6a,F", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:H-f6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:Hf67,V" + ], + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:Hf68,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:Hf67,V" + ], + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:Hf68,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:Hf68,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:Hf67:7,F", + "#b:1;:Hf67,E" + ], + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:Hf68,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:Hf67,V" + ], + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:Hf68,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:Hf68,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:Hf67:7,F", + "#b:4;:Hf67,E" + ], + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:Hf68,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:Hf67,V" + ], + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:Hf68,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:Hf68,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:Hf67:7,F", + "#b:2;:Hf67,E" + ], + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:Hf68,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:Hf67,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:Hf68,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:Hf68,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:Hf67:7,F", + "#b:3;:Hf67,E" + ], + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:Hf68,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:Hf69:7,E", + "#22;:Hf69,V", + "#8;:Hf69,V" + ], + "mappedName": "#28:2;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:H-f6a,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:Hf69:7,E", + "#44;:Hf69,V", + ";:G0;XTR;:Hf69:8,F" + ], + "mappedName": "#29:4;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:H-f6a,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hf69,E" + ], + "mappedName": "#1d:1;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:H-f6a,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#26:1;:U;XTR;:Hf69:7,E", + "#1d:1;:G;XTR;:Hf69:7,F", + "#b:1;:Hf69,E" + ], + "mappedName": "#43:1;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "mappedName": "#43:1;:H-f6a,E", + "mappedStringIds": [ + 67 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:Hf69:7,E", + "#88;:Hf69,V" + ], + "mappedName": "#2b:8;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:H-f6a,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hf69,E" + ], + "mappedName": "#1d:4;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:H-f6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#26:4;:U;XTR;:Hf69:7,E", + "#1d:4;:G;XTR;:Hf69:7,F", + "#b:4;:Hf69,E" + ], + "mappedName": "#43:4;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:4;:H-f6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:Hf69:7,E", + "#66;:Hf69,V" + ], + "mappedName": "#2a:6;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:H-f6a,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hf69,E" + ], + "mappedName": "#1d:2;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:H-f6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#26:2;:U;XTR;:Hf69:7,E", + "#1d:2;:G;XTR;:Hf69:7,F", + "#b:2;:Hf69,E" + ], + "mappedName": "#43:2;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:2;:H-f6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hf69,E" + ], + "mappedName": "#1d:3;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:H-f6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#26:3;:U;XTR;:Hf69:7,E", + "#1d:3;:G;XTR;:Hf69:7,F", + "#b:3;:Hf69,E" + ], + "mappedName": "#43:3;:H-f6a,E", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:3;:H-f6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:Hf68,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:Hf67:7,E", + "#2:1;:Hf67,V" + ], + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:Hf68,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:Hf68,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:Hf67:7,E", + "#4:2;:Hf67,V" + ], + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:Hf68,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:Hf68,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:Hf67:7,E", + "#8:2;:Hf67,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:Hf68,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:Hf67,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:Hf68,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:Hf68,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:Hf67:7,E", + "#6:2;:Hf67,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "object": "Pad18", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:Hf68,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#2;:Hf69,V" + ], + "mappedName": "#1f;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:H-f6a,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#28:2;:U;XTR;:Hf69:7,V", + "#1f:2;:G;XTR;:Hf69:7,E", + "#22;:Hf69,V", + "#8;:Hf69,V" + ], + "mappedName": "#3b:2;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:2;:H-f6a,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#4;:Hf69,V" + ], + "mappedName": "#20;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:H-f6a,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#29:4;:U;XTR;:Hf69:7,V", + "#20:4;:G;XTR;:Hf69:7,E", + "#44;:Hf69,V", + ";:G0;XTR;:Hf69:8,F" + ], + "mappedName": "#3d:4;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:4;:H-f6a,V", + "mappedStringIds": [ + 61 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#8;:Hf69,V" + ], + "mappedName": "#22;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:H-f6a,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#2b:8;:U;XTR;:Hf69:7,V", + "#22:8;:G;XTR;:Hf69:7,E", + "#88;:Hf69,V" + ], + "mappedName": "#41:8;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:8;:H-f6a,V", + "mappedStringIds": [ + 65 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#6;:Hf69,V" + ], + "mappedName": "#21;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:H-f6a,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#2a:6;:U;XTR;:Hf69:7,V", + "#21:6;:G;XTR;:Hf69:7,E", + "#66;:Hf69,V" + ], + "mappedName": "#3f:6;:H-f6a,V", + "object": "Pocket18", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch18", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:6;:H-f6a,V", + "mappedStringIds": [ + 63 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 52, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 52, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:Hf68,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:Hf68,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket18:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:1;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:Hf68,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:Hf68,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket18:face:1", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:4;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:Hf68,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:Hf68,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket18:face:2", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:2;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:Hf68,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:Hf68,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket18:face:3", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:Hf67:4,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:1;FAC;:Hf67:4,F", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "kind": "face", + "mappedName": "#38:1;:Hf68,F", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#38:1;:Hf68,F", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket18:face:4", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:Hf67:8,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#14:1;:G0;XTR;:Hf67:8,F", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:Hf68,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:Hf68,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket18:face:5", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:Hf67:7,F", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#d:3;:G;XTR;:Hf67:7,F", + "stageId": "Pad18" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:H-f6a,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:H-f6a,F", + "stringIds": [ + 38 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket18:face:6", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:H-f6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:4;:H-f6a,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket18:face:7", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g4;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:H-f6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:2;:H-f6a,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket18:face:8", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "kind": "face", + "mappedName": "#24:1;:H-f6a,F", + "mappedStringIds": [ + 36 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#24:1;:H-f6a,F", + "stringIds": [ + 36 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket18:face:9", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "kind": "face", + "mappedName": "#45:1;:H-f6a,F", + "mappedStringIds": [ + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#45:1;:H-f6a,F", + "stringIds": [ + 69 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket18:face:10", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:H-f6a,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "#26:3;:H-f6a,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket18:face:11", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:Hf68,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:Hf68,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket18:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#f:1;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:Hf68,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:Hf68,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket18:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#10:2;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:Hf68,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:Hf68,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket18:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:1;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:Hf68,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:Hf68,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket18:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:1;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:Hf68,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:Hf68,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket18:edge:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#12:2;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:Hf68,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:Hf68,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket18:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:4;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:4;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:Hf68,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:Hf68,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket18:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:4;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g4;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:Hf68,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:Hf68,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket18:edge:7", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#11:2;:G;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:Hf68,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:Hf68,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket18:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:2;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:2;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:Hf68,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:Hf68,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket18:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:2;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:Hf68,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:Hf68,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket18:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:3;:Hf67,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#b:3;:Hf67,E", + "stageId": "Pad18" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:Hf68,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:Hf68,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket18:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:Hf67:7,E", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#16:3;:U;XTR;:Hf67:7,E", + "stageId": "Pad18" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:H-f6a,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#28:2;:H-f6a,E", + "stringIds": [ + 40 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket18:edge:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:H-f6a,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#29:4;:H-f6a,E", + "stringIds": [ + 41 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket18:edge:13", + "sourceRefs": [] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:H-f6a,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:1;:H-f6a,E", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket18:edge:14", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "kind": "edge", + "mappedName": "#43:1;:H-f6a,E", + "mappedStringIds": [ + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#43:1;:H-f6a,E", + "stringIds": [ + 67 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket18:edge:15", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:H-f6a,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#2b:8;:H-f6a,E", + "stringIds": [ + 43 + ] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Pocket18:edge:16", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#88", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:H-f6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:4;:H-f6a,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Pocket18:edge:17", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g4;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:4;:H-f6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#43:4;:H-f6a,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Pocket18:edge:18", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g4;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:H-f6a,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:H-f6a,E", + "stringIds": [ + 42 + ] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "Pocket18:edge:19", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#66", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:H-f6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#1d:2;:H-f6a,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Pocket18:edge:20", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:2;:H-f6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#43:2;:H-f6a,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "Pocket18:edge:21", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:H-f6a,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#1d:3;:H-f6a,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Pocket18:edge:22", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:3;:H-f6a,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#43:3;:H-f6a,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Pocket18:edge:23", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:Hf68,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:Hf68,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket18:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#2:1;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:Hf68,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:Hf68,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket18:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#18:1;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v11;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:Hf68,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:Hf68,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket18:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#4:2;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:Hf68,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:Hf68,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket18:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#19:2;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g1v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:Hf68,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:Hf68,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket18:vertex:4", + "sourceRefs": [ + { + "mappedName": "#8:2;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#8:2;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:Hf68,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:Hf68,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket18:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#1b:2;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g3v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:Hf68,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:Hf68,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket18:vertex:6", + "sourceRefs": [ + { + "mappedName": "#6:2;:Hf67,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#6:2;:Hf67,V", + "stageId": "Pad18" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:Hf68,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:Hf68,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket18:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:Hf67:7,V", + "objectId": "Pad18", + "persistentId": "Pad18:mapped:#1a:2;:U;XTR;:Hf67:7,V", + "stageId": "Pad18" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch18", + "persistentId": "Sketch18:mapped:g2v22;SKT", + "stageId": "Sketch18" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:H-f6a,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:H-f6a,V", + "stringIds": [ + 31 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket18:vertex:8", + "sourceRefs": [ + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1v1;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:2;:H-f6a,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#3b:2;:H-f6a,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket18:vertex:9", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:H-f6a,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#20;:H-f6a,V", + "stringIds": [ + 32 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket18:vertex:10", + "sourceRefs": [ + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g1v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "kind": "vertex", + "mappedName": "#3d:4;:H-f6a,V", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#3d:4;:H-f6a,V", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket18:vertex:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:H-f6a,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#22;:H-f6a,V", + "stringIds": [ + 34 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket18:vertex:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g3v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "kind": "vertex", + "mappedName": "#41:8;:H-f6a,V", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#41:8;:H-f6a,V", + "stringIds": [ + 65 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket18:vertex:13", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#88", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:H-f6a,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:H-f6a,V", + "stringIds": [ + 33 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket18:vertex:14", + "sourceRefs": [ + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:g2v2;SKT", + "stageId": "PocketSketch18" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "kind": "vertex", + "mappedName": "#3f:6;:H-f6a,V", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3f:6;:H-f6a,V", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket18:vertex:15", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch18", + "persistentId": "PocketSketch18:mapped:#66", + "stageId": "PocketSketch18" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pocket18", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pocket18", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 12, + "solids": 1, + "valid": true, + "volume": 104.32 + }, + "typeId": "PartDesign::Pocket" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "0371c698d38e6dd70e3b1c03571154dbe7a00aee0dd2979cf51e02fbc0fb28d9", + "text": "StringTableStart v1 69\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:Hf67,E\n-1.4c.1.2\n-1.0 0:;:Hf67,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:Hf67:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hf67:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hf67:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:Hf69,E\n-1.4c.1.12\n-1.0 0:;:Hf69,V\n-1.2c.1.1d\n-1.2c.0.2\n-1.2c.0.2\n-1.2c.0.2\n-1.0 0:;FAC;:Hf69:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hf69:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hf69:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.-19.-1f\n-1.0 0:;:U;XTR;:Hf67:7,V\n-1.4c.1.16\n-1.4c.-1f.-13\n-1.4c.1f.14\n-1.4c.-1f.-12\n-1.4c.1f.13\n-1.4c.-1f.-11\n-1.4c.1f.12\n-1.0 0:;:U;XTR;:Hf67:7,E\n-1.4c.1.20\n-1.0 0:;:G0;XTR;:Hf67:8,F\n-1.4c.1.24\n-1.2c.-19.-11\n-1.0 0:;:U;XTR;:Hf69:7,V\n-1.4c.1.13\n-1.2c.-1c.-23\n-1.4c.1c.24\n-1.2c.-1c.-22\n-1.4c.1c.23\n-1.2c.-1c.-21\n-1.4c.1c.22\n-1.0 0:;:U;XTR;:Hf69:7,E\n-1.4c.1.1d\n-1.0 0:;:G0;XTR;:Hf69:8,F\n-1.4c.1.21\n" + } + }, + { + "elementMapResources": { + "Body19.Shape.Map.txt": { + "sha256": "4fdea9536ece98e90e65ff0eaff72710ff6d1df65f3c9bf6d0ea059a37a5b384", + "text": "BeginElementMap v1\n1 PostfixCount 9\nEdge\nFace\nVertex\n;:Hfd8,V\n;:Hfd8,F\n;:Hfd8,E\n;:H-fda,E\n;:H-fda,V\n;:H-fda,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#28:2.7 0\n$#29:4.7 0\n$#1d:1.7 0\n$#43:1.7 0\n$#2b:8.7 0\n$#1d:4.7.b 0\n$#43:4.7.b.1d.26 0\n$#2a:6.7 0\n$#1d:2.7.b 0\n$#43:2.7.b.1d.26 0\n$#1d:3.7.b 0\n$#43:3.7.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 13\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#38:1.5 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:4.9.b.1d 0\n$#26:2.9.b.1d 0\n$#24:1.9 0\n$#45:1.9 0\n$#26:3.9.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 $#39:3.8 0\n$#3b:2.8 0\n$#20.8 $#3c:5.8 0\n$#3d:4.8 0\n$#22.8 $#40:9.8 0\n$#41:8.8 0\n$#21.8 $#3e:7.8 0\n$#3f:6.8 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 24 4058 1 ;:Hfda,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 12 4058 1 ;:Hfda,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 16 4058 1 ;:Hfda,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad19.AddSubShape.Map.txt": { + "sha256": "90621076e953f0e68472c0dd2078745689b94b90b68c23c6b0ac54e51f4be3c0", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hfd7:7,E\n;:G0;XTR;:Hfd7:8,F\n;:U;XTR;:Hfd7:7,E\n;:U;XTR;:Hfd7:7,V\n;:Hfd7,V\n;:Hfd7,E\n;:G;XTR;:Hfd7:7,F\n;FAC;:Hfd7:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad19.Shape.Map.txt": { + "sha256": "f81f30c53014731d6c3539c9584a6066771075b021642d4adfeb57c0e56d4fb1", + "text": "BeginElementMap v1\n5 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hfd7:7,E\n;:G0;XTR;:Hfd7:8,F\n;:U;XTR;:Hfd7:7,E\n;:U;XTR;:Hfd7:7,V\n;:Hfd7,V\n;:Hfd7,E\n;:G;XTR;:Hfd7:7,F\n;FAC;:Hfd7:4,F\n\nMapCount 1\n\nElementMap 1 5 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pocket19.AddSubShape.Map.txt": { + "sha256": "a60bc8d8ffb5c4c5b74df0ead18a60c3c5bbcd8a1a41f49fcd0dc576ae35720b", + "text": "BeginElementMap v1\n7 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hfd9:7,F\n;FAC;:Hfd9:4,F\n;:G;XTR;:Hfd9:7,E\n;:G0;XTR;:Hfd9:8,F\n;:U;XTR;:Hfd9:7,E\n;:U;XTR;:Hfd9:7,V\n;:Hfd9,V\n;:Hfd9,E\n\nMapCount 1\n\nElementMap 1 7 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#1f:2.6 0\n$#20:4.6 0\n$#b:1.b 0\n$#26:1.8 0\n$#21:6.6 0\n$#b:2.b 0\n$#26:2.8.b.1d 0\n$#22:8.6 0\n$#b:3.b 0\n$#26:3.8.b.1d 0\n$#b:4.b 0\n$#26:4.8.b.1d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#1d:1.4 0\n$#1d:2.4.b 0\n$#1d:3.4.b 0\n$#1d:4.4.b 0\n$#1d:1.5 0\n$#24:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2.a $#3.a 0\n$#28:2.9 0\n$#4.a $#5.a 0\n$#29:4.9 0\n$#6.a $#7.a 0\n$#2a:6.9 0\n$#8.a $#9.a 0\n$#2b:8.9 0\n\nEndMap\n" + }, + "Pocket19.Shape.Map.txt": { + "sha256": "5bccd3c6201008d620f9ba2722ce900cd489d8a198968cd3bd815b97a0fe6d2b", + "text": "BeginElementMap v1\n2 PostfixCount 9\nEdge\nFace\nVertex\n;:Hfd8,V\n;:Hfd8,F\n;:Hfd8,E\n;:H-fda,E\n;:H-fda,V\n;:H-fda,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#28:2.7 0\n$#29:4.7 0\n$#1d:1.7 0\n$#43:1.7 0\n$#2b:8.7 0\n$#1d:4.7.b 0\n$#43:4.7.b.1d.26 0\n$#2a:6.7 0\n$#1d:2.7.b 0\n$#43:2.7.b.1d.26 0\n$#1d:3.7.b 0\n$#43:3.7.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 13\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#38:1.5 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:4.9.b.1d 0\n$#26:2.9.b.1d 0\n$#24:1.9 0\n$#45:1.9 0\n$#26:3.9.b.1d 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 $#39:3.8 0\n$#3b:2.8 0\n$#20.8 $#3c:5.8 0\n$#3d:4.8 0\n$#22.8 $#40:9.8 0\n$#41:8.8 0\n$#21.8 $#3e:7.8 0\n$#3f:6.8 0\n\nEndMap\n" + }, + "PocketSketch19.Shape.Map.txt": { + "sha256": "1ed561710b6beacd691b5c137e89026185121dd34f9665cf426096572e48efa0", + "text": "BeginElementMap v1\n6 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 6 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + }, + "Sketch19.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pocket19", + "id": "partdesign-pocket-taper", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body19.Shape.Map.txt" + ], + "elementMapSize": 52, + "elementMapVersion": "15.70200.5", + "label": "Body19", + "name": "Body19", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:Hfd8,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:1;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:Hfd8,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:4;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:Hfd7,E" + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:Hfd8,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:2;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:Hfd7,E" + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:Hfd8,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#14:1;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#38:1;:Hfd8,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#38:1;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:Hfd7:4,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:1;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 56 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:Hfd8,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:3;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:Hfd7,E" + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#26:1;:H-fda,F" + ], + "mappedName": "#26:1;:H-fda,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:Hfd9:7,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#26:1;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#26:4;:H-fda,F" + ], + "mappedName": "#26:4;:H-fda,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:Hfd9:7,F", + "#b:4;:Hfd9,E" + ], + "mappedName": "#26:4;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#26:2;:H-fda,F" + ], + "mappedName": "#26:2;:H-fda,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:Hfd9:7,F", + "#b:2;:Hfd9,E" + ], + "mappedName": "#26:2;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#24:1;:H-fda,F" + ], + "mappedName": "#24:1;:H-fda,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;FAC;:Hfd9:4,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#24:1;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "mappedName": "#24:1;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 36 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#45:1;:H-fda,F" + ], + "mappedName": "#45:1;:H-fda,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#24:1;:G0;XTR;:Hfd9:8,F", + "#1d:1;FAC;:Hfd9:4,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#45:1;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "mappedName": "#45:1;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 69 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [ + "#26:3;:H-fda,F" + ], + "mappedName": "#26:3;:H-fda,F;:Hfda,F", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:Hfd9:7,F", + "#b:3;:Hfd9,E" + ], + "mappedName": "#26:3;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#18:1;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:Hfd7,V" + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#19:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:Hfd7,V" + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:1;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:1;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:Hfd7:7,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1b:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:Hfd7,V" + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:4;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:4;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:Hfd7:7,F", + "#b:4;:Hfd7,E" + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1a:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:Hfd7,V" + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:Hfd7:7,F", + "#b:2;:Hfd7,E" + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:3;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:Hfd8,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:3;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:Hfd7:7,F", + "#b:3;:Hfd7,E" + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#28:2;:H-fda,E" + ], + "mappedName": "#28:2;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:Hfd9:7,E", + "#22;:Hfd9,V", + "#8;:Hfd9,V" + ], + "mappedName": "#28:2;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#29:4;:H-fda,E" + ], + "mappedName": "#29:4;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:Hfd9:7,E", + "#44;:Hfd9,V", + ";:G0;XTR;:Hfd9:8,F" + ], + "mappedName": "#29:4;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#1d:1;:H-fda,E" + ], + "mappedName": "#1d:1;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hfd9,E" + ], + "mappedName": "#1d:1;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#43:1;:H-fda,E" + ], + "mappedName": "#43:1;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:1;:U;XTR;:Hfd9:7,E", + "#1d:1;:G;XTR;:Hfd9:7,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#43:1;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "mappedName": "#43:1;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 67 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#2b:8;:H-fda,E" + ], + "mappedName": "#2b:8;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:Hfd9:7,E", + "#88;:Hfd9,V" + ], + "mappedName": "#2b:8;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#1d:4;:H-fda,E" + ], + "mappedName": "#1d:4;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:Hfd9,E" + ], + "mappedName": "#1d:4;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#43:4;:H-fda,E" + ], + "mappedName": "#43:4;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:4;:U;XTR;:Hfd9:7,E", + "#1d:4;:G;XTR;:Hfd9:7,F", + "#b:4;:Hfd9,E" + ], + "mappedName": "#43:4;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:4;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#2a:6;:H-fda,E" + ], + "mappedName": "#2a:6;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:Hfd9:7,E", + "#66;:Hfd9,V" + ], + "mappedName": "#2a:6;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#1d:2;:H-fda,E" + ], + "mappedName": "#1d:2;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:Hfd9,E" + ], + "mappedName": "#1d:2;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#43:2;:H-fda,E" + ], + "mappedName": "#43:2;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:2;:U;XTR;:Hfd9:7,E", + "#1d:2;:G;XTR;:Hfd9:7,F", + "#b:2;:Hfd9,E" + ], + "mappedName": "#43:2;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:2;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#1d:3;:H-fda,E" + ], + "mappedName": "#1d:3;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:Hfd9,E" + ], + "mappedName": "#1d:3;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#43:3;:H-fda,E" + ], + "mappedName": "#43:3;:H-fda,E;:Hfda,E", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:3;:U;XTR;:Hfd9:7,E", + "#1d:3;:G;XTR;:Hfd9:7,F", + "#b:3;:Hfd9,E" + ], + "mappedName": "#43:3;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:3;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#f:1;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2e:1;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:Hfd7:7,E", + "#2:1;:Hfd7,V" + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#10:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#30:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:Hfd7:7,E", + "#4:2;:Hfd7,V" + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#12:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#34:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:Hfd7:7,E", + "#8:2;:Hfd7,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#11:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:Hfd8,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#32:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:Hfd7:7,E", + "#6:2;:Hfd7,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#1f;:H-fda,V" + ], + "mappedName": "#1f;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2;:Hfd9,V" + ], + "mappedName": "#1f;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#3b:2;:H-fda,V" + ], + "mappedName": "#3b:2;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#28:2;:U;XTR;:Hfd9:7,V", + "#1f:2;:G;XTR;:Hfd9:7,E", + "#22;:Hfd9,V", + "#8;:Hfd9,V" + ], + "mappedName": "#3b:2;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:2;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#20;:H-fda,V" + ], + "mappedName": "#20;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4;:Hfd9,V" + ], + "mappedName": "#20;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#3d:4;:H-fda,V" + ], + "mappedName": "#3d:4;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#29:4;:U;XTR;:Hfd9:7,V", + "#20:4;:G;XTR;:Hfd9:7,E", + "#44;:Hfd9,V", + ";:G0;XTR;:Hfd9:8,F" + ], + "mappedName": "#3d:4;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:4;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 61 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#22;:H-fda,V" + ], + "mappedName": "#22;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8;:Hfd9,V" + ], + "mappedName": "#22;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#41:8;:H-fda,V" + ], + "mappedName": "#41:8;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2b:8;:U;XTR;:Hfd9:7,V", + "#22:8;:G;XTR;:Hfd9:7,E", + "#88;:Hfd9,V" + ], + "mappedName": "#41:8;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:8;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 65 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#21;:H-fda,V" + ], + "mappedName": "#21;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6;:Hfd9,V" + ], + "mappedName": "#21;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#3f:6;:H-fda,V" + ], + "mappedName": "#3f:6;:H-fda,V;:Hfda,V", + "object": "Body19", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2a:6;:U;XTR;:Hfd9:7,V", + "#21:6;:G;XTR;:Hfd9:7,E", + "#66;:Hfd9,V" + ], + "mappedName": "#3f:6;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:6;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 63 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 52, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 52, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:Hfd8,F;:Hfda,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body19:face:0", + "sourceRefs": [ + { + "mappedName": "#16:1;:Hfd8,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#16:1;:Hfd8,F", + "stageId": "Pocket19" + }, + { + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:1;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:Hfd8,F;:Hfda,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body19:face:1", + "sourceRefs": [ + { + "mappedName": "#16:4;:Hfd8,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#16:4;:Hfd8,F", + "stageId": "Pocket19" + }, + { + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:4;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:Hfd8,F;:Hfda,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body19:face:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:Hfd8,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#16:2;:Hfd8,F", + "stageId": "Pocket19" + }, + { + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:2;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:Hfd8,F;:Hfda,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body19:face:3", + "sourceRefs": [ + { + "mappedName": "#14:1;:Hfd8,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#14:1;:Hfd8,F", + "stageId": "Pocket19" + }, + { + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:1;FAC;:Hfd7:4,F", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "kind": "face", + "mappedName": "#38:1;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#38:1;:Hfd8,F;:Hfda,F", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body19:face:4", + "sourceRefs": [ + { + "mappedName": "#38:1;:Hfd8,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#38:1;:Hfd8,F", + "stageId": "Pocket19" + }, + { + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#14:1;:G0;XTR;:Hfd7:8,F", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:Hfd8,F;:Hfda,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:Hfd8,F;:Hfda,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body19:face:5", + "sourceRefs": [ + { + "mappedName": "#16:3;:Hfd8,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#16:3;:Hfd8,F", + "stageId": "Pocket19" + }, + { + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:3;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:H-fda,F;:Hfda,F", + "stringIds": [ + 38 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body19:face:6", + "sourceRefs": [ + { + "mappedName": "#26:1;:H-fda,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#26:1;:H-fda,F", + "stageId": "Pocket19" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:4;:H-fda,F;:Hfda,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body19:face:7", + "sourceRefs": [ + { + "mappedName": "#26:4;:H-fda,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#26:4;:H-fda,F", + "stageId": "Pocket19" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g4;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:2;:H-fda,F;:Hfda,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body19:face:8", + "sourceRefs": [ + { + "mappedName": "#26:2;:H-fda,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#26:2;:H-fda,F", + "stageId": "Pocket19" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "kind": "face", + "mappedName": "#24:1;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 36 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#24:1;:H-fda,F;:Hfda,F", + "stringIds": [ + 36 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body19:face:9", + "sourceRefs": [ + { + "mappedName": "#24:1;:H-fda,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#24:1;:H-fda,F", + "stageId": "Pocket19" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "kind": "face", + "mappedName": "#45:1;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#45:1;:H-fda,F;:Hfda,F", + "stringIds": [ + 69 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body19:face:10", + "sourceRefs": [ + { + "mappedName": "#45:1;:H-fda,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#45:1;:H-fda,F", + "stageId": "Pocket19" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:H-fda,F;:Hfda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "#26:3;:H-fda,F;:Hfda,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body19:face:11", + "sourceRefs": [ + { + "mappedName": "#26:3;:H-fda,F", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#26:3;:H-fda,F", + "stageId": "Pocket19" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:Hfd8,E;:Hfda,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body19:edge:0", + "sourceRefs": [ + { + "mappedName": "#18:1;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#18:1;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#f:1;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:Hfd8,E;:Hfda,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body19:edge:1", + "sourceRefs": [ + { + "mappedName": "#19:2;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#19:2;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#10:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:Hfd8,E;:Hfda,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body19:edge:2", + "sourceRefs": [ + { + "mappedName": "#d:1;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#d:1;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#b:1;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:1;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:Hfd8,E;:Hfda,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body19:edge:3", + "sourceRefs": [ + { + "mappedName": "#36:1;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#36:1;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:1;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:Hfd8,E;:Hfda,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body19:edge:4", + "sourceRefs": [ + { + "mappedName": "#1b:2;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1b:2;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#12:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:Hfd8,E;:Hfda,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body19:edge:5", + "sourceRefs": [ + { + "mappedName": "#d:4;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#d:4;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#b:4;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:4;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:Hfd8,E;:Hfda,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body19:edge:6", + "sourceRefs": [ + { + "mappedName": "#36:4;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#36:4;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:4;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:Hfd8,E;:Hfda,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body19:edge:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1a:2;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#11:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:Hfd8,E;:Hfda,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body19:edge:8", + "sourceRefs": [ + { + "mappedName": "#d:2;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#d:2;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#b:2;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:2;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:Hfd8,E;:Hfda,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body19:edge:9", + "sourceRefs": [ + { + "mappedName": "#36:2;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#36:2;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:2;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:Hfd8,E;:Hfda,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body19:edge:10", + "sourceRefs": [ + { + "mappedName": "#d:3;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#d:3;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#b:3;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:3;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:Hfd8,E;:Hfda,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:Hfd8,E;:Hfda,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body19:edge:11", + "sourceRefs": [ + { + "mappedName": "#36:3;:Hfd8,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#36:3;:Hfd8,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:3;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#28:2;:H-fda,E;:Hfda,E", + "stringIds": [ + 40 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body19:edge:12", + "sourceRefs": [ + { + "mappedName": "#28:2;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#28:2;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#29:4;:H-fda,E;:Hfda,E", + "stringIds": [ + 41 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body19:edge:13", + "sourceRefs": [ + { + "mappedName": "#29:4;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#29:4;:H-fda,E", + "stageId": "Pocket19" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:1;:H-fda,E;:Hfda,E", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body19:edge:14", + "sourceRefs": [ + { + "mappedName": "#1d:1;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1d:1;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "kind": "edge", + "mappedName": "#43:1;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#43:1;:H-fda,E;:Hfda,E", + "stringIds": [ + 67 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body19:edge:15", + "sourceRefs": [ + { + "mappedName": "#43:1;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#43:1;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#2b:8;:H-fda,E;:Hfda,E", + "stringIds": [ + 43 + ] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Body19:edge:16", + "sourceRefs": [ + { + "mappedName": "#2b:8;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#2b:8;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#88", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:4;:H-fda,E;:Hfda,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Body19:edge:17", + "sourceRefs": [ + { + "mappedName": "#1d:4;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1d:4;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g4;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:4;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#43:4;:H-fda,E;:Hfda,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Body19:edge:18", + "sourceRefs": [ + { + "mappedName": "#43:4;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#43:4;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g4;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:H-fda,E;:Hfda,E", + "stringIds": [ + 42 + ] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "Body19:edge:19", + "sourceRefs": [ + { + "mappedName": "#2a:6;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#2a:6;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#66", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#1d:2;:H-fda,E;:Hfda,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Body19:edge:20", + "sourceRefs": [ + { + "mappedName": "#1d:2;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1d:2;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:2;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#43:2;:H-fda,E;:Hfda,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "Body19:edge:21", + "sourceRefs": [ + { + "mappedName": "#43:2;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#43:2;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#1d:3;:H-fda,E;:Hfda,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Body19:edge:22", + "sourceRefs": [ + { + "mappedName": "#1d:3;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1d:3;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:3;:H-fda,E;:Hfda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#43:3;:H-fda,E;:Hfda,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Body19:edge:23", + "sourceRefs": [ + { + "mappedName": "#43:3;:H-fda,E", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#43:3;:H-fda,E", + "stageId": "Pocket19" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:Hfd8,V;:Hfda,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body19:vertex:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#f:1;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#2:1;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#2:1;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:Hfd8,V;:Hfda,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body19:vertex:1", + "sourceRefs": [ + { + "mappedName": "#2e:1;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#2e:1;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#18:1;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:Hfd8,V;:Hfda,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body19:vertex:2", + "sourceRefs": [ + { + "mappedName": "#10:2;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#10:2;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#4:2;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#4:2;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:Hfd8,V;:Hfda,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body19:vertex:3", + "sourceRefs": [ + { + "mappedName": "#30:2;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#30:2;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#19:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:Hfd8,V;:Hfda,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body19:vertex:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#12:2;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#8:2;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#8:2;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:Hfd8,V;:Hfda,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body19:vertex:5", + "sourceRefs": [ + { + "mappedName": "#34:2;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#34:2;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#1b:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:Hfd8,V;:Hfda,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body19:vertex:6", + "sourceRefs": [ + { + "mappedName": "#11:2;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#11:2;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#6:2;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#6:2;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:Hfd8,V;:Hfda,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:Hfd8,V;:Hfda,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body19:vertex:7", + "sourceRefs": [ + { + "mappedName": "#32:2;:Hfd8,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#32:2;:Hfd8,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#1a:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:H-fda,V;:Hfda,V", + "stringIds": [ + 31 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body19:vertex:8", + "sourceRefs": [ + { + "mappedName": "#1f;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#1f;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1v1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:2;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#3b:2;:H-fda,V;:Hfda,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body19:vertex:9", + "sourceRefs": [ + { + "mappedName": "#3b:2;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#3b:2;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#20;:H-fda,V;:Hfda,V", + "stringIds": [ + 32 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body19:vertex:10", + "sourceRefs": [ + { + "mappedName": "#20;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#20;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "kind": "vertex", + "mappedName": "#3d:4;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#3d:4;:H-fda,V;:Hfda,V", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body19:vertex:11", + "sourceRefs": [ + { + "mappedName": "#3d:4;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#3d:4;:H-fda,V", + "stageId": "Pocket19" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#22;:H-fda,V;:Hfda,V", + "stringIds": [ + 34 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body19:vertex:12", + "sourceRefs": [ + { + "mappedName": "#22;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#22;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "kind": "vertex", + "mappedName": "#41:8;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#41:8;:H-fda,V;:Hfda,V", + "stringIds": [ + 65 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body19:vertex:13", + "sourceRefs": [ + { + "mappedName": "#41:8;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#41:8;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#88", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:H-fda,V;:Hfda,V", + "stringIds": [ + 33 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body19:vertex:14", + "sourceRefs": [ + { + "mappedName": "#21;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#21;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "kind": "vertex", + "mappedName": "#3f:6;:H-fda,V;:Hfda,V", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3f:6;:H-fda,V;:Hfda,V", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body19:vertex:15", + "sourceRefs": [ + { + "mappedName": "#3f:6;:H-fda,V", + "objectId": "Pocket19", + "persistentId": "Pocket19:mapped:#3f:6;:H-fda,V", + "stageId": "Pocket19" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#66", + "stageId": "PocketSketch19" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body19", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body19", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 12, + "solids": 1, + "valid": true, + "volume": 192.32 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch19.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch19", + "name": "Sketch19", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch19:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch19:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch19:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch19:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch19:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch19:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch19:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch19:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch19", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch19", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad19.AddSubShape.Map.txt", + "Pad19.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad19", + "name": "Pad19", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hfd7,E" + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hfd7,E" + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hfd7,E" + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:Hfd7:4,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:Hfd7,V" + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:Hfd7,V" + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:Hfd7:7,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:Hfd7,V" + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:Hfd7:7,F", + "#b:2;:Hfd7,E" + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:Hfd7,V" + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:Hfd7:7,F", + "#b:3;:Hfd7,E" + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:Hfd7:7,F", + "#b:4;:Hfd7,E" + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hfd7,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:Hfd7:7,E", + "#2:1;:Hfd7,V" + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hfd7,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:Hfd7:7,E", + "#4:2;:Hfd7,V" + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hfd7,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:Hfd7:7,E", + "#6:2;:Hfd7,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hfd7,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:Hfd7:7,E", + "#8:2;:Hfd7,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad19:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad19:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad19:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Hfd7:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad19:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Hfd7:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad19:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Hfd7:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad19:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad19:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad19:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad19:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad19:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad19:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad19:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad19:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Hfd7:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad19:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad19:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad19:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hfd7,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hfd7,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad19:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Hfd7:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad19:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hfd7,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hfd7,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad19:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad19:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hfd7,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Hfd7,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad19:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad19:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hfd7,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hfd7,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad19:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad19:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hfd7,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hfd7,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad19:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Hfd7:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad19:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad19", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad19", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 199.99999999999994 + }, + "typeId": "PartDesign::Pad" + }, + { + "elementMap2ResourcePaths": [ + "PocketSketch19.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "PocketSketch19", + "name": "PocketSketch19", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch19:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch19:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch19:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch19:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch19:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch19:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch19:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch19:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "PocketSketch19", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "PocketSketch19", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pocket19.AddSubShape.Map.txt", + "Pocket19.Shape.Map.txt" + ], + "elementMapSize": 60, + "elementMapVersion": "15.70200.5", + "label": "Pocket19", + "name": "Pocket19", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:Hfd8,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:Hfd7,E" + ], + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:Hfd8,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:Hfd7,E" + ], + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:Hfd8,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hfd7,E" + ], + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:Hfd8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#38:1;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:Hfd7:4,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:1;:Hfd8,F", + "mappedStringIds": [ + 56 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:Hfd8,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:Hfd7,E" + ], + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:Hfd8,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:Hfd9:7,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#26:1;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:H-fda,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:Hfd9:7,F", + "#b:4;:Hfd9,E" + ], + "mappedName": "#26:4;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:H-fda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:Hfd9:7,F", + "#b:2;:Hfd9,E" + ], + "mappedName": "#26:2;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:H-fda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#1d:1;FAC;:Hfd9:4,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#24:1;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "mappedName": "#24:1;:H-fda,F", + "mappedStringIds": [ + 36 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#24:1;:G0;XTR;:Hfd9:8,F", + "#1d:1;FAC;:Hfd9:4,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#45:1;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "mappedName": "#45:1;:H-fda,F", + "mappedStringIds": [ + 69 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:Hfd9:7,F", + "#b:3;:Hfd9,E" + ], + "mappedName": "#26:3;:H-fda,F", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:H-fda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:Hfd7,V" + ], + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:Hfd8,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:Hfd7,V" + ], + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:Hfd8,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:Hfd8,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:Hfd7:7,F", + "#b:1;:Hfd7,E" + ], + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:Hfd8,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:Hfd7,V" + ], + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:Hfd8,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:Hfd8,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:Hfd7:7,F", + "#b:4;:Hfd7,E" + ], + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:Hfd7,V" + ], + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:Hfd8,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:Hfd8,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:Hfd7:7,F", + "#b:2;:Hfd7,E" + ], + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:Hfd7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:Hfd8,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:Hfd8,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:Hfd7:7,F", + "#b:3;:Hfd7,E" + ], + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:Hfd9:7,E", + "#22;:Hfd9,V", + "#8;:Hfd9,V" + ], + "mappedName": "#28:2;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:H-fda,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:Hfd9:7,E", + "#44;:Hfd9,V", + ";:G0;XTR;:Hfd9:8,F" + ], + "mappedName": "#29:4;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:H-fda,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hfd9,E" + ], + "mappedName": "#1d:1;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:H-fda,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#26:1;:U;XTR;:Hfd9:7,E", + "#1d:1;:G;XTR;:Hfd9:7,F", + "#b:1;:Hfd9,E" + ], + "mappedName": "#43:1;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "mappedName": "#43:1;:H-fda,E", + "mappedStringIds": [ + 67 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:Hfd9:7,E", + "#88;:Hfd9,V" + ], + "mappedName": "#2b:8;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:H-fda,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hfd9,E" + ], + "mappedName": "#1d:4;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:H-fda,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#26:4;:U;XTR;:Hfd9:7,E", + "#1d:4;:G;XTR;:Hfd9:7,F", + "#b:4;:Hfd9,E" + ], + "mappedName": "#43:4;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:4;:H-fda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:Hfd9:7,E", + "#66;:Hfd9,V" + ], + "mappedName": "#2a:6;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:H-fda,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hfd9,E" + ], + "mappedName": "#1d:2;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:H-fda,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#26:2;:U;XTR;:Hfd9:7,E", + "#1d:2;:G;XTR;:Hfd9:7,F", + "#b:2;:Hfd9,E" + ], + "mappedName": "#43:2;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:2;:H-fda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hfd9,E" + ], + "mappedName": "#1d:3;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:H-fda,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#26:3;:U;XTR;:Hfd9:7,E", + "#1d:3;:G;XTR;:Hfd9:7,F", + "#b:3;:Hfd9,E" + ], + "mappedName": "#43:3;:H-fda,E", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "mappedName": "#43:3;:H-fda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:Hfd8,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:Hfd7:7,E", + "#2:1;:Hfd7,V" + ], + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:Hfd8,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:Hfd8,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:Hfd7:7,E", + "#4:2;:Hfd7,V" + ], + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:Hfd8,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:Hfd8,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:Hfd7:7,E", + "#8:2;:Hfd7,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:Hfd8,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:Hfd7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:Hfd8,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:Hfd8,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:Hfd7:7,E", + "#6:2;:Hfd7,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "object": "Pad19", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:Hfd8,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#2;:Hfd9,V" + ], + "mappedName": "#1f;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:H-fda,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#28:2;:U;XTR;:Hfd9:7,V", + "#1f:2;:G;XTR;:Hfd9:7,E", + "#22;:Hfd9,V", + "#8;:Hfd9,V" + ], + "mappedName": "#3b:2;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:2;:H-fda,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#4;:Hfd9,V" + ], + "mappedName": "#20;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:H-fda,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#29:4;:U;XTR;:Hfd9:7,V", + "#20:4;:G;XTR;:Hfd9:7,E", + "#44;:Hfd9,V", + ";:G0;XTR;:Hfd9:8,F" + ], + "mappedName": "#3d:4;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:4;:H-fda,V", + "mappedStringIds": [ + 61 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#8;:Hfd9,V" + ], + "mappedName": "#22;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:H-fda,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#2b:8;:U;XTR;:Hfd9:7,V", + "#22:8;:G;XTR;:Hfd9:7,E", + "#88;:Hfd9,V" + ], + "mappedName": "#41:8;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:8;:H-fda,V", + "mappedStringIds": [ + 65 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#6;:Hfd9,V" + ], + "mappedName": "#21;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:H-fda,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#2a:6;:U;XTR;:Hfd9:7,V", + "#21:6;:G;XTR;:Hfd9:7,E", + "#66;:Hfd9,V" + ], + "mappedName": "#3f:6;:H-fda,V", + "object": "Pocket19", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch19", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:6;:H-fda,V", + "mappedStringIds": [ + 63 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 52, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 52, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:Hfd8,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:Hfd8,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket19:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:1;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:Hfd8,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:Hfd8,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket19:face:1", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:4;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:Hfd8,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:Hfd8,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket19:face:2", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:2;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:Hfd8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:Hfd8,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket19:face:3", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:Hfd7:4,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:1;FAC;:Hfd7:4,F", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 56 + ], + "kind": "face", + "mappedName": "#38:1;:Hfd8,F", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#38:1;:Hfd8,F", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket19:face:4", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:Hfd7:8,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#14:1;:G0;XTR;:Hfd7:8,F", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:Hfd8,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:Hfd8,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket19:face:5", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:Hfd7:7,F", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#d:3;:G;XTR;:Hfd7:7,F", + "stageId": "Pad19" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:H-fda,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:H-fda,F", + "stringIds": [ + 38 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket19:face:6", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:H-fda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:4;:H-fda,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket19:face:7", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g4;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:H-fda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:2;:H-fda,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket19:face:8", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 36 + ], + "kind": "face", + "mappedName": "#24:1;:H-fda,F", + "mappedStringIds": [ + 36 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#24:1;:H-fda,F", + "stringIds": [ + 36 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket19:face:9", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 69 + ], + "kind": "face", + "mappedName": "#45:1;:H-fda,F", + "mappedStringIds": [ + 69 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#45:1;:H-fda,F", + "stringIds": [ + 69 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket19:face:10", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:H-fda,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "#26:3;:H-fda,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket19:face:11", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:Hfd8,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:Hfd8,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket19:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#f:1;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:Hfd8,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:Hfd8,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket19:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#10:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:Hfd8,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:Hfd8,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket19:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:1;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:Hfd8,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:Hfd8,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket19:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:1;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:Hfd8,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:Hfd8,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket19:edge:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#12:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:Hfd8,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:Hfd8,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket19:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:4;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:4;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:Hfd8,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket19:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:4;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g4;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:Hfd8,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:Hfd8,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket19:edge:7", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#11:2;:G;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:Hfd8,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:Hfd8,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket19:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:2;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:2;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:Hfd8,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket19:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:2;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:Hfd8,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:Hfd8,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket19:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:3;:Hfd7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#b:3;:Hfd7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:Hfd8,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:Hfd8,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket19:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:Hfd7:7,E", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#16:3;:U;XTR;:Hfd7:7,E", + "stageId": "Pad19" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:H-fda,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#28:2;:H-fda,E", + "stringIds": [ + 40 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket19:edge:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:H-fda,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#29:4;:H-fda,E", + "stringIds": [ + 41 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket19:edge:13", + "sourceRefs": [] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:H-fda,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:1;:H-fda,E", + "stringIds": [ + 29 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket19:edge:14", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 67 + ], + "kind": "edge", + "mappedName": "#43:1;:H-fda,E", + "mappedStringIds": [ + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#43:1;:H-fda,E", + "stringIds": [ + 67 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket19:edge:15", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:H-fda,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#2b:8;:H-fda,E", + "stringIds": [ + 43 + ] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Pocket19:edge:16", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#88", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:H-fda,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#1d:4;:H-fda,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Pocket19:edge:17", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g4;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:4;:H-fda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#43:4;:H-fda,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Pocket19:edge:18", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g4;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:H-fda,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:H-fda,E", + "stringIds": [ + 42 + ] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "Pocket19:edge:19", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#66", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:H-fda,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#1d:2;:H-fda,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Pocket19:edge:20", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:2;:H-fda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#43:2;:H-fda,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "Pocket19:edge:21", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:H-fda,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#1d:3;:H-fda,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Pocket19:edge:22", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 67 + ], + "kind": "edge", + "mappedName": "#43:3;:H-fda,E", + "mappedStringIds": [ + 11, + 29, + 38, + 67 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#43:3;:H-fda,E", + "stringIds": [ + 11, + 29, + 38, + 67 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Pocket19:edge:23", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:Hfd8,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:Hfd8,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket19:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#2:1;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:Hfd8,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:Hfd8,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket19:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#18:1;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v11;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:Hfd8,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:Hfd8,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket19:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#4:2;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:Hfd8,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:Hfd8,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket19:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#19:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g1v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:Hfd8,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:Hfd8,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket19:vertex:4", + "sourceRefs": [ + { + "mappedName": "#8:2;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#8:2;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:Hfd8,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:Hfd8,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket19:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#1b:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g3v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:Hfd8,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:Hfd8,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket19:vertex:6", + "sourceRefs": [ + { + "mappedName": "#6:2;:Hfd7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#6:2;:Hfd7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:Hfd8,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:Hfd8,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket19:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:Hfd7:7,V", + "objectId": "Pad19", + "persistentId": "Pad19:mapped:#1a:2;:U;XTR;:Hfd7:7,V", + "stageId": "Pad19" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch19", + "persistentId": "Sketch19:mapped:g2v22;SKT", + "stageId": "Sketch19" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:H-fda,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:H-fda,V", + "stringIds": [ + 31 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket19:vertex:8", + "sourceRefs": [ + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1v1;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:2;:H-fda,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#3b:2;:H-fda,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket19:vertex:9", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:H-fda,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#20;:H-fda,V", + "stringIds": [ + 32 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket19:vertex:10", + "sourceRefs": [ + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g1v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 61 + ], + "kind": "vertex", + "mappedName": "#3d:4;:H-fda,V", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#3d:4;:H-fda,V", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket19:vertex:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:H-fda,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#22;:H-fda,V", + "stringIds": [ + 34 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket19:vertex:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g3v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 65 + ], + "kind": "vertex", + "mappedName": "#41:8;:H-fda,V", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#41:8;:H-fda,V", + "stringIds": [ + 65 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket19:vertex:13", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#88", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:H-fda,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#21;:H-fda,V", + "stringIds": [ + 33 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket19:vertex:14", + "sourceRefs": [ + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:g2v2;SKT", + "stageId": "PocketSketch19" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 63 + ], + "kind": "vertex", + "mappedName": "#3f:6;:H-fda,V", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3f:6;:H-fda,V", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket19:vertex:15", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch19", + "persistentId": "PocketSketch19:mapped:#66", + "stageId": "PocketSketch19" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pocket19", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pocket19", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 12, + "solids": 1, + "valid": true, + "volume": 192.32 + }, + "typeId": "PartDesign::Pocket" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "cd1a8e3182f93a86a13f92dc8da7d405a202542cc14a060740f1f18b1302d603", + "text": "StringTableStart v1 69\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:Hfd7,E\n-1.4c.1.2\n-1.0 0:;:Hfd7,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:Hfd7:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hfd7:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hfd7:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:Hfd9,E\n-1.4c.1.12\n-1.0 0:;:Hfd9,V\n-1.2c.1.1d\n-1.2c.0.2\n-1.2c.0.2\n-1.2c.0.2\n-1.0 0:;FAC;:Hfd9:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hfd9:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hfd9:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.-19.-1f\n-1.0 0:;:U;XTR;:Hfd7:7,V\n-1.4c.1.16\n-1.4c.-1f.-13\n-1.4c.1f.14\n-1.4c.-1f.-12\n-1.4c.1f.13\n-1.4c.-1f.-11\n-1.4c.1f.12\n-1.0 0:;:U;XTR;:Hfd7:7,E\n-1.4c.1.20\n-1.0 0:;:G0;XTR;:Hfd7:8,F\n-1.4c.1.24\n-1.2c.-19.-11\n-1.0 0:;:U;XTR;:Hfd9:7,V\n-1.4c.1.13\n-1.2c.-1c.-23\n-1.4c.1c.24\n-1.2c.-1c.-22\n-1.4c.1c.23\n-1.2c.-1c.-21\n-1.4c.1c.22\n-1.0 0:;:U;XTR;:Hfd9:7,E\n-1.4c.1.1d\n-1.0 0:;:G0;XTR;:Hfd9:8,F\n-1.4c.1.21\n" + } + }, + { + "elementMapResources": { + "Body20.Shape.Map.txt": { + "sha256": "3e62d8916123a091cfd04785ce562e0bbe2d2a6f57373ce5a38e0cc273675b94", + "text": "BeginElementMap v1\n1 PostfixCount 13\nEdge\nFace\nVertex\n;:Hae4,V\n;:Hae4,F\n;:Hae4,E\n;:M;CUT;:H-ae6:7,E\n;:M;CUT;:H-ae6:7,V\n;:M;CUT;:H-ae6:7,F\n;:H-ae6,V\n;:H-ae6,E\n;:H-ae6,F\n;:M;CUT;:Hae4:7,F\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#1d:1.7 0\n$#1d:2.7.b 0\n$#1d:3.7.b 0\n$#1d:4.7.b 0\n$#28:2.7 0\n$#29:4.7 0\n$#3d:1.b 0\n$#2a:6.7 0\n$#3d:2.b.b.1d.26 0\n$#2b:8.7 0\n$#3d:3.b.b.1d.26 0\n$#3d:4.b.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 12\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#41:1.d 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:2.9.b.1d 0\n$#26:3.9.b.1d 0\n$#26:4.9.b.1d 0\n$#3f:1.c 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 0\n$#20.8 0\n$#21.8 0\n$#22.8 0\n$#38:2.a 0\n$#39:4.a 0\n$#3a:6.a 0\n$#3b:8.a 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 24 2790 1 ;:Hae6,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 11 2790 1 ;:Hae6,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 16 2790 1 ;:Hae6,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Pad20.AddSubShape.Map.txt": { + "sha256": "de6a01bc9dbe0d7909d8f794d7abbc06b15b0d6ed8440eafedb575d23e1bf84f", + "text": "BeginElementMap v1\n4 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hae3:7,E\n;:G0;XTR;:Hae3:8,F\n;:U;XTR;:Hae3:7,E\n;:U;XTR;:Hae3:7,V\n;:Hae3,V\n;:Hae3,E\n;:G;XTR;:Hae3:7,F\n;FAC;:Hae3:4,F\n\nMapCount 1\n\nElementMap 1 4 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pad20.Shape.Map.txt": { + "sha256": "a9265f7e61479b5b723d5e1178775e30b3bc8b7d53f685833e777a87f3120b80", + "text": "BeginElementMap v1\n5 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hae3:7,E\n;:G0;XTR;:Hae3:8,F\n;:U;XTR;:Hae3:7,E\n;:U;XTR;:Hae3:7,V\n;:Hae3,V\n;:Hae3,E\n;:G;XTR;:Hae3:7,F\n;FAC;:Hae3:4,F\n\nMapCount 1\n\nElementMap 1 5 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#f:1.4 0\n$#10:2.4 0\n$#b:1.9 0\n$#16:1.6 0\n$#11:2.4 0\n$#b:2.9 0\n$#16:2.6.b.d 0\n$#12:2.4 0\n$#b:3.9 0\n$#16:3.6.b.d 0\n$#b:4.9 0\n$#16:4.6.b.d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#d:1.a 0\n$#d:2.a.b 0\n$#d:3.a.b 0\n$#d:4.a.b 0\n$#d:1.b 0\n$#14:1.5 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2:1.8 $#3:2.8 0\n$#18:1.7 0\n$#4:2.8 $#5:1.8 0\n$#19:2.7 0\n$#6:2.8 $#7:1.8 0\n$#1a:2.7 0\n$#8:2.8 $#9:1.8 0\n$#1b:2.7 0\n\nEndMap\n" + }, + "Pocket20.AddSubShape.Map.txt": { + "sha256": "f428ff539e27915a2c1f8fb3b1b868832a3eae467f7978574c5bbb03be2e92b0", + "text": "BeginElementMap v1\n7 PostfixCount 11\nEdge\nFace\nVertex\n;:G;XTR;:Hae5:7,F\n;FAC;:Hae5:4,F\n;:G;XTR;:Hae5:7,E\n;:G0;XTR;:Hae5:8,F\n;:U;XTR;:Hae5:7,E\n;:U;XTR;:Hae5:7,V\n;:Hae5,V\n;:Hae5,E\n\nMapCount 1\n\nElementMap 1 7 3\n\nEdge\n\nChildCount 0\n\nNameCount 13\n0\n$#1f:2.6 0\n$#20:4.6 0\n$#b:1.b 0\n$#26:1.8 0\n$#21:6.6 0\n$#b:2.b 0\n$#26:2.8.b.1d 0\n$#22:8.6 0\n$#b:3.b 0\n$#26:3.8.b.1d 0\n$#b:4.b 0\n$#26:4.8.b.1d 0\n\nFace\n\nChildCount 0\n\nNameCount 7\n0\n$#1d:1.4 0\n$#1d:2.4.b 0\n$#1d:3.4.b 0\n$#1d:4.4.b 0\n$#1d:1.5 0\n$#24:1.7 0\n\nVertex\n\nChildCount 0\n\nNameCount 9\n0\n$#2.a $#3.a 0\n$#28:2.9 0\n$#4.a $#5.a 0\n$#29:4.9 0\n$#6.a $#7.a 0\n$#2a:6.9 0\n$#8.a $#9.a 0\n$#2b:8.9 0\n\nEndMap\n" + }, + "Pocket20.Shape.Map.txt": { + "sha256": "6481f69f42403bcbf01b3af2fb250d765fb4fe5bdca8f50eaba82de757c6038a", + "text": "BeginElementMap v1\n2 PostfixCount 13\nEdge\nFace\nVertex\n;:Hae4,V\n;:Hae4,F\n;:Hae4,E\n;:M;CUT;:H-ae6:7,E\n;:M;CUT;:H-ae6:7,V\n;:M;CUT;:H-ae6:7,F\n;:H-ae6,V\n;:H-ae6,E\n;:H-ae6,F\n;:M;CUT;:Hae4:7,F\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 25\n0\n$#18:1.6 0\n$#19:2.6 0\n$#d:1.6 0\n$#36:1.6 0\n$#1b:2.6 0\n$#d:4.6.b 0\n$#36:4.6.b.d.16 0\n$#1a:2.6 0\n$#d:2.6.b 0\n$#36:2.6.b.d.16 0\n$#d:3.6.b 0\n$#36:3.6.b.d.16 0\n$#1d:1.7 0\n$#1d:2.7.b 0\n$#1d:3.7.b 0\n$#1d:4.7.b 0\n$#28:2.7 0\n$#29:4.7 0\n$#3d:1.b 0\n$#2a:6.7 0\n$#3d:2.b.b.1d.26 0\n$#2b:8.7 0\n$#3d:3.b.b.1d.26 0\n$#3d:4.b.b.1d.26 0\n\nFace\n\nChildCount 0\n\nNameCount 12\n0\n$#16:1.5 0\n$#16:4.5.b.d 0\n$#16:2.5.b.d 0\n$#14:1.5 0\n$#41:1.d 0\n$#16:3.5.b.d 0\n$#26:1.9 0\n$#26:2.9.b.1d 0\n$#26:3.9.b.1d 0\n$#26:4.9.b.1d 0\n$#3f:1.c 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n$#f:1.4 $#2c:2.4 0\n$#2e:1.4 0\n$#10:2.4 $#2f:1.4 0\n$#30:2.4 0\n$#12:2.4 $#33:1.4 0\n$#34:2.4 0\n$#11:2.4 $#31:1.4 0\n$#32:2.4 0\n$#1f.8 0\n$#20.8 0\n$#21.8 0\n$#22.8 0\n$#38:2.a 0\n$#39:4.a 0\n$#3a:6.a 0\n$#3b:8.a 0\n\nEndMap\n" + }, + "PocketSketch20.Shape.Map.txt": { + "sha256": "1ed561710b6beacd691b5c137e89026185121dd34f9665cf426096572e48efa0", + "text": "BeginElementMap v1\n6 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 6 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + }, + "Sketch20.Shape.Map.txt": { + "sha256": "3122a2e70dafbd5617afe7851c9a3864672cd03df3cc15e737748f470219b4a7", + "text": "BeginElementMap v1\n3 PostfixCount 3\nEdge\nVertex\n;SKT\n\nMapCount 1\n\nElementMap 1 3 2\n\nEdge\n\nChildCount 0\n\nNameCount 5\n0\n;g1.3 0\n;g2.3 0\n;g3.3 0\n;g4.3 0\n\nVertex\n\nChildCount 0\n\nNameCount 5\n0\n;g1v1.3 ;g4v2.3 0\n;g1v2.3 ;g2v1.3 0\n;g2v2.3 ;g3v1.3 0\n;g3v2.3 ;g4v1.3 0\n\nEndMap\n" + } + }, + "finalObject": "Pocket20", + "id": "partdesign-pocket-up-to-face", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "Body20.Shape.Map.txt" + ], + "elementMapSize": 51, + "elementMapVersion": "15.70200.5", + "label": "Body20", + "name": "Body20", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:Hae4,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:1;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hae3,E" + ], + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:Hae4,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:4;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:Hae3,E" + ], + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:Hae4,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:2;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:Hae3,E" + ], + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:Hae4,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#14:1;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hae3,E" + ], + "mappedName": "#d:1;FAC;:Hae3:4,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#41:1;:M;CUT;:Hae4:7,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#41:1;:M;CUT;:Hae4:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:Hae3:4,F", + "#b:1;:Hae3,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:1;:M;CUT;:Hae4:7,F;:Hae6,F", + "mappedStringIds": [ + 65 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:Hae4,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#16:3;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:Hae3,E" + ], + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#26:1;:M;CUT;:H-ae6:7,F" + ], + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:1;:G;XTR;:Hae5:7,F", + "#b:1;:Hae5,E" + ], + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#26:2;:M;CUT;:H-ae6:7,F" + ], + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:2;:G;XTR;:Hae5:7,F", + "#b:2;:Hae5,E" + ], + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#26:3;:M;CUT;:H-ae6:7,F" + ], + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:3;:G;XTR;:Hae5:7,F", + "#b:3;:Hae5,E" + ], + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#26:4;:M;CUT;:H-ae6:7,F" + ], + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1d:4;:G;XTR;:Hae5:7,F", + "#b:4;:Hae5,E" + ], + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#3f:1;:H-ae6,F" + ], + "mappedName": "#3f:1;:H-ae6,F;:Hae6,F", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#24:1;:G0;XTR;:Hae5:8,F", + "#1d:1;FAC;:Hae5:4,F", + "#b:1;:Hae5,E" + ], + "mappedName": "#3f:1;:H-ae6,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:1;:H-ae6,F;:Hae6,F", + "mappedStringIds": [ + 63 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#18:1;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:Hae3,V" + ], + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#19:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:Hae3,V" + ], + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:1;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:1;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:Hae3:7,F", + "#b:1;:Hae3,E" + ], + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1b:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:Hae3,V" + ], + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:4;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:4;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:Hae3:7,F", + "#b:4;:Hae3,E" + ], + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#1a:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:Hae3,V" + ], + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:Hae3:7,F", + "#b:2;:Hae3,E" + ], + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#d:3;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:Hae4,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#36:3;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:Hae3:7,F", + "#b:3;:Hae3,E" + ], + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#1d:1;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:1;:Hae5,E" + ], + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#1d:2;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:2;:Hae5,E" + ], + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#1d:3;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:3;:Hae5,E" + ], + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#1d:4;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#b:4;:Hae5,E" + ], + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#28:2;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#1f:2;:G;XTR;:Hae5:7,E", + "#22;:Hae5,V", + "#8;:Hae5,V" + ], + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#29:4;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#20:4;:G;XTR;:Hae5:7,E", + "#44;:Hae5,V" + ], + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#3d:1;:H-ae6,E" + ], + "mappedName": "#3d:1;:H-ae6,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:1;:U;XTR;:Hae5:7,E", + "#1d:1;:G;XTR;:Hae5:7,F", + "#b:1;:Hae5,E" + ], + "mappedName": "#3d:1;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:1;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 61 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#2a:6;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#21:6;:G;XTR;:Hae5:7,E", + "#66;:Hae5,V" + ], + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#3d:2;:H-ae6,E" + ], + "mappedName": "#3d:2;:H-ae6,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:2;:U;XTR;:Hae5:7,E", + "#1d:2;:G;XTR;:Hae5:7,F", + "#b:2;:Hae5,E" + ], + "mappedName": "#3d:2;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:2;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#2b:8;:M;CUT;:H-ae6:7,E" + ], + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#22:8;:G;XTR;:Hae5:7,E", + "#88;:Hae5,V" + ], + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#3d:3;:H-ae6,E" + ], + "mappedName": "#3d:3;:H-ae6,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:3;:U;XTR;:Hae5:7,E", + "#1d:3;:G;XTR;:Hae5:7,F", + "#b:3;:Hae5,E" + ], + "mappedName": "#3d:3;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:3;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#3d:4;:H-ae6,E" + ], + "mappedName": "#3d:4;:H-ae6,E;:Hae6,E", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#26:4;:U;XTR;:Hae5:7,E", + "#1d:4;:G;XTR;:Hae5:7,F", + "#b:4;:Hae5,E" + ], + "mappedName": "#3d:4;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:4;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#f:1;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#2e:1;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:Hae3:7,E", + "#2:1;:Hae3,V" + ], + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#10:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#30:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:Hae3:7,E", + "#4:2;:Hae3,V" + ], + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#12:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#34:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:Hae3:7,E", + "#8:2;:Hae3,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#11:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:Hae4,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "#32:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:Hae3:7,E", + "#6:2;:Hae3,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#1f;:M;CUT;:H-ae6:7,V" + ], + "mappedName": "#1f;:M;CUT;:H-ae6:7,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2;:Hae5,V" + ], + "mappedName": "#1f;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#20;:M;CUT;:H-ae6:7,V" + ], + "mappedName": "#20;:M;CUT;:H-ae6:7,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#4;:Hae5,V" + ], + "mappedName": "#20;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#21;:M;CUT;:H-ae6:7,V" + ], + "mappedName": "#21;:M;CUT;:H-ae6:7,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#6;:Hae5,V" + ], + "mappedName": "#21;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#22;:M;CUT;:H-ae6:7,V" + ], + "mappedName": "#22;:M;CUT;:H-ae6:7,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#8;:Hae5,V" + ], + "mappedName": "#22;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#38:2;:H-ae6,V" + ], + "mappedName": "#38:2;:H-ae6,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#28:2;:U;XTR;:Hae5:7,V", + "#1f:2;:G;XTR;:Hae5:7,E", + "#22;:Hae5,V", + "#8;:Hae5,V" + ], + "mappedName": "#38:2;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:2;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 56 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#39:4;:H-ae6,V" + ], + "mappedName": "#39:4;:H-ae6,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#29:4;:U;XTR;:Hae5:7,V", + "#20:4;:G;XTR;:Hae5:7,E", + "#44;:Hae5,V" + ], + "mappedName": "#39:4;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 57 + ], + "mappedName": "#39:4;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 57 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#3a:6;:H-ae6,V" + ], + "mappedName": "#3a:6;:H-ae6,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2a:6;:U;XTR;:Hae5:7,V", + "#21:6;:G;XTR;:Hae5:7,E", + "#66;:Hae5,V" + ], + "mappedName": "#3a:6;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "mappedName": "#3a:6;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 58 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#3b:8;:H-ae6,V" + ], + "mappedName": "#3b:8;:H-ae6,V;:Hae6,V", + "object": "Body20", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "#2b:8;:U;XTR;:Hae5:7,V", + "#22:8;:G;XTR;:Hae5:7,E", + "#88;:Hae5,V" + ], + "mappedName": "#3b:8;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:8;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 51, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 51, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:Hae4,F;:Hae6,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body20:face:0", + "sourceRefs": [ + { + "mappedName": "#16:1;:Hae4,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#16:1;:Hae4,F", + "stageId": "Pocket20" + }, + { + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:1;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:Hae4,F;:Hae6,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body20:face:1", + "sourceRefs": [ + { + "mappedName": "#16:4;:Hae4,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#16:4;:Hae4,F", + "stageId": "Pocket20" + }, + { + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:4;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:Hae4,F;:Hae6,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body20:face:2", + "sourceRefs": [ + { + "mappedName": "#16:2;:Hae4,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#16:2;:Hae4,F", + "stageId": "Pocket20" + }, + { + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:2;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:Hae4,F;:Hae6,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body20:face:3", + "sourceRefs": [ + { + "mappedName": "#14:1;:Hae4,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#14:1;:Hae4,F", + "stageId": "Pocket20" + }, + { + "mappedName": "#d:1;FAC;:Hae3:4,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:1;FAC;:Hae3:4,F", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 65 + ], + "kind": "face", + "mappedName": "#41:1;:M;CUT;:Hae4:7,F;:Hae6,F", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#41:1;:M;CUT;:Hae4:7,F;:Hae6,F", + "stringIds": [ + 65 + ] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Body20:face:4", + "sourceRefs": [ + { + "mappedName": "#41:1;:M;CUT;:Hae4:7,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#41:1;:M;CUT;:Hae4:7,F", + "stageId": "Pocket20" + }, + { + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#14:1;:G0;XTR;:Hae3:8,F", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:Hae4,F;:Hae6,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:Hae4,F;:Hae6,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body20:face:5", + "sourceRefs": [ + { + "mappedName": "#16:3;:Hae4,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#16:3;:Hae4,F", + "stageId": "Pocket20" + }, + { + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:3;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:M;CUT;:H-ae6:7,F;:Hae6,F", + "stringIds": [ + 38 + ] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Body20:face:6", + "sourceRefs": [ + { + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#26:1;:M;CUT;:H-ae6:7,F", + "stageId": "Pocket20" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:2;:M;CUT;:H-ae6:7,F;:Hae6,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Body20:face:7", + "sourceRefs": [ + { + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#26:2;:M;CUT;:H-ae6:7,F", + "stageId": "Pocket20" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:3;:M;CUT;:H-ae6:7,F;:Hae6,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Body20:face:8", + "sourceRefs": [ + { + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#26:3;:M;CUT;:H-ae6:7,F", + "stageId": "Pocket20" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F;:Hae6,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#26:4;:M;CUT;:H-ae6:7,F;:Hae6,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Body20:face:9", + "sourceRefs": [ + { + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#26:4;:M;CUT;:H-ae6:7,F", + "stageId": "Pocket20" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g4;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "kind": "face", + "mappedName": "#3f:1;:H-ae6,F;:Hae6,F", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#3f:1;:H-ae6,F;:Hae6,F", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body20:face:10", + "sourceRefs": [ + { + "mappedName": "#3f:1;:H-ae6,F", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3f:1;:H-ae6,F", + "stageId": "Pocket20" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:Hae4,E;:Hae6,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body20:edge:0", + "sourceRefs": [ + { + "mappedName": "#18:1;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#18:1;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#f:1;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:Hae4,E;:Hae6,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body20:edge:1", + "sourceRefs": [ + { + "mappedName": "#19:2;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#19:2;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#10:2;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:Hae4,E;:Hae6,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body20:edge:2", + "sourceRefs": [ + { + "mappedName": "#d:1;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#d:1;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#b:1;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:1;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:Hae4,E;:Hae6,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body20:edge:3", + "sourceRefs": [ + { + "mappedName": "#36:1;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#36:1;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:1;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:Hae4,E;:Hae6,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body20:edge:4", + "sourceRefs": [ + { + "mappedName": "#1b:2;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1b:2;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#12:2;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:Hae4,E;:Hae6,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body20:edge:5", + "sourceRefs": [ + { + "mappedName": "#d:4;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#d:4;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#b:4;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:4;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:Hae4,E;:Hae6,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body20:edge:6", + "sourceRefs": [ + { + "mappedName": "#36:4;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#36:4;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:4;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:Hae4,E;:Hae6,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body20:edge:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1a:2;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#11:2;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:Hae4,E;:Hae6,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Body20:edge:8", + "sourceRefs": [ + { + "mappedName": "#d:2;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#d:2;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#b:2;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:2;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:Hae4,E;:Hae6,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Body20:edge:9", + "sourceRefs": [ + { + "mappedName": "#36:2;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#36:2;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:2;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:Hae4,E;:Hae6,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Body20:edge:10", + "sourceRefs": [ + { + "mappedName": "#d:3;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#d:3;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#b:3;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:3;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:Hae4,E;:Hae6,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:Hae4,E;:Hae6,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Body20:edge:11", + "sourceRefs": [ + { + "mappedName": "#36:3;:Hae4,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#36:3;:Hae4,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:3;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#1d:1;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 29 + ] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Body20:edge:12", + "sourceRefs": [ + { + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1d:1;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#1d:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Body20:edge:13", + "sourceRefs": [ + { + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1d:2;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:3;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Body20:edge:14", + "sourceRefs": [ + { + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1d:3;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#1d:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Body20:edge:15", + "sourceRefs": [ + { + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1d:4;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g4;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#28:2;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 40 + ] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Body20:edge:16", + "sourceRefs": [ + { + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#28:2;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#29:4;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 41 + ] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Body20:edge:17", + "sourceRefs": [ + { + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#29:4;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#44", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#44", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 61 + ], + "kind": "edge", + "mappedName": "#3d:1;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#3d:1;:H-ae6,E;:Hae6,E", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Body20:edge:18", + "sourceRefs": [ + { + "mappedName": "#3d:1;:H-ae6,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3d:1;:H-ae6,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 42 + ] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Body20:edge:19", + "sourceRefs": [ + { + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#2a:6;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#66", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:2;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#3d:2;:H-ae6,E;:Hae6,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Body20:edge:20", + "sourceRefs": [ + { + "mappedName": "#3d:2;:H-ae6,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3d:2;:H-ae6,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E;:Hae6,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#2b:8;:M;CUT;:H-ae6:7,E;:Hae6,E", + "stringIds": [ + 43 + ] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Body20:edge:21", + "sourceRefs": [ + { + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#2b:8;:M;CUT;:H-ae6:7,E", + "stageId": "Pocket20" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#88", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:3;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#3d:3;:H-ae6,E;:Hae6,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Body20:edge:22", + "sourceRefs": [ + { + "mappedName": "#3d:3;:H-ae6,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3d:3;:H-ae6,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:4;:H-ae6,E;:Hae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#3d:4;:H-ae6,E;:Hae6,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Body20:edge:23", + "sourceRefs": [ + { + "mappedName": "#3d:4;:H-ae6,E", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3d:4;:H-ae6,E", + "stageId": "Pocket20" + }, + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g4;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:Hae4,V;:Hae6,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Body20:vertex:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#f:1;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#2:1;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#2:1;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:Hae4,V;:Hae6,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Body20:vertex:1", + "sourceRefs": [ + { + "mappedName": "#2e:1;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#2e:1;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#18:1;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:Hae4,V;:Hae6,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Body20:vertex:2", + "sourceRefs": [ + { + "mappedName": "#10:2;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#10:2;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#4:2;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#4:2;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:Hae4,V;:Hae6,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Body20:vertex:3", + "sourceRefs": [ + { + "mappedName": "#30:2;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#30:2;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#19:2;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:Hae4,V;:Hae6,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Body20:vertex:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#12:2;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#8:2;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#8:2;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:Hae4,V;:Hae6,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Body20:vertex:5", + "sourceRefs": [ + { + "mappedName": "#34:2;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#34:2;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#1b:2;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:Hae4,V;:Hae6,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Body20:vertex:6", + "sourceRefs": [ + { + "mappedName": "#11:2;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#11:2;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#6:2;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#6:2;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:Hae4,V;:Hae6,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:Hae4,V;:Hae6,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Body20:vertex:7", + "sourceRefs": [ + { + "mappedName": "#32:2;:Hae4,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#32:2;:Hae4,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#1a:2;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:M;CUT;:H-ae6:7,V;:Hae6,V", + "stringIds": [ + 31 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Body20:vertex:8", + "sourceRefs": [ + { + "mappedName": "#1f;:M;CUT;:H-ae6:7,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#1f;:M;CUT;:H-ae6:7,V", + "stageId": "Pocket20" + }, + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1v1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#20;:M;CUT;:H-ae6:7,V;:Hae6,V", + "stringIds": [ + 32 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Body20:vertex:9", + "sourceRefs": [ + { + "mappedName": "#20;:M;CUT;:H-ae6:7,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#20;:M;CUT;:H-ae6:7,V", + "stageId": "Pocket20" + }, + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#21;:M;CUT;:H-ae6:7,V;:Hae6,V", + "stringIds": [ + 33 + ] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "Body20:vertex:10", + "sourceRefs": [ + { + "mappedName": "#21;:M;CUT;:H-ae6:7,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#21;:M;CUT;:H-ae6:7,V", + "stageId": "Pocket20" + }, + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:M;CUT;:H-ae6:7,V;:Hae6,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#22;:M;CUT;:H-ae6:7,V;:Hae6,V", + "stringIds": [ + 34 + ] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Body20:vertex:11", + "sourceRefs": [ + { + "mappedName": "#22;:M;CUT;:H-ae6:7,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#22;:M;CUT;:H-ae6:7,V", + "stageId": "Pocket20" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 56 + ], + "kind": "vertex", + "mappedName": "#38:2;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#38:2;:H-ae6,V;:Hae6,V", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Body20:vertex:12", + "sourceRefs": [ + { + "mappedName": "#38:2;:H-ae6,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#38:2;:H-ae6,V", + "stageId": "Pocket20" + }, + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 57 + ], + "kind": "vertex", + "mappedName": "#39:4;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 57 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#39:4;:H-ae6,V;:Hae6,V", + "stringIds": [ + 57 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Body20:vertex:13", + "sourceRefs": [ + { + "mappedName": "#39:4;:H-ae6,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#39:4;:H-ae6,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#44", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#44", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "kind": "vertex", + "mappedName": "#3a:6;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 58 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#3a:6;:H-ae6,V;:Hae6,V", + "stringIds": [ + 58 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Body20:vertex:14", + "sourceRefs": [ + { + "mappedName": "#3a:6;:H-ae6,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3a:6;:H-ae6,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#66", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#66", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:8;:H-ae6,V;:Hae6,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3b:8;:H-ae6,V;:Hae6,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Body20:vertex:15", + "sourceRefs": [ + { + "mappedName": "#3b:8;:H-ae6,V", + "objectId": "Pocket20", + "persistentId": "Pocket20:mapped:#3b:8;:H-ae6,V", + "stageId": "Pocket20" + }, + { + "mappedName": "#88", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#88", + "stageId": "PocketSketch20" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Body20", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Body20", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "volume": 72.31999999999998 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [ + "Sketch20.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "Sketch20", + "name": "Sketch20", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch20:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch20:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch20:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch20:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Sketch20:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Sketch20:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Sketch20:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Sketch20:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Sketch20", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Sketch20", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pad20.AddSubShape.Map.txt", + "Pad20.Shape.Map.txt" + ], + "elementMapSize": 30, + "elementMapVersion": "15.70200.5", + "label": "Pad20", + "name": "Pad20", + "names": [ + { + "history": [ + { + "children": [ + "#b:1;:Hae3,E" + ], + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 13 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hae3,E" + ], + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hae3,E" + ], + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hae3,E" + ], + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hae3,E" + ], + "mappedName": "#d:1;FAC;:Hae3:4,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;FAC;:Hae3:4,F", + "mappedStringIds": [ + 13 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [ + "#d:1;FAC;:Hae3:4,F", + "#b:1;:Hae3,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "mappedStringIds": [ + 20 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#2:1;:Hae3,V" + ], + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 15 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "#4:2;:Hae3,V" + ], + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 16 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:1;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:1;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [ + "#d:1;:G;XTR;:Hae3:7,F", + "#b:1;:Hae3,E" + ], + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 22 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "#6:2;:Hae3,V" + ], + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 17 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:2;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:2;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [ + "#d:2;:G;XTR;:Hae3:7,F", + "#b:2;:Hae3,E" + ], + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [ + "#8:2;:Hae3,V" + ], + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 18 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:3;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:3;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "#d:3;:G;XTR;:Hae3:7,F", + "#b:3;:Hae3,E" + ], + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#b:4;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "mappedName": "#b:4;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [ + "#d:4;:G;XTR;:Hae3:7,F", + "#b:4;:Hae3,E" + ], + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2:1;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "mappedName": "#2:1;:Hae3,V", + "mappedStringIds": [ + 2 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [ + "#f:1;:G;XTR;:Hae3:7,E", + "#2:1;:Hae3,V" + ], + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 24 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#4:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "mappedName": "#4:2;:Hae3,V", + "mappedStringIds": [ + 4 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [ + "#10:2;:G;XTR;:Hae3:7,E", + "#4:2;:Hae3,V" + ], + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 25 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#6:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "mappedName": "#6:2;:Hae3,V", + "mappedStringIds": [ + 6 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [ + "#11:2;:G;XTR;:Hae3:7,E", + "#6:2;:Hae3,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 26 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#8:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "mappedName": "#8:2;:Hae3,V", + "mappedStringIds": [ + 8 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "#12:2;:G;XTR;:Hae3:7,E", + "#8:2;:Hae3,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 27 + ], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 26, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#d:1;:G;XTR;:Hae3:7,F", + "stringIds": [ + 13 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad20:face:0", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#d:2;:G;XTR;:Hae3:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad20:face:1", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#d:3;:G;XTR;:Hae3:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Pad20:face:2", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "face", + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#d:4;:G;XTR;:Hae3:7,F", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Pad20:face:3", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 13 + ], + "kind": "face", + "mappedName": "#d:1;FAC;:Hae3:4,F", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#d:1;FAC;:Hae3:4,F", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad20:face:4", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#14:1;:G0;XTR;:Hae3:8,F", + "stringIds": [ + 20 + ] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Pad20:face:5", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 15 + ], + "kind": "edge", + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#f:1;:G;XTR;:Hae3:7,E", + "stringIds": [ + 15 + ] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Pad20:edge:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 16 + ], + "kind": "edge", + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#10:2;:G;XTR;:Hae3:7,E", + "stringIds": [ + 16 + ] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Pad20:edge:1", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:1;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#b:1;:Hae3,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad20:edge:2", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 22 + ], + "kind": "edge", + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#16:1;:U;XTR;:Hae3:7,E", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad20:edge:3", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 17 + ], + "kind": "edge", + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#11:2;:G;XTR;:Hae3:7,E", + "stringIds": [ + 17 + ] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Pad20:edge:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:2;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#b:2;:Hae3,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad20:edge:5", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#16:2;:U;XTR;:Hae3:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad20:edge:6", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 18 + ], + "kind": "edge", + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#12:2;:G;XTR;:Hae3:7,E", + "stringIds": [ + 18 + ] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Pad20:edge:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:3;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#b:3;:Hae3,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pad20:edge:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#16:3;:U;XTR;:Hae3:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pad20:edge:9", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11 + ], + "kind": "edge", + "mappedName": "#b:4;:Hae3,E", + "mappedStringIds": [ + 11 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#b:4;:Hae3,E", + "stringIds": [ + 11 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pad20:edge:10", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "edge", + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#16:4;:U;XTR;:Hae3:7,E", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pad20:edge:11", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 2 + ], + "kind": "vertex", + "mappedName": "#2:1;:Hae3,V", + "mappedStringIds": [ + 2 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#2:1;:Hae3,V", + "stringIds": [ + 2 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pad20:vertex:0", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 24 + ], + "kind": "vertex", + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#18:1;:U;XTR;:Hae3:7,V", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pad20:vertex:1", + "sourceRefs": [ + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 4 + ], + "kind": "vertex", + "mappedName": "#4:2;:Hae3,V", + "mappedStringIds": [ + 4 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#4:2;:Hae3,V", + "stringIds": [ + 4 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pad20:vertex:2", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 25 + ], + "kind": "vertex", + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#19:2;:U;XTR;:Hae3:7,V", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pad20:vertex:3", + "sourceRefs": [ + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 6 + ], + "kind": "vertex", + "mappedName": "#6:2;:Hae3,V", + "mappedStringIds": [ + 6 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#6:2;:Hae3,V", + "stringIds": [ + 6 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pad20:vertex:4", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 26 + ], + "kind": "vertex", + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#1a:2;:U;XTR;:Hae3:7,V", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pad20:vertex:5", + "sourceRefs": [ + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 8 + ], + "kind": "vertex", + "mappedName": "#8:2;:Hae3,V", + "mappedStringIds": [ + 8 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#8:2;:Hae3,V", + "stringIds": [ + 8 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pad20:vertex:6", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 27 + ], + "kind": "vertex", + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#1b:2;:U;XTR;:Hae3:7,V", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pad20:vertex:7", + "sourceRefs": [ + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pad20", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pad20", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 79.99999999999999 + }, + "typeId": "PartDesign::Pad" + }, + { + "elementMap2ResourcePaths": [ + "PocketSketch20.Shape.Map.txt" + ], + "elementMapSize": 12, + "elementMapVersion": "15.70200.5", + "label": "PocketSketch20", + "name": "PocketSketch20", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "g1;SKT", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "g2;SKT", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "g3;SKT", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "g4;SKT", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "name": "Vertex4" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 8, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "g1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch20:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "g2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch20:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g3;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "g3;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch20:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "g4;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "g4;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch20:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v1;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "g1v1;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "PocketSketch20:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g1v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "g1v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "PocketSketch20:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g2v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "g2v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "PocketSketch20:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "g3v2;SKT", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "g3v2;SKT", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "PocketSketch20:vertex:3", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "PocketSketch20", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "PocketSketch20", + "status": "native-evidence" + }, + "shape": { + "edges": 4, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "Sketcher::SketchObject" + }, + { + "elementMap2ResourcePaths": [ + "Pocket20.AddSubShape.Map.txt", + "Pocket20.Shape.Map.txt" + ], + "elementMapSize": 55, + "elementMapVersion": "15.70200.5", + "label": "Pocket20", + "name": "Pocket20", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "#16:1;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hae3,E" + ], + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "mappedName": "#16:1;:Hae4,F", + "mappedStringIds": [ + 22 + ], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:4;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:4;:Hae3,E" + ], + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:4;:Hae4,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:2;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:2;:Hae3,E" + ], + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:2;:Hae4,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#14:1;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:1;:Hae3,E" + ], + "mappedName": "#d:1;FAC;:Hae3:4,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "mappedName": "#14:1;:Hae4,F", + "mappedStringIds": [ + 20 + ], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#41:1;:M;CUT;:Hae4:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;FAC;:Hae3:4,F", + "#b:1;:Hae3,E" + ], + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face5", + "indexedStringIds": [ + 65 + ], + "mappedName": "#41:1;:M;CUT;:Hae4:7,F", + "mappedStringIds": [ + 65 + ], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#16:3;:Hae4,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#b:3;:Hae3,E" + ], + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "mappedName": "#16:3;:Hae4,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "name": "Face6" + }, + { + "history": [ + { + "children": [ + "#1d:1;:G;XTR;:Hae5:7,F", + "#b:1;:Hae5,E" + ], + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 38 + ], + "name": "Face7" + }, + { + "history": [ + { + "children": [ + "#1d:2;:G;XTR;:Hae5:7,F", + "#b:2;:Hae5,E" + ], + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face8" + }, + { + "history": [ + { + "children": [ + "#1d:3;:G;XTR;:Hae5:7,F", + "#b:3;:Hae5,E" + ], + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face9" + }, + { + "history": [ + { + "children": [ + "#1d:4;:G;XTR;:Hae5:7,F", + "#b:4;:Hae5,E" + ], + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "name": "Face10" + }, + { + "history": [ + { + "children": [ + "#24:1;:G0;XTR;:Hae5:8,F", + "#1d:1;FAC;:Hae5:4,F", + "#b:1;:Hae5,E" + ], + "mappedName": "#3f:1;:H-ae6,F", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "mappedName": "#3f:1;:H-ae6,F", + "mappedStringIds": [ + 63 + ], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#18:1;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#2:1;:Hae3,V" + ], + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "mappedName": "#18:1;:Hae4,E", + "mappedStringIds": [ + 24 + ], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#19:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#4:2;:Hae3,V" + ], + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "mappedName": "#19:2;:Hae4,E", + "mappedStringIds": [ + 25 + ], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:1;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:1;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "mappedName": "#d:1;:Hae4,E", + "mappedStringIds": [ + 13 + ], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:1;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:1;:G;XTR;:Hae3:7,F", + "#b:1;:Hae3,E" + ], + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "mappedName": "#36:1;:Hae4,E", + "mappedStringIds": [ + 54 + ], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1b:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#8:2;:Hae3,V" + ], + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "mappedName": "#1b:2;:Hae4,E", + "mappedStringIds": [ + 27 + ], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:4;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:4;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:4;:Hae4,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:4;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:4;:G;XTR;:Hae3:7,F", + "#b:4;:Hae3,E" + ], + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:4;:Hae4,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#1a:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#6:2;:Hae3,V" + ], + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "mappedName": "#1a:2;:Hae4,E", + "mappedStringIds": [ + 26 + ], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:2;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:2;:Hae4,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:2;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:2;:G;XTR;:Hae3:7,F", + "#b:2;:Hae3,E" + ], + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:2;:Hae4,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "#d:3;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#b:3;:Hae3,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "mappedName": "#d:3;:Hae4,E", + "mappedStringIds": [ + 11, + 13 + ], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "#36:3;:Hae4,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#d:3;:G;XTR;:Hae3:7,F", + "#b:3;:Hae3,E" + ], + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "mappedName": "#36:3;:Hae4,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "name": "Edge12" + }, + { + "history": [ + { + "children": [ + "#b:1;:Hae5,E" + ], + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [ + 29 + ], + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 29 + ], + "name": "Edge13" + }, + { + "history": [ + { + "children": [ + "#b:2;:Hae5,E" + ], + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge14" + }, + { + "history": [ + { + "children": [ + "#b:3;:Hae5,E" + ], + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "#b:4;:Hae5,E" + ], + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 29 + ], + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "name": "Edge16" + }, + { + "history": [ + { + "children": [ + "#1f:2;:G;XTR;:Hae5:7,E", + "#22;:Hae5,V", + "#8;:Hae5,V" + ], + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [ + 40 + ], + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 40 + ], + "name": "Edge17" + }, + { + "history": [ + { + "children": [ + "#20:4;:G;XTR;:Hae5:7,E", + "#44;:Hae5,V" + ], + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [ + 41 + ], + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 41 + ], + "name": "Edge18" + }, + { + "history": [ + { + "children": [ + "#26:1;:U;XTR;:Hae5:7,E", + "#1d:1;:G;XTR;:Hae5:7,F", + "#b:1;:Hae5,E" + ], + "mappedName": "#3d:1;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [ + 61 + ], + "mappedName": "#3d:1;:H-ae6,E", + "mappedStringIds": [ + 61 + ], + "name": "Edge19" + }, + { + "history": [ + { + "children": [ + "#21:6;:G;XTR;:Hae5:7,E", + "#66;:Hae5,V" + ], + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 42 + ], + "name": "Edge20" + }, + { + "history": [ + { + "children": [ + "#26:2;:U;XTR;:Hae5:7,E", + "#1d:2;:G;XTR;:Hae5:7,F", + "#b:2;:Hae5,E" + ], + "mappedName": "#3d:2;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:2;:H-ae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge21" + }, + { + "history": [ + { + "children": [ + "#22:8;:G;XTR;:Hae5:7,E", + "#88;:Hae5,V" + ], + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 43 + ], + "name": "Edge22" + }, + { + "history": [ + { + "children": [ + "#26:3;:U;XTR;:Hae5:7,E", + "#1d:3;:G;XTR;:Hae5:7,F", + "#b:3;:Hae5,E" + ], + "mappedName": "#3d:3;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:3;:H-ae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge23" + }, + { + "history": [ + { + "children": [ + "#26:4;:U;XTR;:Hae5:7,E", + "#1d:4;:G;XTR;:Hae5:7,F", + "#b:4;:Hae5,E" + ], + "mappedName": "#3d:4;:H-ae6,E", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g4;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "mappedName": "#3d:4;:H-ae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "#f:1;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#2:1;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "mappedName": "#f:1;:Hae4,V", + "mappedStringIds": [ + 15 + ], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "#2e:1;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#f:1;:G;XTR;:Hae3:7,E", + "#2:1;:Hae3,V" + ], + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v11;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "mappedName": "#2e:1;:Hae4,V", + "mappedStringIds": [ + 46 + ], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "#10:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#4:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "mappedName": "#10:2;:Hae4,V", + "mappedStringIds": [ + 16 + ], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "#30:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#10:2;:G;XTR;:Hae3:7,E", + "#4:2;:Hae3,V" + ], + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g1v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "mappedName": "#30:2;:Hae4,V", + "mappedStringIds": [ + 48 + ], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "#12:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#8:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "mappedName": "#12:2;:Hae4,V", + "mappedStringIds": [ + 18 + ], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "#34:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#12:2;:G;XTR;:Hae3:7,E", + "#8:2;:Hae3,V" + ], + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g3v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "mappedName": "#34:2;:Hae4,V", + "mappedStringIds": [ + 52 + ], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "#11:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#6:2;:Hae3,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "mappedName": "#11:2;:Hae4,V", + "mappedStringIds": [ + 17 + ], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "#32:2;:Hae4,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [ + "#11:2;:G;XTR;:Hae3:7,E", + "#6:2;:Hae3,V" + ], + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "object": "Pad20", + "typeId": "PartDesign::Pad" + }, + { + "children": [], + "mappedName": "g2v22;SKT", + "object": "Sketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "mappedName": "#32:2;:Hae4,V", + "mappedStringIds": [ + 50 + ], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [ + "#2;:Hae5,V" + ], + "mappedName": "#1f;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v1;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "mappedName": "#1f;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 31 + ], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [ + "#4;:Hae5,V" + ], + "mappedName": "#20;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g1v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [ + 32 + ], + "mappedName": "#20;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 32 + ], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [ + "#6;:Hae5,V" + ], + "mappedName": "#21;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g2v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [ + 33 + ], + "mappedName": "#21;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 33 + ], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [ + "#8;:Hae5,V" + ], + "mappedName": "#22;:M;CUT;:H-ae6:7,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [ + 34 + ], + "mappedName": "#22;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 34 + ], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [ + "#28:2;:U;XTR;:Hae5:7,V", + "#1f:2;:G;XTR;:Hae5:7,E", + "#22;:Hae5,V", + "#8;:Hae5,V" + ], + "mappedName": "#38:2;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "g3v2;SKT", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [ + 56 + ], + "mappedName": "#38:2;:H-ae6,V", + "mappedStringIds": [ + 56 + ], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [ + "#29:4;:U;XTR;:Hae5:7,V", + "#20:4;:G;XTR;:Hae5:7,E", + "#44;:Hae5,V" + ], + "mappedName": "#39:4;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#44", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [ + 57 + ], + "mappedName": "#39:4;:H-ae6,V", + "mappedStringIds": [ + 57 + ], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [ + "#2a:6;:U;XTR;:Hae5:7,V", + "#21:6;:G;XTR;:Hae5:7,E", + "#66;:Hae5,V" + ], + "mappedName": "#3a:6;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#66", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "mappedName": "#3a:6;:H-ae6,V", + "mappedStringIds": [ + 58 + ], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [ + "#2b:8;:U;XTR;:Hae5:7,V", + "#22:8;:G;XTR;:Hae5:7,E", + "#88;:Hae5,V" + ], + "mappedName": "#3b:8;:H-ae6,V", + "object": "Pocket20", + "typeId": "PartDesign::Pocket" + }, + { + "children": [], + "mappedName": "#88", + "object": "PocketSketch20", + "typeId": "Sketcher::SketchObject" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "mappedName": "#3b:8;:H-ae6,V", + "mappedStringIds": [ + 59 + ], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 51, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 51, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [ + 22 + ], + "kind": "face", + "mappedName": "#16:1;:Hae4,F", + "mappedStringIds": [ + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "#16:1;:Hae4,F", + "stringIds": [ + 22 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket20:face:0", + "sourceRefs": [ + { + "mappedName": "#d:1;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:1;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:4;:Hae4,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "#16:4;:Hae4,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket20:face:1", + "sourceRefs": [ + { + "mappedName": "#d:4;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:4;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:2;:Hae4,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "#16:2;:Hae4,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket20:face:2", + "sourceRefs": [ + { + "mappedName": "#d:2;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:2;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [ + 20 + ], + "kind": "face", + "mappedName": "#14:1;:Hae4,F", + "mappedStringIds": [ + 20 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "#14:1;:Hae4,F", + "stringIds": [ + 20 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket20:face:3", + "sourceRefs": [ + { + "mappedName": "#d:1;FAC;:Hae3:4,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:1;FAC;:Hae3:4,F", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [ + 65 + ], + "kind": "face", + "mappedName": "#41:1;:M;CUT;:Hae4:7,F", + "mappedStringIds": [ + 65 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "#41:1;:M;CUT;:Hae4:7,F", + "stringIds": [ + 65 + ] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Pocket20:face:4", + "sourceRefs": [ + { + "mappedName": "#14:1;:G0;XTR;:Hae3:8,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#14:1;:G0;XTR;:Hae3:8,F", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [ + 11, + 13, + 22 + ], + "kind": "face", + "mappedName": "#16:3;:Hae4,F", + "mappedStringIds": [ + 11, + 13, + 22 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "#16:3;:Hae4,F", + "stringIds": [ + 11, + 13, + 22 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket20:face:5", + "sourceRefs": [ + { + "mappedName": "#d:3;:G;XTR;:Hae3:7,F", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#d:3;:G;XTR;:Hae3:7,F", + "stageId": "Pad20" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [ + 38 + ], + "kind": "face", + "mappedName": "#26:1;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "#26:1;:M;CUT;:H-ae6:7,F", + "stringIds": [ + 38 + ] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Pocket20:face:6", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:2;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "#26:2;:M;CUT;:H-ae6:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Pocket20:face:7", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:3;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "#26:3;:M;CUT;:H-ae6:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Pocket20:face:8", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [ + 11, + 29, + 38 + ], + "kind": "face", + "mappedName": "#26:4;:M;CUT;:H-ae6:7,F", + "mappedStringIds": [ + 11, + 29, + 38 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "#26:4;:M;CUT;:H-ae6:7,F", + "stringIds": [ + 11, + 29, + 38 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Pocket20:face:9", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g4;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [ + 63 + ], + "kind": "face", + "mappedName": "#3f:1;:H-ae6,F", + "mappedStringIds": [ + 63 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "#3f:1;:H-ae6,F", + "stringIds": [ + 63 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket20:face:10", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [ + 24 + ], + "kind": "edge", + "mappedName": "#18:1;:Hae4,E", + "mappedStringIds": [ + 24 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "#18:1;:Hae4,E", + "stringIds": [ + 24 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket20:edge:0", + "sourceRefs": [ + { + "mappedName": "#f:1;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#f:1;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [ + 25 + ], + "kind": "edge", + "mappedName": "#19:2;:Hae4,E", + "mappedStringIds": [ + 25 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "#19:2;:Hae4,E", + "stringIds": [ + 25 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket20:edge:1", + "sourceRefs": [ + { + "mappedName": "#10:2;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#10:2;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [ + 13 + ], + "kind": "edge", + "mappedName": "#d:1;:Hae4,E", + "mappedStringIds": [ + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "#d:1;:Hae4,E", + "stringIds": [ + 13 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket20:edge:2", + "sourceRefs": [ + { + "mappedName": "#b:1;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:1;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [ + 54 + ], + "kind": "edge", + "mappedName": "#36:1;:Hae4,E", + "mappedStringIds": [ + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "#36:1;:Hae4,E", + "stringIds": [ + 54 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket20:edge:3", + "sourceRefs": [ + { + "mappedName": "#16:1;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:1;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g1;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [ + 27 + ], + "kind": "edge", + "mappedName": "#1b:2;:Hae4,E", + "mappedStringIds": [ + 27 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "#1b:2;:Hae4,E", + "stringIds": [ + 27 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket20:edge:4", + "sourceRefs": [ + { + "mappedName": "#12:2;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#12:2;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:4;:Hae4,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "#d:4;:Hae4,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket20:edge:5", + "sourceRefs": [ + { + "mappedName": "#b:4;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:4;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:4;:Hae4,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "#36:4;:Hae4,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket20:edge:6", + "sourceRefs": [ + { + "mappedName": "#16:4;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:4;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g4;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g4;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [ + 26 + ], + "kind": "edge", + "mappedName": "#1a:2;:Hae4,E", + "mappedStringIds": [ + 26 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "#1a:2;:Hae4,E", + "stringIds": [ + 26 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket20:edge:7", + "sourceRefs": [ + { + "mappedName": "#11:2;:G;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#11:2;:G;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:2;:Hae4,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "#d:2;:Hae4,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Pocket20:edge:8", + "sourceRefs": [ + { + "mappedName": "#b:2;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:2;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:2;:Hae4,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "#36:2;:Hae4,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Pocket20:edge:9", + "sourceRefs": [ + { + "mappedName": "#16:2;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:2;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g2;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [ + 11, + 13 + ], + "kind": "edge", + "mappedName": "#d:3;:Hae4,E", + "mappedStringIds": [ + 11, + 13 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "#d:3;:Hae4,E", + "stringIds": [ + 11, + 13 + ] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Pocket20:edge:10", + "sourceRefs": [ + { + "mappedName": "#b:3;:Hae3,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#b:3;:Hae3,E", + "stageId": "Pad20" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [ + 11, + 13, + 22, + 54 + ], + "kind": "edge", + "mappedName": "#36:3;:Hae4,E", + "mappedStringIds": [ + 11, + 13, + 22, + 54 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "#36:3;:Hae4,E", + "stringIds": [ + 11, + 13, + 22, + 54 + ] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Pocket20:edge:11", + "sourceRefs": [ + { + "mappedName": "#16:3;:U;XTR;:Hae3:7,E", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#16:3;:U;XTR;:Hae3:7,E", + "stageId": "Pad20" + }, + { + "mappedName": "g3;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [ + 29 + ], + "kind": "edge", + "mappedName": "#1d:1;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "#1d:1;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 29 + ] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Pocket20:edge:12", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:2;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "#1d:2;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Pocket20:edge:13", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:3;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "#1d:3;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Pocket20:edge:14", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [ + 11, + 29 + ], + "kind": "edge", + "mappedName": "#1d:4;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 11, + 29 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "#1d:4;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 11, + 29 + ] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Pocket20:edge:15", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g4;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [ + 40 + ], + "kind": "edge", + "mappedName": "#28:2;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 40 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "#28:2;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 40 + ] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Pocket20:edge:16", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [ + 41 + ], + "kind": "edge", + "mappedName": "#29:4;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 41 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "#29:4;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 41 + ] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Pocket20:edge:17", + "sourceRefs": [ + { + "mappedName": "#44", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#44", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [ + 61 + ], + "kind": "edge", + "mappedName": "#3d:1;:H-ae6,E", + "mappedStringIds": [ + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "#3d:1;:H-ae6,E", + "stringIds": [ + 61 + ] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Pocket20:edge:18", + "sourceRefs": [ + { + "mappedName": "g1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [ + 42 + ], + "kind": "edge", + "mappedName": "#2a:6;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 42 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "#2a:6;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 42 + ] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Pocket20:edge:19", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#66", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:2;:H-ae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "#3d:2;:H-ae6,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Pocket20:edge:20", + "sourceRefs": [ + { + "mappedName": "g2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [ + 43 + ], + "kind": "edge", + "mappedName": "#2b:8;:M;CUT;:H-ae6:7,E", + "mappedStringIds": [ + 43 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "#2b:8;:M;CUT;:H-ae6:7,E", + "stringIds": [ + 43 + ] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Pocket20:edge:21", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#88", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:3;:H-ae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "#3d:3;:H-ae6,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "Pocket20:edge:22", + "sourceRefs": [ + { + "mappedName": "g3;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [ + 11, + 29, + 38, + 61 + ], + "kind": "edge", + "mappedName": "#3d:4;:H-ae6,E", + "mappedStringIds": [ + 11, + 29, + 38, + 61 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "#3d:4;:H-ae6,E", + "stringIds": [ + 11, + 29, + 38, + 61 + ] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "Pocket20:edge:23", + "sourceRefs": [ + { + "mappedName": "g4;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g4;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [ + 15 + ], + "kind": "vertex", + "mappedName": "#f:1;:Hae4,V", + "mappedStringIds": [ + 15 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "#f:1;:Hae4,V", + "stringIds": [ + 15 + ] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Pocket20:vertex:0", + "sourceRefs": [ + { + "mappedName": "#2:1;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#2:1;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [ + 46 + ], + "kind": "vertex", + "mappedName": "#2e:1;:Hae4,V", + "mappedStringIds": [ + 46 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "#2e:1;:Hae4,V", + "stringIds": [ + 46 + ] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Pocket20:vertex:1", + "sourceRefs": [ + { + "mappedName": "#18:1;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#18:1;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v11;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v11;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [ + 16 + ], + "kind": "vertex", + "mappedName": "#10:2;:Hae4,V", + "mappedStringIds": [ + 16 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "#10:2;:Hae4,V", + "stringIds": [ + 16 + ] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Pocket20:vertex:2", + "sourceRefs": [ + { + "mappedName": "#4:2;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#4:2;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [ + 48 + ], + "kind": "vertex", + "mappedName": "#30:2;:Hae4,V", + "mappedStringIds": [ + 48 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "#30:2;:Hae4,V", + "stringIds": [ + 48 + ] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Pocket20:vertex:3", + "sourceRefs": [ + { + "mappedName": "#19:2;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#19:2;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g1v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g1v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [ + 18 + ], + "kind": "vertex", + "mappedName": "#12:2;:Hae4,V", + "mappedStringIds": [ + 18 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "#12:2;:Hae4,V", + "stringIds": [ + 18 + ] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Pocket20:vertex:4", + "sourceRefs": [ + { + "mappedName": "#8:2;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#8:2;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [ + 52 + ], + "kind": "vertex", + "mappedName": "#34:2;:Hae4,V", + "mappedStringIds": [ + 52 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "#34:2;:Hae4,V", + "stringIds": [ + 52 + ] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Pocket20:vertex:5", + "sourceRefs": [ + { + "mappedName": "#1b:2;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#1b:2;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g3v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g3v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [ + 17 + ], + "kind": "vertex", + "mappedName": "#11:2;:Hae4,V", + "mappedStringIds": [ + 17 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "#11:2;:Hae4,V", + "stringIds": [ + 17 + ] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Pocket20:vertex:6", + "sourceRefs": [ + { + "mappedName": "#6:2;:Hae3,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#6:2;:Hae3,V", + "stageId": "Pad20" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [ + 50 + ], + "kind": "vertex", + "mappedName": "#32:2;:Hae4,V", + "mappedStringIds": [ + 50 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "#32:2;:Hae4,V", + "stringIds": [ + 50 + ] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Pocket20:vertex:7", + "sourceRefs": [ + { + "mappedName": "#1a:2;:U;XTR;:Hae3:7,V", + "objectId": "Pad20", + "persistentId": "Pad20:mapped:#1a:2;:U;XTR;:Hae3:7,V", + "stageId": "Pad20" + }, + { + "mappedName": "g2v22;SKT", + "objectId": "Sketch20", + "persistentId": "Sketch20:mapped:g2v22;SKT", + "stageId": "Sketch20" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [ + 31 + ], + "kind": "vertex", + "mappedName": "#1f;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 31 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "#1f;:M;CUT;:H-ae6:7,V", + "stringIds": [ + 31 + ] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Pocket20:vertex:8", + "sourceRefs": [ + { + "mappedName": "g1v1;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1v1;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [ + 32 + ], + "kind": "vertex", + "mappedName": "#20;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 32 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "#20;:M;CUT;:H-ae6:7,V", + "stringIds": [ + 32 + ] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Pocket20:vertex:9", + "sourceRefs": [ + { + "mappedName": "g1v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g1v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [ + 33 + ], + "kind": "vertex", + "mappedName": "#21;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 33 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "#21;:M;CUT;:H-ae6:7,V", + "stringIds": [ + 33 + ] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "Pocket20:vertex:10", + "sourceRefs": [ + { + "mappedName": "g2v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g2v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [ + 34 + ], + "kind": "vertex", + "mappedName": "#22;:M;CUT;:H-ae6:7,V", + "mappedStringIds": [ + 34 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "#22;:M;CUT;:H-ae6:7,V", + "stringIds": [ + 34 + ] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Pocket20:vertex:11", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [ + 56 + ], + "kind": "vertex", + "mappedName": "#38:2;:H-ae6,V", + "mappedStringIds": [ + 56 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "#38:2;:H-ae6,V", + "stringIds": [ + 56 + ] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Pocket20:vertex:12", + "sourceRefs": [ + { + "mappedName": "g3v2;SKT", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:g3v2;SKT", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [ + 57 + ], + "kind": "vertex", + "mappedName": "#39:4;:H-ae6,V", + "mappedStringIds": [ + 57 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "#39:4;:H-ae6,V", + "stringIds": [ + 57 + ] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Pocket20:vertex:13", + "sourceRefs": [ + { + "mappedName": "#44", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#44", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [ + 58 + ], + "kind": "vertex", + "mappedName": "#3a:6;:H-ae6,V", + "mappedStringIds": [ + 58 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "#3a:6;:H-ae6,V", + "stringIds": [ + 58 + ] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Pocket20:vertex:14", + "sourceRefs": [ + { + "mappedName": "#66", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#66", + "stageId": "PocketSketch20" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [ + 59 + ], + "kind": "vertex", + "mappedName": "#3b:8;:H-ae6,V", + "mappedStringIds": [ + 59 + ], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "#3b:8;:H-ae6,V", + "stringIds": [ + 59 + ] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Pocket20:vertex:15", + "sourceRefs": [ + { + "mappedName": "#88", + "objectId": "PocketSketch20", + "persistentId": "PocketSketch20:mapped:#88", + "stageId": "PocketSketch20" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Pocket20", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Pocket20", + "status": "native-evidence" + }, + "shape": { + "edges": 24, + "faces": 11, + "solids": 1, + "valid": true, + "volume": 72.31999999999998 + }, + "typeId": "PartDesign::Pocket" + } + ], + "status": "pass", + "stringHasherResource": { + "sha256": "ccb71464c4f782c95a45ab208e4d8db000fbe9ac441e4ab940688c15fc4245d0", + "text": "StringTableStart v1 65\n-1.0 0:;SKT\n-1.c.1 g1v1\n-1.c.0 g4v2\n-1.c.0 g1v2\n-1.c.0 g2v1\n-1.c.0 g2v2\n-1.c.0 g3v1\n-1.c.0 g3v2\n-1.c.0 g4v1\n-1.0 0:g\n-1.1c.a.1\n-1.0 0:;:Hae3,E\n-1.4c.1.2\n-1.0 0:;:Hae3,V\n-1.4c.1.d\n-1.4c.0.2\n-1.4c.0.2\n-1.4c.0.2\n-1.0 0:;FAC;:Hae3:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hae3:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hae3:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:Hae5,E\n-1.4c.1.12\n-1.0 0:;:Hae5,V\n-1.2c.1.1d\n-1.2c.0.2\n-1.2c.0.2\n-1.2c.0.2\n-1.0 0:;FAC;:Hae5:4,F\n-1.4c.1.7\n-1.0 0:;:G;XTR;:Hae5:7,F\n-1.4c.1.9\n-1.0 0:;:G;XTR;:Hae5:7,E\n-1.4c.1.9\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.-19.-1f\n-1.0 0:;:U;XTR;:Hae3:7,V\n-1.4c.1.16\n-1.4c.-1f.-13\n-1.4c.1f.14\n-1.4c.-1f.-12\n-1.4c.1f.13\n-1.4c.-1f.-11\n-1.4c.1f.12\n-1.0 0:;:U;XTR;:Hae3:7,E\n-1.4c.1.20\n-1.0 0:;:U;XTR;:Hae5:7,V\n-1.4c.1.10\n-1.4c.0.1\n-1.4c.0.1\n-1.4c.0.1\n-1.0 0:;:U;XTR;:Hae5:7,E\n-1.4c.1.17\n-1.0 0:;:G0;XTR;:Hae5:8,F\n-1.4c.1.1b\n-1.0 0:;:G0;XTR;:Hae3:8,F\n-1.4c.1.2d\n" + } + }, + { + "elementMapResources": { + "CompositeCut21.Shape.Map.txt": { + "sha256": "a815ba28846355ad8cf8b03d3a7ccd308d10e2a131bac72de187234facedb382", + "text": "BeginElementMap v1\n2 PostfixCount 21\nEdge\nFace\nVertex\n;:H735,E;:H737,E\n;:H738,E\n;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V;:H737,V\n;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V;:H737,V\n;:M2;FUS;:H736:8,E;:H737,E\n;:M;FUS;:H736:7,E;:H737,E\n;:H736,E;:H737,E\n;:H735,F;:H737,F\n;:H738,F\n;:M2;FUS;:H736:8,F;:H737,F\n;:M;FUS;:H736:7,F;:H737,F\n;:H736,F;:H737,F\n;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E;:H737,E\n;:M;FUS;:H735:7,F;:H737,F\n;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E;:H737,E\n;:H735,V;:H737,V\n;:H736,V;:H737,V\n;:H738,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 31\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.12 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.10 0\n:1.1.8 0\n:1.3.a 0\n:1.2.a 0\n:1.1.9 0\n:1.1.5 0\n:1.2.5 0\n:1.3.5 0\n:1.4.5 0\n:1.9.5 0\n:1.5.5 0\n:1.a.5 0\n:1.c.5 0\n:1.6.5 0\n:1.b.5 0\n:1.7.5 0\n:1.8.5 0\n\nFace\n\nChildCount 0\n\nNameCount 17\n0\n:2.1.b 0\n:2.3.b 0\n:2.6.11 0\n:2.4.b 0\n:2.5.11 0\n:2.2.b 0\n:2.1.d 0\n:2.1.e 0\n:2.3.f 0\n:2.2.f 0\n:2.1.c 0\n:2.3.c 0\n:2.6.c 0\n:2.4.c 0\n:2.5.c 0\n:2.2.c 0\n\nVertex\n\nChildCount 0\n\nNameCount 21\n0\n:3.1.13 0\n:3.2.13 0\n:3.3.13 0\n:3.4.13 0\n:3.6.13 0\n:3.5.13 0\n:3.7.13 0\n:1.1.7 0\n:3.8.13 0\n:1.1.6 0\n:3.2.14 0\n:3.1.14 0\n:3.1.15 0\n:3.2.15 0\n:3.3.15 0\n:3.4.15 0\n:3.6.15 0\n:3.5.15 0\n:3.7.15 0\n:3.8.15 0\n\nEndMap\n" + }, + "Fuse21.Shape.Map.txt": { + "sha256": "74d8fc072db53b4243ea7e885df0fb5a85354697eca83736a104a3a829546b22", + "text": "BeginElementMap v1\n1 PostfixCount 18\nEdge\nFace\nVertex\n;:H735,E\n;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V\n;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V\n;:M2;FUS;:H736:8,E\n;:M;FUS;:H736:7,E\n;:H736,E\n;:H735,F\n;:M2;FUS;:H736:8,F\n;:M;FUS;:H736:7,F\n;:H736,F\n;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E\n;:M;FUS;:H735:7,F\n;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E\n;:H735,V\n;:H736,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 19\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.10 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.e 0\n:1.1.7 0\n:1.3.9 0\n:1.2.9 0\n:1.1.8 0\n\nFace\n\nChildCount 0\n\nNameCount 11\n0\n:2.1.a 0\n:2.3.a 0\n:2.6.f 0\n:2.4.a 0\n:2.5.f 0\n:2.2.a 0\n:2.1.b 0\n:2.1.c 0\n:2.3.d 0\n:2.2.d 0\n\nVertex\n\nChildCount 0\n\nNameCount 13\n0\n:3.1.11 0\n:3.2.11 0\n:3.3.11 0\n:3.4.11 0\n:3.6.11 0\n:3.5.11 0\n:3.7.11 0\n:1.1.6 0\n:3.8.11 0\n:1.1.5 0\n:3.2.12 0\n:3.1.12 0\n\nEndMap\n" + } + }, + "finalObject": "CompositeCut21", + "id": "composite-01", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box21", + "name": "Box21", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box21:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box21:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box21:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box21:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box21:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box21:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box21:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box21:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box21:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box21:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box21:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box21:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box21:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box21:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box21:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box21:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box21:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box21:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box21:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box21:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box21:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box21:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box21:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box21:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box21:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box21:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box21", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box21", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder21", + "name": "Cylinder21", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder21:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder21:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder21:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder21:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder21:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder21:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder21:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder21:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder21", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder21", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 395.84067435231395 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Fuse21.Shape.Map.txt" + ], + "elementMapSize": 40, + "elementMapVersion": "15.70200.5", + "label": "Fuse21", + "name": "Fuse21", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H735,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H735,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H735:7,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H735:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H735,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H735:7,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H735:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H735,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H736:8,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H736:8,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H736:7,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H736:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H736,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face3;:H736,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H736,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face2;:H736,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H735,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H735,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H735,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H735,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H735,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H735,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H735,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H735,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H735,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F)", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H735,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H735,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H735,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F)", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H736:8,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M2;FUS;:H736:8,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H736,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge3;:H736,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H736,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge2;:H736,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H736:7,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H736:7,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H735,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H735,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H735,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H735,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H735,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H735,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H735,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F)", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H735,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F)", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H736,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex2;:H736,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H736,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex1;:H736,V", + "mappedStringIds": [], + "name": "Vertex12" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 40, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 40, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H735,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H735,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse21:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face1", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H735,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H735,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse21:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face3", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H735:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H735:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse21:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face6", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H735,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H735,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse21:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face4", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H735:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H735:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fuse21:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face5", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H735,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H735,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse21:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face2", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H736:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H736:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse21:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H736:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H736:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Fuse21:face:7", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H736,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face3;:H736,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse21:face:8", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face3", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H736,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face2;:H736,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fuse21:face:9", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face2", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse21:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge1", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse21:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge2", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse21:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge3", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse21:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge4", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse21:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge9", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse21:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge5", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse21:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge10", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse21:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge12", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse21:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge6", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse21:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F)", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face6;:G2(Face1;K-2;:H736:4,F)", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse21:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge11", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse21:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge7", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H735,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H735,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Fuse21:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge8", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Fuse21:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F)", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face5;:G2(Face1;K-1;:H736:4,F)", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M2;FUS;:H736:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M2;FUS;:H736:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Fuse21:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H736,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge3;:H736,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Fuse21:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge3", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H736,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge2;:H736,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Fuse21:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge2", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H736:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H736:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Fuse21:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse21:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex1", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse21:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex2", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse21:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex3", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse21:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex4", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse21:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex6", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse21:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex5", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse21:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex7", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Fuse21:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F)", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1;:G2(Face6;K-1;:H735:4,F)", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H735,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H735,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse21:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex8", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse21:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F)", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1;:G(Face5;K-1;:H735:4,F)", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H736,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex2;:H736,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse21:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Vertex2", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H736,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex1;:H736,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse21:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Vertex1", + "stageId": "Cylinder21" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fuse21", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fuse21", + "status": "native-evidence" + }, + "shape": { + "edges": 18, + "faces": 10, + "solids": 1, + "valid": true, + "volume": 1113.0973355292322 + }, + "typeId": "Part::Fuse" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "SecondBox21", + "name": "SecondBox21", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox21:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox21:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox21:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox21:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox21:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox21:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox21:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox21:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox21:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox21:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox21:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox21:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox21:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox21:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "SecondBox21:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "SecondBox21:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "SecondBox21:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "SecondBox21:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox21:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox21:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox21:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox21:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox21:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox21:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox21:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox21:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "SecondBox21", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "SecondBox21", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 63.999999999999986 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [ + "CompositeCut21.Shape.Map.txt" + ], + "elementMapSize": 66, + "elementMapVersion": "15.70200.5", + "label": "CompositeCut21", + "name": "CompositeCut21", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H735,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H735,F;:H737,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H735,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H735,F;:H737,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H735:7,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M;FUS;:H735:7,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H735:7,F;:H737,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H735,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H735,F;:H737,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H735:7,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M;FUS;:H735:7,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H735:7,F;:H737,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H735,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H735,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H735,F;:H737,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H736:8,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H736:8,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H736:8,F;:H737,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H736:7,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;FUS;:H736:7,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H736:7,F;:H737,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H736,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H736,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face3;:H736,F;:H737,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H736,F;:H737,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H736,F", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face2;:H736,F;:H737,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H738,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face1;:H738,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H738,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face3;:H738,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:H738,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face6;:H738,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H738,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face4;:H738,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:H738,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face5;:H738,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H738,F", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face2;:H738,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F)", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H735,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:H735,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H735,E;:H737,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F)", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H736:8,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H736:8,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M2;FUS;:H736:8,E;:H737,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H736,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H736,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge3;:H736,E;:H737,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H736,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H736,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge2;:H736,E;:H737,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H736:7,E;:H737,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H736:7,E", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H736:7,E;:H737,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Edge1;:H738,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge2;:H738,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Edge3;:H738,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge4;:H738,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Edge9;:H738,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Edge5;:H738,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Edge10;:H738,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge12;:H738,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge6;:H738,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge11;:H738,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge7;:H738,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H738,E", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Edge8;:H738,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F)", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H735,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8;:H735,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H735,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F)", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H736,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H736,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex2;:H736,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H736,V;:H737,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H736,V", + "object": "Fuse21", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder21", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex1;:H736,V;:H737,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Vertex1;:H738,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Vertex2;:H738,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Vertex3;:H738,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Vertex4;:H738,V", + "mappedStringIds": [], + "name": "Vertex16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex17", + "indexedStringIds": [], + "mappedName": "Vertex6;:H738,V", + "mappedStringIds": [], + "name": "Vertex17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex18", + "indexedStringIds": [], + "mappedName": "Vertex5;:H738,V", + "mappedStringIds": [], + "name": "Vertex18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex19", + "indexedStringIds": [], + "mappedName": "Vertex7;:H738,V", + "mappedStringIds": [], + "name": "Vertex19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H738,V", + "object": "CompositeCut21", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox21", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex20", + "indexedStringIds": [], + "mappedName": "Vertex8;:H738,V", + "mappedStringIds": [], + "name": "Vertex20" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 66, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 66, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H735,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H735,F;:H737,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut21:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:H735,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face1;:H735,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face1", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face1", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H735,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H735,F;:H737,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut21:face:1", + "sourceRefs": [ + { + "mappedName": "Face3;:H735,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face3;:H735,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face3", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face3", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H735:7,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H735:7,F;:H737,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut21:face:2", + "sourceRefs": [ + { + "mappedName": "Face6;:M;FUS;:H735:7,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face6;:M;FUS;:H735:7,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face6", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face6", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H735,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H735,F;:H737,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut21:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H735,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face4;:H735,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face4", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face4", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H735:7,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H735:7,F;:H737,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "CompositeCut21:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;FUS;:H735:7,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face5;:M;FUS;:H735:7,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face5", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face5", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H735,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H735,F;:H737,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut21:face:5", + "sourceRefs": [ + { + "mappedName": "Face2;:H735,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face2;:H735,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face2", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face2", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H736:8,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H736:8,F;:H737,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut21:face:6", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;FUS;:H736:8,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face1;:M2;FUS;:H736:8,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H736:7,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H736:7,F;:H737,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "CompositeCut21:face:7", + "sourceRefs": [ + { + "mappedName": "Face1;:M;FUS;:H736:7,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face1;:M;FUS;:H736:7,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H736,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face3;:H736,F;:H737,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut21:face:8", + "sourceRefs": [ + { + "mappedName": "Face3;:H736,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face3;:H736,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face3", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face3", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H736,F;:H737,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face2;:H736,F;:H737,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "CompositeCut21:face:9", + "sourceRefs": [ + { + "mappedName": "Face2;:H736,F", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face2;:H736,F", + "stageId": "Fuse21" + }, + { + "mappedName": "Face2", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Face2", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H738,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face1;:H738,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut21:face:10", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Face1", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H738,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face3;:H738,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut21:face:11", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Face3", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:H738,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face6;:H738,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut21:face:12", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Face6", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H738,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face4;:H738,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "CompositeCut21:face:13", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Face4", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:H738,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face5;:H738,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "CompositeCut21:face:14", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Face5", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H738,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face2;:H738,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut21:face:15", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Face2", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut21:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge1;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge1", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge1", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut21:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge2;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge2", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge2", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut21:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge3;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge3", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge3", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut21:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge4;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge4", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge4", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut21:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge9;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge9", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge9", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut21:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge5;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge5", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge5", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut21:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge10;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge10", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge10", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "CompositeCut21:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge12;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge12", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge12", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut21:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge6;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge6", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge6", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut21:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face6;:G2(Face1;K-2;:H736:4,F);FUS;:H735:1d,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Face6;:G2(Face1;K-2;:H736:4,F)", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face6;:G2(Face1;K-2;:H736:4,F)", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut21:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge11;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge11", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge11", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut21:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge7;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge7", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge7", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H735,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H735,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut21:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:H735,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge8;:H735,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge8", + "objectId": "Box21", + "persistentId": "Box21:mapped:Edge8", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E;:H737,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut21:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Face5;:G2(Face1;K-1;:H736:4,F);FUS;:H735:1d,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Face5;:G2(Face1;K-1;:H736:4,F)", + "objectId": "Box21", + "persistentId": "Box21:mapped:Face5;:G2(Face1;K-1;:H736:4,F)", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M2;FUS;:H736:8,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M2;FUS;:H736:8,E;:H737,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut21:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1;:M2;FUS;:H736:8,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge1;:M2;FUS;:H736:8,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H736,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge3;:H736,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut21:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge3;:H736,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge3;:H736,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge3", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge3", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H736,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge2;:H736,E;:H737,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "CompositeCut21:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge2;:H736,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge2;:H736,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge2", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge2", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H736:7,E;:H737,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H736:7,E;:H737,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "CompositeCut21:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1;:M;FUS;:H736:7,E", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge1;:M;FUS;:H736:7,E", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Edge1;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut21:edge:18", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge1", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge2;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "CompositeCut21:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge2", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Edge3;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "CompositeCut21:edge:20", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge3", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge4;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "CompositeCut21:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge4", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Edge9;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "CompositeCut21:edge:22", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge9", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Edge5;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "CompositeCut21:edge:23", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge5", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Edge10;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 24, + "resultPersistentId": "CompositeCut21:edge:24", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge10", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge12;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 25, + "resultPersistentId": "CompositeCut21:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge12", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge6;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 26, + "resultPersistentId": "CompositeCut21:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge6", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge11;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 27, + "resultPersistentId": "CompositeCut21:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge11", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge7;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 28, + "resultPersistentId": "CompositeCut21:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge7", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H738,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Edge8;:H738,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 29, + "resultPersistentId": "CompositeCut21:edge:29", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Edge8", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut21:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex1;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex1", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex1", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut21:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex2;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex2", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex2", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut21:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex3;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex3", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex3", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut21:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex4;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex4", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex4", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut21:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex6;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex6", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex6", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut21:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex5;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex5", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex5", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut21:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex7;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex7", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex7", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V;:H737,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "CompositeCut21:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge1;:G2(Face6;K-1;:H735:4,F);FUS;:H736:1d,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge1;:G2(Face6;K-1;:H735:4,F)", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1;:G2(Face6;K-1;:H735:4,F)", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H735,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H735,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut21:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H735,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex8;:H735,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex8", + "objectId": "Box21", + "persistentId": "Box21:mapped:Vertex8", + "stageId": "Box21" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V;:H737,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut21:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Edge1;:G(Face5;K-1;:H735:4,F);FUS;:H736:1c,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Edge1;:G(Face5;K-1;:H735:4,F)", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Edge1;:G(Face5;K-1;:H735:4,F)", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H736,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex2;:H736,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut21:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H736,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex2;:H736,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex2", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Vertex2", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H736,V;:H737,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex1;:H736,V;:H737,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut21:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H736,V", + "objectId": "Fuse21", + "persistentId": "Fuse21:mapped:Vertex1;:H736,V", + "stageId": "Fuse21" + }, + { + "mappedName": "Vertex1", + "objectId": "Cylinder21", + "persistentId": "Cylinder21:mapped:Vertex1", + "stageId": "Cylinder21" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Vertex1;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut21:vertex:12", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex1", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Vertex2;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "CompositeCut21:vertex:13", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex2", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Vertex3;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "CompositeCut21:vertex:14", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex3", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Vertex4;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut21:vertex:15", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex4", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex17", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Vertex" + }, + "name": "Vertex6;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "CompositeCut21:vertex:16", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex6", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex18", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Vertex" + }, + "name": "Vertex5;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "CompositeCut21:vertex:17", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex5", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex19", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Vertex" + }, + "name": "Vertex7;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut21:vertex:18", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex7", + "stageId": "SecondBox21" + } + ] + }, + { + "indexedName": "Vertex20", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H738,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Vertex" + }, + "name": "Vertex8;:H738,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "CompositeCut21:vertex:19", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "SecondBox21", + "persistentId": "SecondBox21:mapped:Vertex8", + "stageId": "SecondBox21" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "CompositeCut21", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "CompositeCut21", + "status": "native-evidence" + }, + "shape": { + "edges": 30, + "faces": 16, + "solids": 1, + "valid": true, + "volume": 1049.097335529232 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "CompositeCut22.Shape.Map.txt": { + "sha256": "a87dedd0b974c80a28807b4bb8ffd242399d6777faacab7a99776aa10bba4729", + "text": "BeginElementMap v1\n2 PostfixCount 13\nEdge\nFace\nVertex\n;:H8d9,E;:H8db,E\n;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V;:H8db,V\n;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V;:H8db,V\n;:M;CUT;:H8da:7,E;:H8db,E\n;:H8d9,F;:H8db,F\n;:M;CUT;:H8da:7,F;:H8db,F\n;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E\n;:M;CUT;:H8d9:7,F;:H8db,F\n;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E\n;:H8d9,V;:H8db,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.c 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.a 0\n:1.1.7 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.8 0\n:2.3.8 0\n:2.6.b 0\n:2.4.8 0\n:2.5.b 0\n:2.2.8 0\n:2.1.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:3.1.d 0\n:3.2.d 0\n:3.3.d 0\n:3.4.d 0\n:3.6.d 0\n:3.5.d 0\n:3.7.d 0\n:1.1.6 0\n:3.8.d 0\n:1.1.5 0\n\nEndMap\n" + }, + "Cut22.Shape.Map.txt": { + "sha256": "821201287772684b868207eb363ed4149462963897f63f79208cf38d936ffedd", + "text": "BeginElementMap v1\n1 PostfixCount 13\nEdge\nFace\nVertex\n;:H8d9,E\n;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V\n;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V\n;:M;CUT;:H8da:7,E\n;:H8d9,F\n;:M;CUT;:H8da:7,F\n;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E\n;:M;CUT;:H8d9:7,F\n;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E\n;:H8d9,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.c 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.a 0\n:1.1.7 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.8 0\n:2.3.8 0\n:2.6.b 0\n:2.4.8 0\n:2.5.b 0\n:2.2.8 0\n:2.1.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:3.1.d 0\n:3.2.d 0\n:3.3.d 0\n:3.4.d 0\n:3.6.d 0\n:3.5.d 0\n:3.7.d 0\n:1.1.6 0\n:3.8.d 0\n:1.1.5 0\n\nEndMap\n" + } + }, + "finalObject": "CompositeCut22", + "id": "composite-02", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box22", + "name": "Box22", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box22:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box22:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box22:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box22:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box22:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box22:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box22:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box22:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box22:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box22:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box22:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box22:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box22:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box22:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box22:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box22:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box22:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box22:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box22:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box22:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box22:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box22:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box22:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box22:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box22:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box22:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box22", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box22", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder22", + "name": "Cylinder22", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder22:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder22:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder22:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder22:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder22:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder22:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder22:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder22:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder22", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder22", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 703.7167544041135 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Cut22.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Cut22", + "name": "Cut22", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H8d9,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H8d9,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H8d9:7,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H8d9:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H8d9,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H8d9:7,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H8d9:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H8d9,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H8da:7,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H8da:7,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H8d9,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H8d9,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H8d9,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H8d9,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H8d9,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H8d9,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H8d9,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H8d9,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H8d9,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F)", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H8d9,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H8d9,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H8d9,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F)", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H8da:7,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H8da:7,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F)", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H8d9,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F)", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H8d9,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H8d9,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut22:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face1", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H8d9,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H8d9,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut22:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face3", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H8d9:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H8d9:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut22:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face6", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H8d9,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H8d9,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut22:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face4", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H8d9:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H8d9:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Cut22:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face5", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H8d9,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H8d9,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut22:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face2", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H8da:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H8da:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Cut22:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Face1", + "stageId": "Cylinder22" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut22:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge1", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut22:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge2", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut22:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge3", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut22:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge4", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut22:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge9", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut22:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge5", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut22:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge10", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Cut22:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge12", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut22:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge6", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut22:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F)", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face6;:G2(Face1;K-2;:H8da:4,F)", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut22:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge11", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Cut22:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge7", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H8d9,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H8d9,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Cut22:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge8", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut22:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F)", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face5;:G2(Face1;K-1;:H8da:4,F)", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H8da:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H8da:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut22:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Edge1", + "stageId": "Cylinder22" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut22:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex1", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut22:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex2", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut22:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex3", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut22:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex4", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut22:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex6", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut22:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex5", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut22:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex7", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Cut22:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F)", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Edge1;:G2(Face6;K-1;:H8d9:4,F)", + "stageId": "Cylinder22" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H8d9,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H8d9,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut22:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex8", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut22:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F)", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Edge1;:G(Face5;K-1;:H8d9:4,F)", + "stageId": "Cylinder22" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Cut22", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cut22", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 497.34517542563293 + }, + "typeId": "Part::Cut" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "SecondBox22", + "name": "SecondBox22", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox22:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox22:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox22:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox22:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox22:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox22:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox22:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox22:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox22:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox22:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox22:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox22:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox22:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox22:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "SecondBox22:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "SecondBox22:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "SecondBox22:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "SecondBox22:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox22:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox22:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox22:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox22:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox22:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox22:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox22:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox22:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "SecondBox22", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "SecondBox22", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 63.999999999999986 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [ + "CompositeCut22.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "CompositeCut22", + "name": "CompositeCut22", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H8d9,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H8d9,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H8d9:7,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M;CUT;:H8d9:7,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H8d9:7,F;:H8db,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H8d9,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H8d9:7,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M;CUT;:H8d9:7,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H8d9:7,F;:H8db,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H8d9,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H8d9,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H8da:7,F;:H8db,F", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;CUT;:H8da:7,F", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H8da:7,F;:H8db,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F)", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H8d9,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:H8d9,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F)", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H8da:7,E;:H8db,E", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H8da:7,E", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H8da:7,E;:H8db,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F)", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H8d9,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8;:H8d9,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box22", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V;:H8db,V", + "object": "CompositeCut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "object": "Cut22", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F)", + "object": "Cylinder22", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V;:H8db,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H8d9,F;:H8db,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut22:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:H8d9,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face1;:H8d9,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face1", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face1", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H8d9,F;:H8db,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut22:face:1", + "sourceRefs": [ + { + "mappedName": "Face3;:H8d9,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face3;:H8d9,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face3", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face3", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H8d9:7,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H8d9:7,F;:H8db,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut22:face:2", + "sourceRefs": [ + { + "mappedName": "Face6;:M;CUT;:H8d9:7,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face6;:M;CUT;:H8d9:7,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face6", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face6", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H8d9,F;:H8db,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut22:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H8d9,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face4;:H8d9,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face4", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face4", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H8d9:7,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H8d9:7,F;:H8db,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "CompositeCut22:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;CUT;:H8d9:7,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face5;:M;CUT;:H8d9:7,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face5", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face5", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H8d9,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H8d9,F;:H8db,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut22:face:5", + "sourceRefs": [ + { + "mappedName": "Face2;:H8d9,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face2;:H8d9,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face2", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face2", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H8da:7,F;:H8db,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H8da:7,F;:H8db,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut22:face:6", + "sourceRefs": [ + { + "mappedName": "Face1;:M;CUT;:H8da:7,F", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face1;:M;CUT;:H8da:7,F", + "stageId": "Cut22" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Face1", + "stageId": "Cylinder22" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut22:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge1;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge1", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge1", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut22:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge2;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge2", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge2", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut22:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge3;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge3", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge3", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut22:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge4;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge4", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge4", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut22:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge9;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge9", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge9", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut22:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge5;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge5", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge5", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut22:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge10;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge10", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge10", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "CompositeCut22:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge12;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge12", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge12", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut22:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge6;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge6", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge6", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut22:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face6;:G2(Face1;K-2;:H8da:4,F);CUT;:H8d9:1d,E", + "stageId": "Cut22" + }, + { + "mappedName": "Face6;:G2(Face1;K-2;:H8da:4,F)", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face6;:G2(Face1;K-2;:H8da:4,F)", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut22:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge11;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge11", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge11", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut22:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge7;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge7", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge7", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H8d9,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H8d9,E;:H8db,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut22:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:H8d9,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge8;:H8d9,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge8", + "objectId": "Box22", + "persistentId": "Box22:mapped:Edge8", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E;:H8db,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut22:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Face5;:G2(Face1;K-1;:H8da:4,F);CUT;:H8d9:1d,E", + "stageId": "Cut22" + }, + { + "mappedName": "Face5;:G2(Face1;K-1;:H8da:4,F)", + "objectId": "Box22", + "persistentId": "Box22:mapped:Face5;:G2(Face1;K-1;:H8da:4,F)", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H8da:7,E;:H8db,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H8da:7,E;:H8db,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut22:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1;:M;CUT;:H8da:7,E", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge1;:M;CUT;:H8da:7,E", + "stageId": "Cut22" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Edge1", + "stageId": "Cylinder22" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut22:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex1;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex1", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex1", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut22:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex2;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex2", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex2", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut22:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex3;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex3", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex3", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut22:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex4;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex4", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex4", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut22:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex6;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex6", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex6", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut22:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex5;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex5", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex5", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut22:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex7;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex7", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex7", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V;:H8db,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "CompositeCut22:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge1;:G2(Face6;K-1;:H8d9:4,F);CUT;:H8da:1d,V", + "stageId": "Cut22" + }, + { + "mappedName": "Edge1;:G2(Face6;K-1;:H8d9:4,F)", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Edge1;:G2(Face6;K-1;:H8d9:4,F)", + "stageId": "Cylinder22" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H8d9,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H8d9,V;:H8db,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut22:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H8d9,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Vertex8;:H8d9,V", + "stageId": "Cut22" + }, + { + "mappedName": "Vertex8", + "objectId": "Box22", + "persistentId": "Box22:mapped:Vertex8", + "stageId": "Box22" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V;:H8db,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V;:H8db,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut22:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "objectId": "Cut22", + "persistentId": "Cut22:mapped:Edge1;:G(Face5;K-1;:H8d9:4,F);CUT;:H8da:1c,V", + "stageId": "Cut22" + }, + { + "mappedName": "Edge1;:G(Face5;K-1;:H8d9:4,F)", + "objectId": "Cylinder22", + "persistentId": "Cylinder22:mapped:Edge1;:G(Face5;K-1;:H8d9:4,F)", + "stageId": "Cylinder22" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "CompositeCut22", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "CompositeCut22", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 497.34517542563293 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "CompositeCut23.Shape.Map.txt": { + "sha256": "434917a7103340e2cc3e7fb9095ffd5aaf73aceffe4ba43dc054ddcd4f2915fb", + "text": "BeginElementMap v1\n2 PostfixCount 41\nEdge\nFace\nVertex\n;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V\n;:H4c3,E\n;:M2;FUS;:H4c0:8,E;:H4c2,E\n;:M;FUS;:H4c0:7,E;:H4c2,E\n;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V\n;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V\n;:H4c0,E;:H4c2,E\n;:M3;FUS;:H4c1:8,E;:H4c2,E\n;:M;FUS;:H4c1:7,E;:H4c2,E\n;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V\n;:H4c1,E;:H4c2,E\n;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V\n;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V\n;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V\n;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V\n;:H4c3,F\n;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F\n;:M2;FUS;:H4c1:8,F;:H4c2,F\n;:M;FUS;:H4c1:7,F;:H4c2,F\n;:H4c1,F;:H4c2,F\n;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F\n;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F\n;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F\n;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E\n;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E\n;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E\n;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E\n;:M2;FUS;:H4c0:8,F;:H4c2,F\n;:M3;FUS;:H4c0:8,F;:H4c2,F\n;:M4;FUS;:H4c0:8,F;:H4c2,F\n;:M;FUS;:H4c0:7,F;:H4c2,F\n;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E\n;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E\n;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E\n;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E\n;:H4c0,V;:H4c2,V\n;:H4c1,V;:H4c2,V\n;:H4c3,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 45\n0\n:1.2.7 0\n:2.6.24 0\n:1.a.7 0\n:1.2.6 0\n:1.3.a 0\n:1.4.6 0\n:1.4.7 0\n:1.1.a 0\n:2.6.26 0\n:2.6.25 0\n:2.6.23 0\n:1.1.b 0\n:1.3.e 0\n:1.9.7 0\n:1.9.6 0\n:1.5.a 0\n:1.a.6 0\n:1.c.7 0\n:1.b.7 0\n:1.c.6 0\n:1.7.a 0\n:1.b.6 0\n:2.5.1d 0\n:2.5.1c 0\n:1.6.6 0\n:1.6.7 0\n:2.5.1b 0\n:1.8.7 0\n:1.8.6 0\n:2.5.1e 0\n:1.2.e 0\n:1.1.c 0\n:1.1.5 0\n:1.2.5 0\n:1.3.5 0\n:1.4.5 0\n:1.9.5 0\n:1.5.5 0\n:1.a.5 0\n:1.c.5 0\n:1.6.5 0\n:1.b.5 0\n:1.7.5 0\n:1.8.5 0\n\nFace\n\nChildCount 0\n\nNameCount 23\n0\n:2.6.22 0\n:2.1.14 0\n:2.1.15 0\n:2.3.19 0\n:2.6.1f 0\n:2.4.1a 0\n:2.5.1f 0\n:2.5.22 0\n:2.6.21 0\n:2.6.20 0\n:2.3.17 0\n:2.5.20 0\n:2.2.18 0\n:2.5.21 0\n:2.1.16 0\n:2.2.17 0\n:2.1.13 0\n:2.3.13 0\n:2.6.13 0\n:2.4.13 0\n:2.5.13 0\n:2.2.13 0\n\nVertex\n\nChildCount 0\n\nNameCount 27\n0\n:3.1.27 0\n:1.2.d 0\n:1.a.4 0\n:3.3.27 0\n:3.4.27 0\n:1.4.f 0\n:3.2.27 0\n:1.c.9 0\n:1.6.10 0\n:3.2.28 0\n:1.9.12 0\n:3.6.27 0\n:3.5.27 0\n:1.b.8 0\n:3.7.27 0\n:3.8.27 0\n:1.8.11 0\n:3.1.28 0\n:3.1.29 0\n:3.2.29 0\n:3.3.29 0\n:3.4.29 0\n:3.6.29 0\n:3.5.29 0\n:3.7.29 0\n:3.8.29 0\n\nEndMap\n" + }, + "Fuse23.Shape.Map.txt": { + "sha256": "89d0cb03fd646d02d3d47c076b45e55f57f272a8155b741d6b28a5bd88ed8da0", + "text": "BeginElementMap v1\n1 PostfixCount 38\nEdge\nFace\nVertex\n;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V\n;:M2;FUS;:H4c0:8,E\n;:M;FUS;:H4c0:7,E\n;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V\n;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V\n;:H4c0,E\n;:M3;FUS;:H4c1:8,E\n;:M;FUS;:H4c1:7,E\n;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V\n;:H4c1,E\n;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V\n;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V\n;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V\n;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V\n;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F\n;:M2;FUS;:H4c1:8,F\n;:M;FUS;:H4c1:7,F\n;:H4c1,F\n;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F\n;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F\n;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F\n;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E\n;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E\n;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E\n;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E\n;:M2;FUS;:H4c0:8,F\n;:M3;FUS;:H4c0:8,F\n;:M4;FUS;:H4c0:8,F\n;:M;FUS;:H4c0:7,F\n;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E\n;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E\n;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E\n;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E\n;:H4c0,V\n;:H4c1,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 33\n0\n:1.2.6 0\n:2.6.22 0\n:1.a.6 0\n:2.6.24 0\n:2.6.23 0\n:2.6.21 0\n:1.1.a 0\n:1.3.d 0\n:1.2.5 0\n:1.c.6 0\n:1.c.5 0\n:1.6.5 0\n:1.6.6 0\n:1.a.5 0\n:1.3.9 0\n:1.4.5 0\n:1.4.6 0\n:1.1.9 0\n:2.5.1a 0\n:1.9.6 0\n:1.2.d 0\n:1.1.b 0\n:2.5.19 0\n:2.5.1b 0\n:2.5.1c 0\n:1.b.6 0\n:1.8.6 0\n:1.9.5 0\n:1.b.5 0\n:1.8.5 0\n:1.5.9 0\n:1.7.9 0\n\nFace\n\nChildCount 0\n\nNameCount 17\n0\n:2.6.20 0\n:2.1.13 0\n:2.6.1d 0\n:2.6.1f 0\n:2.6.1e 0\n:2.3.15 0\n:2.1.12 0\n:2.5.20 0\n:2.1.14 0\n:2.5.1d 0\n:2.2.15 0\n:2.5.1e 0\n:2.5.1f 0\n:2.3.17 0\n:2.4.18 0\n:2.2.16 0\n\nVertex\n\nChildCount 0\n\nNameCount 19\n0\n:3.1.25 0\n:1.2.c 0\n:1.a.4 0\n:1.c.8 0\n:1.6.f 0\n:3.2.26 0\n:3.3.25 0\n:3.7.25 0\n:3.5.25 0\n:3.4.25 0\n:1.4.e 0\n:3.2.25 0\n:1.9.11 0\n:3.1.26 0\n:1.8.10 0\n:1.b.7 0\n:3.6.25 0\n:3.8.25 0\n\nEndMap\n" + } + }, + "finalObject": "CompositeCut23", + "id": "composite-03", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box23", + "name": "Box23", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box23:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box23:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box23:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box23:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box23:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box23:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box23:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box23:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box23:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box23:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box23:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box23:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box23:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box23:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box23:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box23:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box23:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box23:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box23:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box23:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box23:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box23:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box23:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box23:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box23:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box23:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box23", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box23", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder23", + "name": "Cylinder23", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder23:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder23:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder23:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder23:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder23:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder23:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder23:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder23:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder23", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder23", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 1099.5574287564275 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Fuse23.Shape.Map.txt" + ], + "elementMapSize": 66, + "elementMapVersion": "15.70200.5", + "label": "Fuse23", + "name": "Fuse23", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H4c0:7,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H4c0:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c1:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H4c1:8,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M2;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M2;FUS;:H4c0:8,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M4;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face6;:M4;FUS;:H4c0:8,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M3;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face6;:M3;FUS;:H4c0:8,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H4c1,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:H4c1,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H4c0:7,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H4c0:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H4c1:7,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H4c1:7,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M2;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face5;:M2;FUS;:H4c0:8,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H4c1,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face2;:H4c1,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M3;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face5;:M3;FUS;:H4c0:8,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M4;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face5;:M4;FUS;:H4c0:8,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H4c1,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge3;:H4c1,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge12;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge6;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge3;:H4c0,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:H4c0,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H4c1,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Edge2;:H4c1,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H4c1:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H4c1:7,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge11;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge8;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge31", + "indexedStringIds": [], + "mappedName": "Edge5;:H4c0,E", + "mappedStringIds": [], + "name": "Edge31" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge32", + "indexedStringIds": [], + "mappedName": "Edge7;:H4c0,E", + "mappedStringIds": [], + "name": "Edge32" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H4c1,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex2;:H4c1,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex3;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Vertex7;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex5;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex4;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex2;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H4c1,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Vertex1;:H4c1,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "name": "Vertex16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex17", + "indexedStringIds": [], + "mappedName": "Vertex6;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex18", + "indexedStringIds": [], + "mappedName": "Vertex8;:H4c0,V", + "mappedStringIds": [], + "name": "Vertex18" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 66, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 66, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H4c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H4c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fuse23:face:0", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H4c1:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H4c1:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Fuse23:face:1", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M2;FUS;:H4c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M2;FUS;:H4c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse23:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M4;FUS;:H4c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face6;:M4;FUS;:H4c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Fuse23:face:3", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M3;FUS;:H4c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face6;:M3;FUS;:H4c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fuse23:face:4", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H4c1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:H4c1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse23:face:5", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face3", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse23:face:6", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H4c0:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H4c0:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Fuse23:face:7", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H4c1:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H4c1:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Fuse23:face:8", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M2;FUS;:H4c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face5;:M2;FUS;:H4c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Fuse23:face:9", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H4c1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face2;:H4c1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse23:face:10", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face2", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M3;FUS;:H4c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face5;:M3;FUS;:H4c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Fuse23:face:11", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M4;FUS;:H4c0:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face5;:M4;FUS;:H4c0:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Fuse23:face:12", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Fuse23:face:13", + "sourceRefs": [ + { + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Fuse23:face:14", + "sourceRefs": [ + { + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Fuse23:face:15", + "sourceRefs": [ + { + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fuse23:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge2", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Fuse23:edge:1", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G2(Face1;K-15;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge10;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse23:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge10", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Fuse23:edge:3", + "sourceRefs": [ + { + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G4(Face1;K-17;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fuse23:edge:4", + "sourceRefs": [ + { + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G3(Face1;K-16;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Fuse23:edge:5", + "sourceRefs": [ + { + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G(Face1;K-14;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge1;:M3;FUS;:H4c1:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse23:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H4c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge3;:H4c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse23:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge3", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge2;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Fuse23:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge2", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge12;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Fuse23:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge12", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge12;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "Fuse23:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge12", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge6;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Fuse23:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge6;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Fuse23:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge10;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Fuse23:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge10", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H4c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge3;:H4c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Fuse23:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge3", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge4;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Fuse23:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge4", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge4;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Fuse23:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge4", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H4c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:H4c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Fuse23:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge1", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 18, + "resultPersistentId": "Fuse23:edge:18", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G2(Face1;K-11;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge9;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Fuse23:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge9", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H4c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Edge2;:H4c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "Fuse23:edge:20", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge2", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H4c1:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H4c1:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Fuse23:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 22, + "resultPersistentId": "Fuse23:edge:22", + "sourceRefs": [ + { + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G(Face1;K-10;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 23, + "resultPersistentId": "Fuse23:edge:23", + "sourceRefs": [ + { + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G3(Face1;K-12;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 24, + "resultPersistentId": "Fuse23:edge:24", + "sourceRefs": [ + { + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G4(Face1;K-13;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge11;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 25, + "resultPersistentId": "Fuse23:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge11", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M;FUS;:H4c0:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge8;:M;FUS;:H4c0:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 26, + "resultPersistentId": "Fuse23:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge8", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge9;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 27, + "resultPersistentId": "Fuse23:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge9", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge11;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 28, + "resultPersistentId": "Fuse23:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge11", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Edge8;:M2;FUS;:H4c0:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 29, + "resultPersistentId": "Fuse23:edge:29", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge8", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge31", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H4c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 31, + "type": "Edge" + }, + "name": "Edge5;:H4c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 30, + "resultPersistentId": "Fuse23:edge:30", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge32", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H4c0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 32, + "type": "Edge" + }, + "name": "Edge7;:H4c0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 31, + "resultPersistentId": "Fuse23:edge:31", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge7", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse23:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex1", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Fuse23:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge2;:G(Face1;K-1;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Fuse23:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge10;:G(Face1;K-4;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 3, + "resultPersistentId": "Fuse23:vertex:3", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge12;:G(Face1;K-6;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fuse23:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge6;:G(Edge1;K-1;:H4c1:4,E)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H4c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex2;:H4c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse23:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Vertex2", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex3;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse23:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex3", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex7;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse23:vertex:7", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex7", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex5;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse23:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex4;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fuse23:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex4", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "Fuse23:vertex:10", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge4;:G(Face1;K-2;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex2;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse23:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex2", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Fuse23:vertex:12", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge9;:G(Face1;K-3;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H4c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Vertex1;:H4c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Fuse23:vertex:13", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Vertex1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 14, + "resultPersistentId": "Fuse23:vertex:14", + "sourceRefs": [ + { + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge8;:G(Edge1;K-2;:H4c1:4,E)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "Fuse23:vertex:15", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge11;:G(Face1;K-5;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex17", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Vertex" + }, + "name": "Vertex6;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Fuse23:vertex:16", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex18", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H4c0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Vertex" + }, + "name": "Vertex8;:H4c0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "Fuse23:vertex:17", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex8", + "stageId": "Box23" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fuse23", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fuse23", + "status": "native-evidence" + }, + "shape": { + "edges": 32, + "faces": 16, + "solids": 1, + "valid": true, + "volume": 1314.159265358979 + }, + "typeId": "Part::Fuse" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "SecondBox23", + "name": "SecondBox23", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox23:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox23:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox23:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox23:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox23:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox23:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox23:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox23:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox23:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox23:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox23:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox23:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox23:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox23:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "SecondBox23:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "SecondBox23:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "SecondBox23:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "SecondBox23:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox23:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox23:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox23:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox23:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox23:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox23:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox23:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox23:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "SecondBox23", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "SecondBox23", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 63.999999999999986 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [ + "CompositeCut23.Shape.Map.txt" + ], + "elementMapSize": 92, + "elementMapVersion": "15.70200.5", + "label": "CompositeCut23", + "name": "CompositeCut23", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H4c0:7,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M;FUS;:H4c0:7,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H4c0:7,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c1:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H4c1:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H4c1:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M2;FUS;:H4c0:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M2;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face6;:M2;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M2;FUS;:H4c0:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M2;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face5;:M2;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H4c0:7,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M;FUS;:H4c0:7,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H4c0:7,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M4;FUS;:H4c0:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M4;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face6;:M4;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M3;FUS;:H4c0:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M3;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face6;:M3;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H4c1,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H4c1,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face3;:H4c1,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M3;FUS;:H4c0:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M3;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face5;:M3;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M4;FUS;:H4c0:8,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M4;FUS;:H4c0:8,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face5;:M4;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H4c1:7,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;FUS;:H4c1:7,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H4c1:7,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H4c1,F;:H4c2,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H4c1,F", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face2;:H4c1,F;:H4c2,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H4c3,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face17", + "indexedStringIds": [], + "mappedName": "Face1;:H4c3,F", + "mappedStringIds": [], + "name": "Face17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H4c3,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face18", + "indexedStringIds": [], + "mappedName": "Face3;:H4c3,F", + "mappedStringIds": [], + "name": "Face18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:H4c3,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face19", + "indexedStringIds": [], + "mappedName": "Face6;:H4c3,F", + "mappedStringIds": [], + "name": "Face19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H4c3,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face20", + "indexedStringIds": [], + "mappedName": "Face4;:H4c3,F", + "mappedStringIds": [], + "name": "Face20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:H4c3,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face21", + "indexedStringIds": [], + "mappedName": "Face5;:H4c3,F", + "mappedStringIds": [], + "name": "Face21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H4c3,F", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Face22", + "indexedStringIds": [], + "mappedName": "Face2;:H4c3,F", + "mappedStringIds": [], + "name": "Face22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H4c0,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge3;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H4c0,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge1;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H4c1,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H4c1,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge3;:H4c1,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H4c0,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge5;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge12;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Edge11;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H4c0,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7;:H4c0,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Edge7;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge6;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M;FUS;:H4c0:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:M;FUS;:H4c0:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge8;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H4c1,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H4c1,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge31", + "indexedStringIds": [], + "mappedName": "Edge2;:H4c1,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge31" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H4c1:7,E;:H4c2,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H4c1:7,E", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge32", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H4c1:7,E;:H4c2,E", + "mappedStringIds": [], + "name": "Edge32" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge33", + "indexedStringIds": [], + "mappedName": "Edge1;:H4c3,E", + "mappedStringIds": [], + "name": "Edge33" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge34", + "indexedStringIds": [], + "mappedName": "Edge2;:H4c3,E", + "mappedStringIds": [], + "name": "Edge34" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge35", + "indexedStringIds": [], + "mappedName": "Edge3;:H4c3,E", + "mappedStringIds": [], + "name": "Edge35" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge36", + "indexedStringIds": [], + "mappedName": "Edge4;:H4c3,E", + "mappedStringIds": [], + "name": "Edge36" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge37", + "indexedStringIds": [], + "mappedName": "Edge9;:H4c3,E", + "mappedStringIds": [], + "name": "Edge37" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge38", + "indexedStringIds": [], + "mappedName": "Edge5;:H4c3,E", + "mappedStringIds": [], + "name": "Edge38" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge39", + "indexedStringIds": [], + "mappedName": "Edge10;:H4c3,E", + "mappedStringIds": [], + "name": "Edge39" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge40", + "indexedStringIds": [], + "mappedName": "Edge12;:H4c3,E", + "mappedStringIds": [], + "name": "Edge40" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge41", + "indexedStringIds": [], + "mappedName": "Edge6;:H4c3,E", + "mappedStringIds": [], + "name": "Edge41" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge42", + "indexedStringIds": [], + "mappedName": "Edge11;:H4c3,E", + "mappedStringIds": [], + "name": "Edge42" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge43", + "indexedStringIds": [], + "mappedName": "Edge7;:H4c3,E", + "mappedStringIds": [], + "name": "Edge43" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H4c3,E", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge44", + "indexedStringIds": [], + "mappedName": "Edge8;:H4c3,E", + "mappedStringIds": [], + "name": "Edge44" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex3;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex4;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex2;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H4c1,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H4c1,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex2;:H4c1,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex6;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Vertex5;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Vertex7;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H4c0,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8;:H4c0,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Vertex8;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E)", + "object": "Box23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex17", + "indexedStringIds": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H4c1,V;:H4c2,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H4c1,V", + "object": "Fuse23", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder23", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex18", + "indexedStringIds": [], + "mappedName": "Vertex1;:H4c1,V;:H4c2,V", + "mappedStringIds": [], + "name": "Vertex18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex19", + "indexedStringIds": [], + "mappedName": "Vertex1;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex20", + "indexedStringIds": [], + "mappedName": "Vertex2;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex21", + "indexedStringIds": [], + "mappedName": "Vertex3;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex22", + "indexedStringIds": [], + "mappedName": "Vertex4;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex23", + "indexedStringIds": [], + "mappedName": "Vertex6;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex24", + "indexedStringIds": [], + "mappedName": "Vertex5;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex25", + "indexedStringIds": [], + "mappedName": "Vertex7;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H4c3,V", + "object": "CompositeCut23", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox23", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex26", + "indexedStringIds": [], + "mappedName": "Vertex8;:H4c3,V", + "mappedStringIds": [], + "name": "Vertex26" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 92, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 92, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H4c0:7,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H4c0:7,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "CompositeCut23:face:0", + "sourceRefs": [ + { + "mappedName": "Face6;:M;FUS;:H4c0:7,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:M;FUS;:H4c0:7,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "CompositeCut23:face:1", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face1;:M2;FUS;:H4c0:8,F;:M(Face1;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H4c1:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H4c1:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut23:face:2", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;FUS;:H4c1:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face1;:M2;FUS;:H4c1:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "CompositeCut23:face:3", + "sourceRefs": [ + { + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face3;:M2;FUS;:H4c0:8,F;:M(Face3;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M2;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face6;:M2;FUS;:H4c0:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "CompositeCut23:face:4", + "sourceRefs": [ + { + "mappedName": "Face6;:M2;FUS;:H4c0:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:M2;FUS;:H4c0:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "CompositeCut23:face:5", + "sourceRefs": [ + { + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face4;:M2;FUS;:H4c0:8,F;:M(Face4;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M2;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face5;:M2;FUS;:H4c0:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut23:face:6", + "sourceRefs": [ + { + "mappedName": "Face5;:M2;FUS;:H4c0:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:M2;FUS;:H4c0:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H4c0:7,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H4c0:7,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "CompositeCut23:face:7", + "sourceRefs": [ + { + "mappedName": "Face5;:M;FUS;:H4c0:7,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:M;FUS;:H4c0:7,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M4;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face6;:M4;FUS;:H4c0:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "CompositeCut23:face:8", + "sourceRefs": [ + { + "mappedName": "Face6;:M4;FUS;:H4c0:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:M4;FUS;:H4c0:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M3;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face6;:M3;FUS;:H4c0:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "CompositeCut23:face:9", + "sourceRefs": [ + { + "mappedName": "Face6;:M3;FUS;:H4c0:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:M3;FUS;:H4c0:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H4c1,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face3;:H4c1,F;:H4c2,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut23:face:10", + "sourceRefs": [ + { + "mappedName": "Face3;:H4c1,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face3;:H4c1,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face3", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face3", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M3;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face5;:M3;FUS;:H4c0:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "CompositeCut23:face:11", + "sourceRefs": [ + { + "mappedName": "Face5;:M3;FUS;:H4c0:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:M3;FUS;:H4c0:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "CompositeCut23:face:12", + "sourceRefs": [ + { + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F);RFI;:H4c0:1f,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face2;:M2;FUS;:H4c0:8,F;:M(Face2;:M;FUS;:H4c0:7,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M4;FUS;:H4c0:8,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face5;:M4;FUS;:H4c0:8,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "CompositeCut23:face:13", + "sourceRefs": [ + { + "mappedName": "Face5;:M4;FUS;:H4c0:8,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:M4;FUS;:H4c0:8,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H4c1:7,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H4c1:7,F;:H4c2,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut23:face:14", + "sourceRefs": [ + { + "mappedName": "Face1;:M;FUS;:H4c1:7,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face1;:M;FUS;:H4c1:7,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H4c1,F;:H4c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face2;:H4c1,F;:H4c2,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut23:face:15", + "sourceRefs": [ + { + "mappedName": "Face2;:H4c1,F", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face2;:H4c1,F", + "stageId": "Fuse23" + }, + { + "mappedName": "Face2", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Face2", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Face17", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H4c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Face" + }, + "name": "Face1;:H4c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "CompositeCut23:face:16", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Face1", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Face18", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H4c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Face" + }, + "name": "Face3;:H4c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "CompositeCut23:face:17", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Face3", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Face19", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:H4c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Face" + }, + "name": "Face6;:H4c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut23:face:18", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Face6", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Face20", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H4c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Face" + }, + "name": "Face4;:H4c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "CompositeCut23:face:19", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Face4", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Face21", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:H4c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Face" + }, + "name": "Face5;:H4c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "CompositeCut23:face:20", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Face5", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Face22", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H4c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Face" + }, + "name": "Face2;:H4c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "CompositeCut23:face:21", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Face2", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "CompositeCut23:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge2;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge2", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge2", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "CompositeCut23:edge:1", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:G2(Face1;K-15;:H4c1:5,F);FUS;:H4c0:1e,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6;:G2(Face1;K-15;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G2(Face1;K-15;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge10;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut23:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge10;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge10;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge10", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge10", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge2;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "CompositeCut23:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge2;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge2;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge2", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge2", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge3;:H4c0,E;:H4c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut23:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge3;:H4c0,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge3;:H4c0,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge3", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge3", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge4;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "CompositeCut23:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge4;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge4;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge4", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge4", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge4;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut23:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge4;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge4;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge4", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge4", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge1;:H4c0,E;:H4c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "CompositeCut23:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:H4c0,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge1;:H4c0,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge1", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge1", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "CompositeCut23:edge:8", + "sourceRefs": [ + { + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:G4(Face1;K-17;:H4c1:5,F);FUS;:H4c0:1e,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6;:G4(Face1;K-17;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G4(Face1;K-17;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut23:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:G3(Face1;K-16;:H4c1:5,F);FUS;:H4c0:1e,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6;:G3(Face1;K-16;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G3(Face1;K-16;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "CompositeCut23:edge:10", + "sourceRefs": [ + { + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face6;:G(Face1;K-14;:H4c1:5,F);FUS;:H4c0:1d,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face6;:G(Face1;K-14;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face6;:G(Face1;K-14;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge1;:M3;FUS;:H4c1:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "CompositeCut23:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge1;:M3;FUS;:H4c1:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge1;:M3;FUS;:H4c1:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H4c1,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge3;:H4c1,E;:H4c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut23:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge3;:H4c1,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge3;:H4c1,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge3", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge3", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge9;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "CompositeCut23:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge9;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge9;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge9", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge9", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge9;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut23:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge9;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge9;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge9", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge9", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge5;:H4c0,E;:H4c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut23:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge5;:H4c0,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge5;:H4c0,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge10;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "CompositeCut23:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge10;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge10;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge10", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge10", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge12;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "CompositeCut23:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge12;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge12;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge12", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge12", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Edge11;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "CompositeCut23:edge:18", + "sourceRefs": [ + { + "mappedName": "Edge11;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge11;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge11", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge11", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge12;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "CompositeCut23:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge12;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge12;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge12", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge12", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H4c0,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Edge7;:H4c0,E;:H4c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "CompositeCut23:edge:20", + "sourceRefs": [ + { + "mappedName": "Edge7;:H4c0,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge7;:H4c0,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge7", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge7", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge11;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "CompositeCut23:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge11;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge11;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge11", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge11", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 22, + "resultPersistentId": "CompositeCut23:edge:22", + "sourceRefs": [ + { + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:G3(Face1;K-12;:H4c1:5,F);FUS;:H4c0:1e,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5;:G3(Face1;K-12;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G3(Face1;K-12;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 23, + "resultPersistentId": "CompositeCut23:edge:23", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:G2(Face1;K-11;:H4c1:5,F);FUS;:H4c0:1e,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5;:G2(Face1;K-11;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G2(Face1;K-11;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Edge6;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 24, + "resultPersistentId": "CompositeCut23:edge:24", + "sourceRefs": [ + { + "mappedName": "Edge6;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge6;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge6;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 25, + "resultPersistentId": "CompositeCut23:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge6;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge6;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 26, + "resultPersistentId": "CompositeCut23:edge:26", + "sourceRefs": [ + { + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:G(Face1;K-10;:H4c1:5,F);FUS;:H4c0:1d,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5;:G(Face1;K-10;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G(Face1;K-10;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M;FUS;:H4c0:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge8;:M;FUS;:H4c0:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 27, + "resultPersistentId": "CompositeCut23:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge8;:M;FUS;:H4c0:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge8;:M;FUS;:H4c0:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge8", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge8", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge8;:M2;FUS;:H4c0:8,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 28, + "resultPersistentId": "CompositeCut23:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge8;:M2;FUS;:H4c0:8,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge8;:M2;FUS;:H4c0:8,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge8", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge8", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E;:H4c2,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 29, + "resultPersistentId": "CompositeCut23:edge:29", + "sourceRefs": [ + { + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Face5;:G4(Face1;K-13;:H4c1:5,F);FUS;:H4c0:1e,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Face5;:G4(Face1;K-13;:H4c1:5,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Face5;:G4(Face1;K-13;:H4c1:5,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Edge31", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H4c1,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 31, + "type": "Edge" + }, + "name": "Edge2;:H4c1,E;:H4c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 30, + "resultPersistentId": "CompositeCut23:edge:30", + "sourceRefs": [ + { + "mappedName": "Edge2;:H4c1,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge2;:H4c1,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge2", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge2", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge32", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H4c1:7,E;:H4c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 32, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H4c1:7,E;:H4c2,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 31, + "resultPersistentId": "CompositeCut23:edge:31", + "sourceRefs": [ + { + "mappedName": "Edge1;:M;FUS;:H4c1:7,E", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge1;:M;FUS;:H4c1:7,E", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Edge1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Edge33", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 33, + "type": "Edge" + }, + "name": "Edge1;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 32, + "resultPersistentId": "CompositeCut23:edge:32", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge1", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge34", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 34, + "type": "Edge" + }, + "name": "Edge2;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 33, + "resultPersistentId": "CompositeCut23:edge:33", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge2", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge35", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 35, + "type": "Edge" + }, + "name": "Edge3;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 34, + "resultPersistentId": "CompositeCut23:edge:34", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge3", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge36", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 36, + "type": "Edge" + }, + "name": "Edge4;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 35, + "resultPersistentId": "CompositeCut23:edge:35", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge4", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge37", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 37, + "type": "Edge" + }, + "name": "Edge9;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 36, + "resultPersistentId": "CompositeCut23:edge:36", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge9", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge38", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 38, + "type": "Edge" + }, + "name": "Edge5;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 37, + "resultPersistentId": "CompositeCut23:edge:37", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge5", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge39", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 39, + "type": "Edge" + }, + "name": "Edge10;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 38, + "resultPersistentId": "CompositeCut23:edge:38", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge10", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge40", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 40, + "type": "Edge" + }, + "name": "Edge12;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 39, + "resultPersistentId": "CompositeCut23:edge:39", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge12", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge41", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 41, + "type": "Edge" + }, + "name": "Edge6;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 40, + "resultPersistentId": "CompositeCut23:edge:40", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge6", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge42", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 42, + "type": "Edge" + }, + "name": "Edge11;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 41, + "resultPersistentId": "CompositeCut23:edge:41", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge11", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge43", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 43, + "type": "Edge" + }, + "name": "Edge7;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 42, + "resultPersistentId": "CompositeCut23:edge:42", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge7", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Edge44", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H4c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 44, + "type": "Edge" + }, + "name": "Edge8;:H4c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 43, + "resultPersistentId": "CompositeCut23:edge:43", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Edge8", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut23:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex1;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex1", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex1", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "CompositeCut23:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge2;:G(Face1;K-1;:H4c1:4,F);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge2;:G(Face1;K-1;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge2;:G(Face1;K-1;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "CompositeCut23:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge10;:G(Face1;K-4;:H4c1:4,F);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge10;:G(Face1;K-4;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge10;:G(Face1;K-4;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex3;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut23:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex3;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex3", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex3", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex4;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut23:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex4;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex4", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex4", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "CompositeCut23:vertex:5", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge4;:G(Face1;K-2;:H4c1:4,F);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge4;:G(Face1;K-2;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge4;:G(Face1;K-2;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex2;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut23:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex2;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex2", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex2", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "CompositeCut23:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge12;:G(Face1;K-6;:H4c1:4,F);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge12;:G(Face1;K-6;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge12;:G(Face1;K-6;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "CompositeCut23:vertex:8", + "sourceRefs": [ + { + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge6;:G(Edge1;K-1;:H4c1:4,E);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge6;:G(Edge1;K-1;:H4c1:4,E)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge6;:G(Edge1;K-1;:H4c1:4,E)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H4c1,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex2;:H4c1,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "CompositeCut23:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H4c1,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex2;:H4c1,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex2", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Vertex2", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 10, + "resultPersistentId": "CompositeCut23:vertex:10", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge9;:G(Face1;K-3;:H4c1:4,F);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge9;:G(Face1;K-3;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge9;:G(Face1;K-3;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex6;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut23:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex6;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex6", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex6", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Vertex5;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut23:vertex:12", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex5;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex5", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex5", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut23:vertex:13", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge11;:G(Face1;K-5;:H4c1:4,F);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge11;:G(Face1;K-5;:H4c1:4,F)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge11;:G(Face1;K-5;:H4c1:4,F)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Vertex7;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "CompositeCut23:vertex:14", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex7;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex7", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex7", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H4c0,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Vertex8;:H4c0,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut23:vertex:15", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H4c0,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex8;:H4c0,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex8", + "objectId": "Box23", + "persistentId": "Box23:mapped:Vertex8", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex17", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Vertex" + }, + "name": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V;:H4c2,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 16, + "resultPersistentId": "CompositeCut23:vertex:16", + "sourceRefs": [ + { + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Edge8;:G(Edge1;K-2;:H4c1:4,E);FUS;:H4c0:1c,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Edge8;:G(Edge1;K-2;:H4c1:4,E)", + "objectId": "Box23", + "persistentId": "Box23:mapped:Edge8;:G(Edge1;K-2;:H4c1:4,E)", + "stageId": "Box23" + } + ] + }, + { + "indexedName": "Vertex18", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H4c1,V;:H4c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Vertex" + }, + "name": "Vertex1;:H4c1,V;:H4c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "CompositeCut23:vertex:17", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H4c1,V", + "objectId": "Fuse23", + "persistentId": "Fuse23:mapped:Vertex1;:H4c1,V", + "stageId": "Fuse23" + }, + { + "mappedName": "Vertex1", + "objectId": "Cylinder23", + "persistentId": "Cylinder23:mapped:Vertex1", + "stageId": "Cylinder23" + } + ] + }, + { + "indexedName": "Vertex19", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Vertex" + }, + "name": "Vertex1;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut23:vertex:18", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex1", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex20", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Vertex" + }, + "name": "Vertex2;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "CompositeCut23:vertex:19", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex2", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex21", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Vertex" + }, + "name": "Vertex3;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "CompositeCut23:vertex:20", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex3", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex22", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Vertex" + }, + "name": "Vertex4;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "CompositeCut23:vertex:21", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex4", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex23", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Vertex" + }, + "name": "Vertex6;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "CompositeCut23:vertex:22", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex6", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex24", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Vertex" + }, + "name": "Vertex5;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "CompositeCut23:vertex:23", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex5", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex25", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Vertex" + }, + "name": "Vertex7;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 24, + "resultPersistentId": "CompositeCut23:vertex:24", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex7", + "stageId": "SecondBox23" + } + ] + }, + { + "indexedName": "Vertex26", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H4c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Vertex" + }, + "name": "Vertex8;:H4c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 25, + "resultPersistentId": "CompositeCut23:vertex:25", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "SecondBox23", + "persistentId": "SecondBox23:mapped:Vertex8", + "stageId": "SecondBox23" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "CompositeCut23", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "CompositeCut23", + "status": "native-evidence" + }, + "shape": { + "edges": 44, + "faces": 22, + "solids": 1, + "valid": true, + "volume": 1250.1592653589785 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "CompositeCut24.Shape.Map.txt": { + "sha256": "4400a313338c79a79c08aeb027601695f10fecd790b802561b3ab96afe8ad3ab", + "text": "BeginElementMap v1\n2 PostfixCount 13\nEdge\nFace\nVertex\n;:H900,E;:H902,E\n;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V;:H902,V\n;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V;:H902,V\n;:M;CUT;:H901:7,E;:H902,E\n;:H900,F;:H902,F\n;:M;CUT;:H901:7,F;:H902,F\n;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E;:H902,E\n;:M;CUT;:H900:7,F;:H902,F\n;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E;:H902,E\n;:H900,V;:H902,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.c 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.a 0\n:1.1.7 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.8 0\n:2.3.8 0\n:2.6.b 0\n:2.4.8 0\n:2.5.b 0\n:2.2.8 0\n:2.1.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:3.1.d 0\n:3.2.d 0\n:3.3.d 0\n:3.4.d 0\n:3.6.d 0\n:3.5.d 0\n:3.7.d 0\n:1.1.6 0\n:3.8.d 0\n:1.1.5 0\n\nEndMap\n" + }, + "Cut24.Shape.Map.txt": { + "sha256": "5790bab6d514a22d7ac6454b99afcf23bd0febff8ada61198e42a09f3c7d6812", + "text": "BeginElementMap v1\n1 PostfixCount 13\nEdge\nFace\nVertex\n;:H900,E\n;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V\n;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V\n;:M;CUT;:H901:7,E\n;:H900,F\n;:M;CUT;:H901:7,F\n;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E\n;:M;CUT;:H900:7,F\n;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E\n;:H900,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.c 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.a 0\n:1.1.7 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.8 0\n:2.3.8 0\n:2.6.b 0\n:2.4.8 0\n:2.5.b 0\n:2.2.8 0\n:2.1.9 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:3.1.d 0\n:3.2.d 0\n:3.3.d 0\n:3.4.d 0\n:3.6.d 0\n:3.5.d 0\n:3.7.d 0\n:1.1.6 0\n:3.8.d 0\n:1.1.5 0\n\nEndMap\n" + } + }, + "finalObject": "CompositeCut24", + "id": "composite-04", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box24", + "name": "Box24", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box24:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box24:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box24:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box24:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box24:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box24:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box24:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box24:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box24:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box24:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box24:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box24:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box24:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box24:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box24:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box24:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box24:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box24:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box24:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box24:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box24:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box24:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box24:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box24:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box24:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box24:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box24", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box24", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder24", + "name": "Cylinder24", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder24:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder24:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder24:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder24:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder24:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder24:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder24:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder24:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder24", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder24", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 395.84067435231395 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Cut24.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Cut24", + "name": "Cut24", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H900,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H900,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H900:7,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H900:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H900,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H900:7,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H900:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H900,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H901:7,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H901:7,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H900,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H900,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H900,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H900,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H900,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H900,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H900,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H900,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H900,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F)", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H900,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H900,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H900,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F)", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H901:7,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H901:7,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H900,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H900,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H900,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H900,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H900,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H900,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H900,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F)", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H900,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F)", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H900,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H900,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut24:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face1", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H900,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H900,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut24:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face3", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H900:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H900:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut24:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face6", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H900,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H900,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut24:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face4", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H900:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H900:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Cut24:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face5", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H900,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H900,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut24:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face2", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H901:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H901:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Cut24:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Face1", + "stageId": "Cylinder24" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut24:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge1", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut24:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge2", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut24:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge3", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut24:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge4", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut24:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge9", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut24:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge5", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut24:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge10", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Cut24:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge12", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut24:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge6", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut24:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F)", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face6;:G2(Face1;K-2;:H901:4,F)", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut24:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge11", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Cut24:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge7", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H900,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H900,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Cut24:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge8", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut24:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F)", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face5;:G2(Face1;K-1;:H901:4,F)", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H901:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H901:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut24:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Edge1", + "stageId": "Cylinder24" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut24:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex1", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cut24:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex2", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cut24:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex3", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut24:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex4", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Cut24:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex6", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Cut24:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex5", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut24:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex7", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Cut24:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F)", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Edge1;:G2(Face6;K-1;:H900:4,F)", + "stageId": "Cylinder24" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H900,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H900,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Cut24:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex8", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut24:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F)", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Edge1;:G(Face5;K-1;:H900:4,F)", + "stageId": "Cylinder24" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Cut24", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cut24", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 717.2566611769184 + }, + "typeId": "Part::Cut" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "SecondBox24", + "name": "SecondBox24", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox24:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox24:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox24:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox24:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox24:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox24:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox24:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox24:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox24:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox24:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox24:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox24:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox24:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox24:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "SecondBox24:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "SecondBox24:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "SecondBox24:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "SecondBox24:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox24:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox24:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox24:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox24:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox24:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox24:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox24:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox24:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "SecondBox24", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "SecondBox24", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 63.999999999999986 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [ + "CompositeCut24.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "CompositeCut24", + "name": "CompositeCut24", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H900,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H900,F;:H902,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H900,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H900,F;:H902,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H900:7,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M;CUT;:H900:7,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H900:7,F;:H902,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H900,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H900,F;:H902,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H900:7,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M;CUT;:H900:7,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H900:7,F;:H902,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H900,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H900,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H900,F;:H902,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H901:7,F;:H902,F", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;CUT;:H901:7,F", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H901:7,F;:H902,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F)", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H900,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:H900,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H900,E;:H902,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F)", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H901:7,E;:H902,E", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H901:7,E", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H901:7,E;:H902,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F)", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H900,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8;:H900,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box24", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H900,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V;:H902,V", + "object": "CompositeCut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "object": "Cut24", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F)", + "object": "Cylinder24", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V;:H902,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H900,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H900,F;:H902,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut24:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:H900,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face1;:H900,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face1", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face1", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H900,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H900,F;:H902,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut24:face:1", + "sourceRefs": [ + { + "mappedName": "Face3;:H900,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face3;:H900,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face3", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face3", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H900:7,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H900:7,F;:H902,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut24:face:2", + "sourceRefs": [ + { + "mappedName": "Face6;:M;CUT;:H900:7,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face6;:M;CUT;:H900:7,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face6", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face6", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H900,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H900,F;:H902,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut24:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H900,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face4;:H900,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face4", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face4", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H900:7,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H900:7,F;:H902,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "CompositeCut24:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;CUT;:H900:7,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face5;:M;CUT;:H900:7,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face5", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face5", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H900,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H900,F;:H902,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut24:face:5", + "sourceRefs": [ + { + "mappedName": "Face2;:H900,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face2;:H900,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face2", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face2", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H901:7,F;:H902,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H901:7,F;:H902,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut24:face:6", + "sourceRefs": [ + { + "mappedName": "Face1;:M;CUT;:H901:7,F", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face1;:M;CUT;:H901:7,F", + "stageId": "Cut24" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Face1", + "stageId": "Cylinder24" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut24:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge1;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge1", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge1", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut24:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge2;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge2", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge2", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut24:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge3;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge3", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge3", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut24:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge4;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge4", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge4", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut24:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge9;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge9", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge9", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut24:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge5;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge5", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge5", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut24:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge10;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge10", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge10", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "CompositeCut24:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge12;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge12", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge12", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut24:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge6;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge6", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge6", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut24:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face6;:G2(Face1;K-2;:H901:4,F);CUT;:H900:1d,E", + "stageId": "Cut24" + }, + { + "mappedName": "Face6;:G2(Face1;K-2;:H901:4,F)", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face6;:G2(Face1;K-2;:H901:4,F)", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut24:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge11;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge11", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge11", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut24:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge7;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge7", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge7", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H900,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H900,E;:H902,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut24:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:H900,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge8;:H900,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge8", + "objectId": "Box24", + "persistentId": "Box24:mapped:Edge8", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E;:H902,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut24:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Face5;:G2(Face1;K-1;:H901:4,F);CUT;:H900:1d,E", + "stageId": "Cut24" + }, + { + "mappedName": "Face5;:G2(Face1;K-1;:H901:4,F)", + "objectId": "Box24", + "persistentId": "Box24:mapped:Face5;:G2(Face1;K-1;:H901:4,F)", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H901:7,E;:H902,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H901:7,E;:H902,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut24:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1;:M;CUT;:H901:7,E", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge1;:M;CUT;:H901:7,E", + "stageId": "Cut24" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Edge1", + "stageId": "Cylinder24" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut24:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex1;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex1", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex1", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut24:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex2;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex2", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex2", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut24:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex3;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex3", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex3", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut24:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex4;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex4", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex4", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut24:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex6;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex6", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex6", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut24:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex5;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex5", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex5", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut24:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex7;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex7", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex7", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V;:H902,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "CompositeCut24:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge1;:G2(Face6;K-1;:H900:4,F);CUT;:H901:1d,V", + "stageId": "Cut24" + }, + { + "mappedName": "Edge1;:G2(Face6;K-1;:H900:4,F)", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Edge1;:G2(Face6;K-1;:H900:4,F)", + "stageId": "Cylinder24" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H900,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H900,V;:H902,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut24:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H900,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Vertex8;:H900,V", + "stageId": "Cut24" + }, + { + "mappedName": "Vertex8", + "objectId": "Box24", + "persistentId": "Box24:mapped:Vertex8", + "stageId": "Box24" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V;:H902,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V;:H902,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut24:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "objectId": "Cut24", + "persistentId": "Cut24:mapped:Edge1;:G(Face5;K-1;:H900:4,F);CUT;:H901:1c,V", + "stageId": "Cut24" + }, + { + "mappedName": "Edge1;:G(Face5;K-1;:H900:4,F)", + "objectId": "Cylinder24", + "persistentId": "Cylinder24:mapped:Edge1;:G(Face5;K-1;:H900:4,F)", + "stageId": "Cylinder24" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "CompositeCut24", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "CompositeCut24", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 717.2566611769184 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "CompositeCut25.Shape.Map.txt": { + "sha256": "c8554d8fb317ddf2c4b2193191195dde48240a999bc48dd05c1fcbdc4d8a9e8d", + "text": "BeginElementMap v1\n2 PostfixCount 21\nEdge\nFace\nVertex\n;:H2c1,E;:H2c3,E\n;:H2c4,E\n;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V;:H2c3,V\n;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V;:H2c3,V\n;:M2;FUS;:H2c2:8,E;:H2c3,E\n;:M;FUS;:H2c2:7,E;:H2c3,E\n;:H2c2,E;:H2c3,E\n;:H2c1,F;:H2c3,F\n;:H2c4,F\n;:M2;FUS;:H2c2:8,F;:H2c3,F\n;:M;FUS;:H2c2:7,F;:H2c3,F\n;:H2c2,F;:H2c3,F\n;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E\n;:M;FUS;:H2c1:7,F;:H2c3,F\n;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E\n;:H2c1,V;:H2c3,V\n;:H2c2,V;:H2c3,V\n;:H2c4,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 31\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.12 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.10 0\n:1.1.8 0\n:1.3.a 0\n:1.2.a 0\n:1.1.9 0\n:1.1.5 0\n:1.2.5 0\n:1.3.5 0\n:1.4.5 0\n:1.9.5 0\n:1.5.5 0\n:1.a.5 0\n:1.c.5 0\n:1.6.5 0\n:1.b.5 0\n:1.7.5 0\n:1.8.5 0\n\nFace\n\nChildCount 0\n\nNameCount 17\n0\n:2.1.b 0\n:2.3.b 0\n:2.6.11 0\n:2.4.b 0\n:2.5.11 0\n:2.2.b 0\n:2.1.d 0\n:2.1.e 0\n:2.3.f 0\n:2.2.f 0\n:2.1.c 0\n:2.3.c 0\n:2.6.c 0\n:2.4.c 0\n:2.5.c 0\n:2.2.c 0\n\nVertex\n\nChildCount 0\n\nNameCount 21\n0\n:3.1.13 0\n:3.2.13 0\n:3.3.13 0\n:3.4.13 0\n:3.6.13 0\n:3.5.13 0\n:3.7.13 0\n:1.1.7 0\n:3.8.13 0\n:1.1.6 0\n:3.2.14 0\n:3.1.14 0\n:3.1.15 0\n:3.2.15 0\n:3.3.15 0\n:3.4.15 0\n:3.6.15 0\n:3.5.15 0\n:3.7.15 0\n:3.8.15 0\n\nEndMap\n" + }, + "Fuse25.Shape.Map.txt": { + "sha256": "5b6ea7d4183194720ffcc0bc4affa2ef08b4d6b5de5d372ffb004fb3a7ceb506", + "text": "BeginElementMap v1\n1 PostfixCount 18\nEdge\nFace\nVertex\n;:H2c1,E\n;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V\n;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V\n;:M2;FUS;:H2c2:8,E\n;:M;FUS;:H2c2:7,E\n;:H2c2,E\n;:H2c1,F\n;:M2;FUS;:H2c2:8,F\n;:M;FUS;:H2c2:7,F\n;:H2c2,F\n;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E\n;:M;FUS;:H2c1:7,F\n;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E\n;:H2c1,V\n;:H2c2,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 19\n0\n:1.1.4 0\n:1.2.4 0\n:1.3.4 0\n:1.4.4 0\n:1.9.4 0\n:1.5.4 0\n:1.a.4 0\n:1.c.4 0\n:1.6.4 0\n:2.6.10 0\n:1.b.4 0\n:1.7.4 0\n:1.8.4 0\n:2.5.e 0\n:1.1.7 0\n:1.3.9 0\n:1.2.9 0\n:1.1.8 0\n\nFace\n\nChildCount 0\n\nNameCount 11\n0\n:2.1.a 0\n:2.3.a 0\n:2.6.f 0\n:2.4.a 0\n:2.5.f 0\n:2.2.a 0\n:2.1.b 0\n:2.1.c 0\n:2.3.d 0\n:2.2.d 0\n\nVertex\n\nChildCount 0\n\nNameCount 13\n0\n:3.1.11 0\n:3.2.11 0\n:3.3.11 0\n:3.4.11 0\n:3.6.11 0\n:3.5.11 0\n:3.7.11 0\n:1.1.6 0\n:3.8.11 0\n:1.1.5 0\n:3.2.12 0\n:3.1.12 0\n\nEndMap\n" + } + }, + "finalObject": "CompositeCut25", + "id": "composite-05", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box25", + "name": "Box25", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box25:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box25:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box25:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box25:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box25:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box25:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box25:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box25:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box25:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box25:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box25:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box25:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box25:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box25:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box25:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box25:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box25:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box25:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box25:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box25:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box25:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box25:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box25:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box25:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box25:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box25:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box25", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box25", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder25", + "name": "Cylinder25", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder25:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder25:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder25:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder25:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder25:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder25:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder25:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder25:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder25", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder25", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 703.7167544041135 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Fuse25.Shape.Map.txt" + ], + "elementMapSize": 40, + "elementMapVersion": "15.70200.5", + "label": "Fuse25", + "name": "Fuse25", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H2c1,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H2c1,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H2c1:7,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H2c1:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H2c1,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H2c1:7,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H2c1:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H2c1,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H2c2:8,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H2c2:8,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H2c2:7,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H2c2:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H2c2,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face3;:H2c2,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H2c2,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face2;:H2c2,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H2c1,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H2c1,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H2c1,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H2c1,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H2c1,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H2c1,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H2c1,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H2c1,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H2c1,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F)", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H2c1,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H2c1,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H2c1,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F)", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H2c2,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge3;:H2c2,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H2c2,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge2;:H2c2,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H2c2:7,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H2c2:7,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F)", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H2c1,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F)", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H2c2,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex2;:H2c2,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H2c2,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex1;:H2c2,V", + "mappedStringIds": [], + "name": "Vertex12" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 40, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 40, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H2c1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H2c1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse25:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face1", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H2c1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H2c1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse25:face:1", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face3", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H2c1:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H2c1:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Fuse25:face:2", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face6", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H2c1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H2c1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse25:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face4", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H2c1:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H2c1:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fuse25:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face5", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H2c1,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H2c1,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse25:face:5", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face2", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H2c2:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H2c2:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fuse25:face:6", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H2c2:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H2c2:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Fuse25:face:7", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H2c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face3;:H2c2,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse25:face:8", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face3", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H2c2,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face2;:H2c2,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fuse25:face:9", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face2", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse25:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge1", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse25:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge2", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse25:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge3", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse25:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge4", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse25:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge9", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse25:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge5", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse25:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge10", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fuse25:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge12", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse25:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge6", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse25:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F)", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face6;:G2(Face1;K-2;:H2c2:4,F)", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse25:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge11", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse25:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge7", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H2c1,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H2c1,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "Fuse25:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge8", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Fuse25:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F)", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face5;:G2(Face1;K-1;:H2c2:4,F)", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M2;FUS;:H2c2:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Fuse25:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H2c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge3;:H2c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Fuse25:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge3", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H2c2,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge2;:H2c2,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "Fuse25:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge2", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H2c2:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H2c2:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Fuse25:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Fuse25:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex1", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fuse25:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex2", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fuse25:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex3", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fuse25:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex4", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Fuse25:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex6", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fuse25:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex5", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fuse25:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex7", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Fuse25:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F)", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1;:G2(Face6;K-1;:H2c1:4,F)", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H2c1,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H2c1,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fuse25:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex8", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fuse25:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F)", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1;:G(Face5;K-1;:H2c1:4,F)", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H2c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex2;:H2c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fuse25:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Vertex2", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H2c2,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex1;:H2c2,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fuse25:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Vertex1", + "stageId": "Cylinder25" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fuse25", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fuse25", + "status": "native-evidence" + }, + "shape": { + "edges": 18, + "faces": 10, + "solids": 1, + "valid": true, + "volume": 1201.0619298297468 + }, + "typeId": "Part::Fuse" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "SecondBox25", + "name": "SecondBox25", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox25:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox25:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox25:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox25:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox25:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox25:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox25:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox25:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox25:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox25:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox25:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox25:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox25:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox25:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "SecondBox25:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "SecondBox25:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "SecondBox25:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "SecondBox25:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox25:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox25:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox25:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox25:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox25:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox25:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox25:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox25:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "SecondBox25", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "SecondBox25", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 63.999999999999986 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [ + "CompositeCut25.Shape.Map.txt" + ], + "elementMapSize": 66, + "elementMapVersion": "15.70200.5", + "label": "CompositeCut25", + "name": "CompositeCut25", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H2c1,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H2c1,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face3;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FUS;:H2c1:7,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M;FUS;:H2c1:7,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face6;:M;FUS;:H2c1:7,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H2c1,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FUS;:H2c1:7,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M;FUS;:H2c1:7,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FUS;:H2c1:7,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H2c1,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H2c1,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face2;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H2c2:8,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M2;FUS;:H2c2:8,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face1;:M2;FUS;:H2c2:8,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FUS;:H2c2:7,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;FUS;:H2c2:7,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face1;:M;FUS;:H2c2:7,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H2c2,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:H2c2,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face3;:H2c2,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H2c2,F;:H2c3,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:H2c2,F", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face2;:H2c2,F;:H2c3,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:H2c4,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face1;:H2c4,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:H2c4,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face3;:H2c4,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:H2c4,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face6;:H2c4,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H2c4,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face4;:H2c4,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:H2c4,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face5;:H2c4,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H2c4,F", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face2;:H2c4,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge1;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge2;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge9;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge5;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge12;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge6;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F)", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H2c1,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:H2c1,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge8;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F)", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H2c2,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H2c2,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Edge3;:H2c2,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H2c2,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:H2c2,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Edge2;:H2c2,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H2c2:7,E;:H2c3,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M;FUS;:H2c2:7,E", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge1;:M;FUS;:H2c2:7,E;:H2c3,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Edge1;:H2c4,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge2;:H2c4,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Edge3;:H2c4,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge4;:H2c4,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Edge9;:H2c4,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Edge5;:H2c4,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Edge10;:H2c4,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge12;:H2c4,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge6;:H2c4,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge11;:H2c4,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge7;:H2c4,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H2c4,E", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Edge8;:H2c4,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex2;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Vertex3;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Vertex6;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex5;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex7;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F)", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H2c1,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8;:H2c1,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F)", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H2c2,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H2c2,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex2;:H2c2,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H2c2,V;:H2c3,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H2c2,V", + "object": "Fuse25", + "typeId": "Part::Fuse" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder25", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex1;:H2c2,V;:H2c3,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Vertex1;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Vertex2;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Vertex3;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Vertex4;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex17", + "indexedStringIds": [], + "mappedName": "Vertex6;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex18", + "indexedStringIds": [], + "mappedName": "Vertex5;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex19", + "indexedStringIds": [], + "mappedName": "Vertex7;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H2c4,V", + "object": "CompositeCut25", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox25", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex20", + "indexedStringIds": [], + "mappedName": "Vertex8;:H2c4,V", + "mappedStringIds": [], + "name": "Vertex20" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 66, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 66, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:H2c1,F;:H2c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut25:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:H2c1,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face1;:H2c1,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face1", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face1", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face3;:H2c1,F;:H2c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut25:face:1", + "sourceRefs": [ + { + "mappedName": "Face3;:H2c1,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face3;:H2c1,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face3", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face3", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FUS;:H2c1:7,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face6;:M;FUS;:H2c1:7,F;:H2c3,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut25:face:2", + "sourceRefs": [ + { + "mappedName": "Face6;:M;FUS;:H2c1:7,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face6;:M;FUS;:H2c1:7,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face6", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face6", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H2c1,F;:H2c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut25:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H2c1,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face4;:H2c1,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face4", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face4", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FUS;:H2c1:7,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FUS;:H2c1:7,F;:H2c3,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "CompositeCut25:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;FUS;:H2c1:7,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face5;:M;FUS;:H2c1:7,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face5", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face5", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H2c1,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face2;:H2c1,F;:H2c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut25:face:5", + "sourceRefs": [ + { + "mappedName": "Face2;:H2c1,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face2;:H2c1,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face2", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face2", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;FUS;:H2c2:8,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face1;:M2;FUS;:H2c2:8,F;:H2c3,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut25:face:6", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;FUS;:H2c2:8,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face1;:M2;FUS;:H2c2:8,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FUS;:H2c2:7,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face1;:M;FUS;:H2c2:7,F;:H2c3,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "CompositeCut25:face:7", + "sourceRefs": [ + { + "mappedName": "Face1;:M;FUS;:H2c2:7,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face1;:M;FUS;:H2c2:7,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H2c2,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face3;:H2c2,F;:H2c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut25:face:8", + "sourceRefs": [ + { + "mappedName": "Face3;:H2c2,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face3;:H2c2,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face3", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face3", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H2c2,F;:H2c3,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face2;:H2c2,F;:H2c3,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "CompositeCut25:face:9", + "sourceRefs": [ + { + "mappedName": "Face2;:H2c2,F", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face2;:H2c2,F", + "stageId": "Fuse25" + }, + { + "mappedName": "Face2", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Face2", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:H2c4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face1;:H2c4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut25:face:10", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Face1", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:H2c4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face3;:H2c4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut25:face:11", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Face3", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:H2c4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face6;:H2c4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut25:face:12", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Face6", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H2c4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face4;:H2c4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "CompositeCut25:face:13", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Face4", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:H2c4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face5;:H2c4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "CompositeCut25:face:14", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Face5", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H2c4,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face2;:H2c4,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut25:face:15", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Face2", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut25:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge1;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge1", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge1", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut25:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge2;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge2", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge2", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut25:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge3;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge3", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge3", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut25:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge4;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge4", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge4", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge9;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut25:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge9;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge9;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge9", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge9", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge5;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut25:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge5;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge5;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge5", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge5", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut25:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge10;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge10", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge10", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge12;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "CompositeCut25:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge12;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge12;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge12", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge12", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge6;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut25:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge6;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge6;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge6", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge6", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut25:edge:9", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face6;:G2(Face1;K-2;:H2c2:4,F);FUS;:H2c1:1d,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Face6;:G2(Face1;K-2;:H2c2:4,F)", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face6;:G2(Face1;K-2;:H2c2:4,F)", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut25:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge11;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge11", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge11", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut25:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge7;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge7", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge7", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H2c1,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge8;:H2c1,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut25:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:H2c1,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge8;:H2c1,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge8", + "objectId": "Box25", + "persistentId": "Box25:mapped:Edge8", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E;:H2c3,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut25:edge:13", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Face5;:G2(Face1;K-1;:H2c2:4,F);FUS;:H2c1:1d,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Face5;:G2(Face1;K-1;:H2c2:4,F)", + "objectId": "Box25", + "persistentId": "Box25:mapped:Face5;:G2(Face1;K-1;:H2c2:4,F)", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge1;:M2;FUS;:H2c2:8,E;:H2c3,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut25:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge1;:M2;FUS;:H2c2:8,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge1;:M2;FUS;:H2c2:8,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H2c2,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Edge3;:H2c2,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut25:edge:15", + "sourceRefs": [ + { + "mappedName": "Edge3;:H2c2,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge3;:H2c2,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge3", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge3", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H2c2,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Edge2;:H2c2,E;:H2c3,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "CompositeCut25:edge:16", + "sourceRefs": [ + { + "mappedName": "Edge2;:H2c2,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge2;:H2c2,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge2", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge2", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;FUS;:H2c2:7,E;:H2c3,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge1;:M;FUS;:H2c2:7,E;:H2c3,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "CompositeCut25:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge1;:M;FUS;:H2c2:7,E", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge1;:M;FUS;:H2c2:7,E", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Edge1;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut25:edge:18", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge1", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge2;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "CompositeCut25:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge2", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Edge3;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 20, + "resultPersistentId": "CompositeCut25:edge:20", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge3", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge4;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 21, + "resultPersistentId": "CompositeCut25:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge4", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Edge9;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 22, + "resultPersistentId": "CompositeCut25:edge:22", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge9", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Edge5;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 23, + "resultPersistentId": "CompositeCut25:edge:23", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge5", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Edge10;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 24, + "resultPersistentId": "CompositeCut25:edge:24", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge10", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge12;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 25, + "resultPersistentId": "CompositeCut25:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge12", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge6;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 26, + "resultPersistentId": "CompositeCut25:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge6", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge11;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 27, + "resultPersistentId": "CompositeCut25:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge11", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge7;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 28, + "resultPersistentId": "CompositeCut25:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge7", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H2c4,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Edge8;:H2c4,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 29, + "resultPersistentId": "CompositeCut25:edge:29", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Edge8", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut25:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex1;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex1", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex1", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "CompositeCut25:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex2;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex2", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex2", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "CompositeCut25:vertex:2", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex3;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex3", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex3", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut25:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex4;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex4", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex4", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex6;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "CompositeCut25:vertex:4", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex6;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex6", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex6", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex5;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "CompositeCut25:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex5;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex5", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex5", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut25:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex7;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex7", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex7", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V;:H2c3,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "CompositeCut25:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge1;:G2(Face6;K-1;:H2c1:4,F);FUS;:H2c2:1d,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge1;:G2(Face6;K-1;:H2c1:4,F)", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1;:G2(Face6;K-1;:H2c1:4,F)", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H2c1,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H2c1,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "CompositeCut25:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H2c1,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex8;:H2c1,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex8", + "objectId": "Box25", + "persistentId": "Box25:mapped:Vertex8", + "stageId": "Box25" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V;:H2c3,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut25:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Edge1;:G(Face5;K-1;:H2c1:4,F);FUS;:H2c2:1c,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Edge1;:G(Face5;K-1;:H2c1:4,F)", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Edge1;:G(Face5;K-1;:H2c1:4,F)", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H2c2,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex2;:H2c2,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut25:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H2c2,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex2;:H2c2,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex2", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Vertex2", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H2c2,V;:H2c3,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex1;:H2c2,V;:H2c3,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut25:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H2c2,V", + "objectId": "Fuse25", + "persistentId": "Fuse25:mapped:Vertex1;:H2c2,V", + "stageId": "Fuse25" + }, + { + "mappedName": "Vertex1", + "objectId": "Cylinder25", + "persistentId": "Cylinder25:mapped:Vertex1", + "stageId": "Cylinder25" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Vertex1;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 12, + "resultPersistentId": "CompositeCut25:vertex:12", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex1", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Vertex2;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "CompositeCut25:vertex:13", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex2", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Vertex3;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "CompositeCut25:vertex:14", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex3", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Vertex4;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut25:vertex:15", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex4", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex17", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Vertex" + }, + "name": "Vertex6;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 16, + "resultPersistentId": "CompositeCut25:vertex:16", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex6", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex18", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Vertex" + }, + "name": "Vertex5;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 17, + "resultPersistentId": "CompositeCut25:vertex:17", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex5", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex19", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Vertex" + }, + "name": "Vertex7;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut25:vertex:18", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex7", + "stageId": "SecondBox25" + } + ] + }, + { + "indexedName": "Vertex20", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H2c4,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Vertex" + }, + "name": "Vertex8;:H2c4,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 19, + "resultPersistentId": "CompositeCut25:vertex:19", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "SecondBox25", + "persistentId": "SecondBox25:mapped:Vertex8", + "stageId": "SecondBox25" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "CompositeCut25", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "CompositeCut25", + "status": "native-evidence" + }, + "shape": { + "edges": 30, + "faces": 16, + "solids": 1, + "valid": true, + "volume": 1137.0619298297458 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "CompositeCut26.Shape.Map.txt": { + "sha256": "9d16302ae33212570b81e4b8e49026ed65b9de905b05f1005984b10f16e3d101", + "text": "BeginElementMap v1\n2 PostfixCount 35\nEdge\nFace\nVertex\n;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V\n;:M2;CUT;:H1070:8,E;:H1072,E\n;:M;CUT;:H1070:7,E;:H1072,E\n;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V\n;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V\n;:H1070,E;:H1072,E\n;:M;CUT;:H1071:7,E;:H1072,E\n;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V\n;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V\n;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V\n;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V\n;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V\n;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E\n;:M2;CUT;:H1070:8,F;:H1072,F\n;:M2;CUT;:H1071:8,F;:H1072,F\n;:M3;CUT;:H1071:8,F;:H1072,F\n;:M4;CUT;:H1071:8,F;:H1072,F\n;:M;CUT;:H1070:7,F;:H1072,F\n;:M;CUT;:H1071:7,F;:H1072,F\n;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E\n;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E\n;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E\n;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E\n;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E\n;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E\n;:M3;CUT;:H1070:8,F;:H1072,F\n;:M4;CUT;:H1070:8,F;:H1072,F\n;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E\n;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E\n;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E\n;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E\n;:H1070,V;:H1072,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 33\n0\n:1.2.6 0\n:2.1.10 0\n:1.4.6 0\n:1.1.9 0\n:2.6.20 0\n:1.a.6 0\n:2.3.17 0\n:2.5.1a 0\n:1.9.6 0\n:1.2.5 0\n:1.3.9 0\n:1.4.5 0\n:1.c.6 0\n:2.6.21 0\n:1.b.6 0\n:2.4.18 0\n:2.5.1b 0\n:1.9.5 0\n:1.5.9 0\n:1.a.5 0\n:2.5.19 0\n:1.8.6 0\n:1.6.6 0\n:1.1.a 0\n:2.6.1f 0\n:1.b.5 0\n:1.7.9 0\n:1.c.5 0\n:1.8.5 0\n:2.5.1c 0\n:1.6.5 0\n:2.6.22 0\n\nFace\n\nChildCount 0\n\nNameCount 21\n0\n:2.1.15 0\n:2.6.15 0\n:2.1.13 0\n:2.5.15 0\n:2.3.15 0\n:2.1.11 0\n:2.6.11 0\n:2.4.15 0\n:2.5.11 0\n:2.1.14 0\n:2.3.11 0\n:2.5.1d 0\n:2.2.15 0\n:2.6.1d 0\n:2.1.12 0\n:2.4.11 0\n:2.5.1e 0\n:2.2.11 0\n:2.6.1e 0\n:2.1.16 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n:3.1.23 0\n:1.2.b 0\n:1.4.c 0\n:3.2.23 0\n:1.a.4 0\n:1.9.f 0\n:3.3.23 0\n:3.4.23 0\n:1.c.8 0\n:1.b.7 0\n:3.6.23 0\n:3.5.23 0\n:1.8.e 0\n:1.6.d 0\n:3.8.23 0\n:3.7.23 0\n\nEndMap\n" + }, + "Cut26.Shape.Map.txt": { + "sha256": "4206d7d2aa7102421b6495d80153197ac694049e1366b99b8da27961ce6aad4d", + "text": "BeginElementMap v1\n1 PostfixCount 35\nEdge\nFace\nVertex\n;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V\n;:M2;CUT;:H1070:8,E\n;:M;CUT;:H1070:7,E\n;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V\n;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V\n;:H1070,E\n;:M;CUT;:H1071:7,E\n;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V\n;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V\n;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V\n;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V\n;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V\n;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E\n;:M2;CUT;:H1070:8,F\n;:M2;CUT;:H1071:8,F\n;:M3;CUT;:H1071:8,F\n;:M4;CUT;:H1071:8,F\n;:M;CUT;:H1070:7,F\n;:M;CUT;:H1071:7,F\n;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E\n;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E\n;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E\n;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E\n;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E\n;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E\n;:M3;CUT;:H1070:8,F\n;:M4;CUT;:H1070:8,F\n;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E\n;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E\n;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E\n;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E\n;:H1070,V\n\nMapCount 1\n\nElementMap 1 1 3\n\nEdge\n\nChildCount 0\n\nNameCount 33\n0\n:1.2.6 0\n:2.1.10 0\n:1.4.6 0\n:1.1.9 0\n:2.6.20 0\n:1.a.6 0\n:2.3.17 0\n:2.5.1a 0\n:1.9.6 0\n:1.2.5 0\n:1.3.9 0\n:1.4.5 0\n:1.c.6 0\n:2.6.21 0\n:1.b.6 0\n:2.4.18 0\n:2.5.1b 0\n:1.9.5 0\n:1.5.9 0\n:1.a.5 0\n:2.5.19 0\n:1.8.6 0\n:1.6.6 0\n:1.1.a 0\n:2.6.1f 0\n:1.b.5 0\n:1.7.9 0\n:1.c.5 0\n:1.8.5 0\n:2.5.1c 0\n:1.6.5 0\n:2.6.22 0\n\nFace\n\nChildCount 0\n\nNameCount 21\n0\n:2.1.15 0\n:2.6.15 0\n:2.1.13 0\n:2.5.15 0\n:2.3.15 0\n:2.1.11 0\n:2.6.11 0\n:2.4.15 0\n:2.5.11 0\n:2.1.14 0\n:2.3.11 0\n:2.5.1d 0\n:2.2.15 0\n:2.6.1d 0\n:2.1.12 0\n:2.4.11 0\n:2.5.1e 0\n:2.2.11 0\n:2.6.1e 0\n:2.1.16 0\n\nVertex\n\nChildCount 0\n\nNameCount 17\n0\n:3.1.23 0\n:1.2.b 0\n:1.4.c 0\n:3.2.23 0\n:1.a.4 0\n:1.9.f 0\n:3.3.23 0\n:3.4.23 0\n:1.c.8 0\n:1.b.7 0\n:3.6.23 0\n:3.5.23 0\n:1.8.e 0\n:1.6.d 0\n:3.8.23 0\n:3.7.23 0\n\nEndMap\n" + } + }, + "finalObject": "CompositeCut26", + "id": "composite-06", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Box26", + "name": "Box26", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box26:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box26:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box26:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box26:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box26:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box26:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box26:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box26:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box26:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box26:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box26:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box26:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box26:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box26:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Box26:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Box26:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Box26:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Box26:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Box26:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Box26:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Box26:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Box26:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "Box26:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Box26:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Box26:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Box26:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Box26", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Box26", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Cylinder26", + "name": "Cylinder26", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 8, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder26:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder26:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder26:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder26:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder26:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Cylinder26:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cylinder26:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Cylinder26:vertex:1", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Cylinder26", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cylinder26", + "status": "native-evidence" + }, + "shape": { + "edges": 3, + "faces": 3, + "solids": 1, + "valid": true, + "volume": 1099.5574287564275 + }, + "typeId": "Part::Cylinder" + }, + { + "elementMap2ResourcePaths": [ + "Cut26.Shape.Map.txt" + ], + "elementMapSize": 68, + "elementMapVersion": "15.70200.5", + "label": "Cut26", + "name": "Cut26", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M3;CUT;:H1071:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CUT;:H1071:8,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face3;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face1;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face6;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face4;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face5;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M4;CUT;:H1071:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face1;:M4;CUT;:H1071:8,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face3;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M3;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face5;:M3;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face2;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M3;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face6;:M3;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H1071:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face1;:M2;CUT;:H1071:8,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face4;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M4;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face17", + "indexedStringIds": [], + "mappedName": "Face5;:M4;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face18", + "indexedStringIds": [], + "mappedName": "Face2;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M4;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face19", + "indexedStringIds": [], + "mappedName": "Face6;:M4;CUT;:H1070:8,F", + "mappedStringIds": [], + "name": "Face19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H1071:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face20", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H1071:7,F", + "mappedStringIds": [], + "name": "Face20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge1;:H1070,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge2;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge3;:H1070,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge4;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge12;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge11;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge9;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Edge5;:H1070,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge10;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge8;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Edge6;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H1071:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H1071:7,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge11;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge7;:H1070,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge12;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge8;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge31", + "indexedStringIds": [], + "mappedName": "Edge6;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "name": "Edge31" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge32", + "indexedStringIds": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "name": "Edge32" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H1070,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex2;:H1070,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex3;:H1070,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Vertex4;:H1070,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex6;:H1070,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex5;:H1070,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Vertex8;:H1070,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Vertex7;:H1070,V", + "mappedStringIds": [], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 68, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 68, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H1070:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Cut26:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H1070:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Cut26:face:1", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M3;CUT;:H1071:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face1;:M3;CUT;:H1071:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut26:face:2", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H1070:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Cut26:face:3", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face3;:M;CUT;:H1070:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Cut26:face:4", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face1;:M2;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Cut26:face:5", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face6;:M2;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Cut26:face:6", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face4;:M;CUT;:H1070:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "Cut26:face:7", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face5;:M2;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Cut26:face:8", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M4;CUT;:H1071:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face1;:M4;CUT;:H1071:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Cut26:face:9", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face3;:M2;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "Cut26:face:10", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M3;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face5;:M3;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Cut26:face:11", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M;CUT;:H1070:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face2;:M;CUT;:H1070:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Cut26:face:12", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M3;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face6;:M3;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "Cut26:face:13", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;CUT;:H1071:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face1;:M2;CUT;:H1071:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut26:face:14", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face4;:M2;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "Cut26:face:15", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face17", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M4;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Face" + }, + "name": "Face5;:M4;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "Cut26:face:16", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face18", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M2;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Face" + }, + "name": "Face2;:M2;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Cut26:face:17", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face19", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M4;CUT;:H1070:8,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Face" + }, + "name": "Face6;:M4;CUT;:H1070:8,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "Cut26:face:18", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face20", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H1071:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H1071:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Cut26:face:19", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Cut26:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Cut26:edge:1", + "sourceRefs": [ + { + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face1;:G(Face1;K-7;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge4;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "Cut26:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H1070,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge1;:H1070,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut26:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Cut26:edge:4", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G2(Face1;K-15;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge10;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Cut26:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge10", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 6, + "resultPersistentId": "Cut26:edge:6", + "sourceRefs": [ + { + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face3;:G(Face1;K-8;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Cut26:edge:7", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G2(Face1;K-11;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "Cut26:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge9", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge2;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "Cut26:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H1070,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge3;:H1070,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut26:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge4;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "Cut26:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge12;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Cut26:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge12", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut26:edge:13", + "sourceRefs": [ + { + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G3(Face1;K-16;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge11;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "Cut26:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge11", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "Cut26:edge:15", + "sourceRefs": [ + { + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face4;:G(Face1;K-9;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 16, + "resultPersistentId": "Cut26:edge:16", + "sourceRefs": [ + { + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G3(Face1;K-12;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge9;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "Cut26:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge9", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H1070,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Edge5;:H1070,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "Cut26:edge:18", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge10;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "Cut26:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge10", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 20, + "resultPersistentId": "Cut26:edge:20", + "sourceRefs": [ + { + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G(Face1;K-10;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge8;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "Cut26:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge8", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M;CUT;:H1070:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Edge6;:M;CUT;:H1070:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 22, + "resultPersistentId": "Cut26:edge:22", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H1071:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H1071:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 23, + "resultPersistentId": "Cut26:edge:23", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Edge1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 24, + "resultPersistentId": "Cut26:edge:24", + "sourceRefs": [ + { + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G(Face1;K-14;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge11;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 25, + "resultPersistentId": "Cut26:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge11", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H1070,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge7;:H1070,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 26, + "resultPersistentId": "Cut26:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge7", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge12;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 27, + "resultPersistentId": "Cut26:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge12", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge8;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 28, + "resultPersistentId": "Cut26:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge8", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 29, + "resultPersistentId": "Cut26:edge:29", + "sourceRefs": [ + { + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G4(Face1;K-13;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge31", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M2;CUT;:H1070:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 31, + "type": "Edge" + }, + "name": "Edge6;:M2;CUT;:H1070:8,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 30, + "resultPersistentId": "Cut26:edge:30", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge32", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 32, + "type": "Edge" + }, + "name": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 31, + "resultPersistentId": "Cut26:edge:31", + "sourceRefs": [ + { + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G4(Face1;K-17;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Cut26:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Cut26:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge2;:G(Face1;K-1;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Cut26:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge4;:G(Face1;K-2;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex2;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Cut26:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Cut26:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge10;:G(Face1;K-4;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "Cut26:vertex:5", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge9;:G(Face1;K-3;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex3;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Cut26:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex4;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Cut26:vertex:7", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Cut26:vertex:8", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge12;:G(Face1;K-6;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Cut26:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge11;:G(Face1;K-5;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex6;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Cut26:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex5;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Cut26:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "Cut26:vertex:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge8;:G(Edge1;K-2;:H1071:4,E)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "Cut26:vertex:13", + "sourceRefs": [ + { + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge6;:G(Edge1;K-1;:H1071:4,E)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Vertex8;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Cut26:vertex:14", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex8", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H1070,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Vertex7;:H1070,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "Cut26:vertex:15", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex7", + "stageId": "Box26" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Cut26", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Cut26", + "status": "native-evidence" + }, + "shape": { + "edges": 32, + "faces": 20, + "solids": 4, + "valid": true, + "volume": 214.60183660255157 + }, + "typeId": "Part::Cut" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "SecondBox26", + "name": "SecondBox26", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "SecondBox26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox26:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox26:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox26:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox26:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox26:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox26:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox26:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox26:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox26:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox26:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox26:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox26:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox26:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox26:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "SecondBox26:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "SecondBox26:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "SecondBox26:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "SecondBox26:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "SecondBox26:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "SecondBox26:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "SecondBox26:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "SecondBox26:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "SecondBox26:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "SecondBox26:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "SecondBox26:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "SecondBox26:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "SecondBox26", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "SecondBox26", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 63.999999999999986 + }, + "typeId": "Part::Box" + }, + { + "elementMap2ResourcePaths": [ + "CompositeCut26.Shape.Map.txt" + ], + "elementMapSize": 68, + "elementMapVersion": "15.70200.5", + "label": "CompositeCut26", + "name": "CompositeCut26", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H1070:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CUT;:H1070:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M3;CUT;:H1071:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M3;CUT;:H1071:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Face1;:M3;CUT;:H1071:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CUT;:H1070:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face5;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CUT;:H1070:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face3;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face1;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M2;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face6;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M;CUT;:H1070:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face8", + "indexedStringIds": [], + "mappedName": "Face4;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M2;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face9", + "indexedStringIds": [], + "mappedName": "Face5;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M4;CUT;:H1071:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M4;CUT;:H1071:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face10", + "indexedStringIds": [], + "mappedName": "Face1;:M4;CUT;:H1071:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M2;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face11", + "indexedStringIds": [], + "mappedName": "Face3;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M3;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M3;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face12", + "indexedStringIds": [], + "mappedName": "Face5;:M3;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M;CUT;:H1070:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:M;CUT;:H1070:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face13", + "indexedStringIds": [], + "mappedName": "Face2;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M3;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M3;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face14", + "indexedStringIds": [], + "mappedName": "Face6;:M3;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H1071:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M2;CUT;:H1071:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face15", + "indexedStringIds": [], + "mappedName": "Face1;:M2;CUT;:H1071:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:M2;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face16", + "indexedStringIds": [], + "mappedName": "Face4;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M4;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:M4;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face17", + "indexedStringIds": [], + "mappedName": "Face5;:M4;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:M2;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2;:M2;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face18", + "indexedStringIds": [], + "mappedName": "Face2;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M4;CUT;:H1070:8,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:M4;CUT;:H1070:8,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Face19", + "indexedStringIds": [], + "mappedName": "Face6;:M4;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "name": "Face19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CUT;:H1071:7,F;:H1072,F", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:M;CUT;:H1071:7,F", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Face20", + "indexedStringIds": [], + "mappedName": "Face1;:M;CUT;:H1071:7,F;:H1072,F", + "mappedStringIds": [], + "name": "Face20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:H1070,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge1;:H1070,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge2;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H1070,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge3;:H1070,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge4;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge12;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge11;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge16", + "indexedStringIds": [], + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge16" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge17", + "indexedStringIds": [], + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge17" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge18", + "indexedStringIds": [], + "mappedName": "Edge9;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge18" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H1070,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge19", + "indexedStringIds": [], + "mappedName": "Edge5;:H1070,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge19" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge20", + "indexedStringIds": [], + "mappedName": "Edge10;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge20" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge21", + "indexedStringIds": [], + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge21" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge22", + "indexedStringIds": [], + "mappedName": "Edge8;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge22" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M;CUT;:H1070:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:M;CUT;:H1070:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge23", + "indexedStringIds": [], + "mappedName": "Edge6;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge23" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H1071:7,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1;:M;CUT;:H1071:7,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "Cylinder26", + "typeId": "Part::Cylinder" + } + ], + "indexedName": "Edge24", + "indexedStringIds": [], + "mappedName": "Edge1;:M;CUT;:H1071:7,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge24" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge25", + "indexedStringIds": [], + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge25" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge26", + "indexedStringIds": [], + "mappedName": "Edge11;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge26" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H1070,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7;:H1070,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge27", + "indexedStringIds": [], + "mappedName": "Edge7;:H1070,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge27" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge28", + "indexedStringIds": [], + "mappedName": "Edge12;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge28" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge29", + "indexedStringIds": [], + "mappedName": "Edge8;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge29" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge30", + "indexedStringIds": [], + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge30" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:M2;CUT;:H1070:8,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:M2;CUT;:H1070:8,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge31", + "indexedStringIds": [], + "mappedName": "Edge6;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge31" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Edge32", + "indexedStringIds": [], + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "name": "Edge32" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex1", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Vertex1;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex2", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex2;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex3;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Vertex4;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex11", + "indexedStringIds": [], + "mappedName": "Vertex6;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex12", + "indexedStringIds": [], + "mappedName": "Vertex5;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex13", + "indexedStringIds": [], + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E)", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex14", + "indexedStringIds": [], + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex15", + "indexedStringIds": [], + "mappedName": "Vertex8;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H1070,V;:H1072,V", + "object": "CompositeCut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7;:H1070,V", + "object": "Cut26", + "typeId": "Part::Cut" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "Box26", + "typeId": "Part::Box" + } + ], + "indexedName": "Vertex16", + "indexedStringIds": [], + "mappedName": "Vertex7;:H1070,V;:H1072,V", + "mappedStringIds": [], + "name": "Vertex16" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 68, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 68, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H1070:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "CompositeCut26:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:M;CUT;:H1070:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:M;CUT;:H1070:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CUT;:H1070:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "CompositeCut26:face:1", + "sourceRefs": [ + { + "mappedName": "Face6;:M;CUT;:H1070:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:M;CUT;:H1070:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M3;CUT;:H1071:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face1;:M3;CUT;:H1071:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut26:face:2", + "sourceRefs": [ + { + "mappedName": "Face1;:M3;CUT;:H1071:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:M3;CUT;:H1071:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face5;:M;CUT;:H1070:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "CompositeCut26:face:3", + "sourceRefs": [ + { + "mappedName": "Face5;:M;CUT;:H1070:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:M;CUT;:H1070:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face3;:M;CUT;:H1070:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "CompositeCut26:face:4", + "sourceRefs": [ + { + "mappedName": "Face3;:M;CUT;:H1070:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face3;:M;CUT;:H1070:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face1;:M2;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "CompositeCut26:face:5", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:M2;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face6;:M2;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "CompositeCut26:face:6", + "sourceRefs": [ + { + "mappedName": "Face6;:M2;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:M2;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face8", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Face" + }, + "name": "Face4;:M;CUT;:H1070:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 7, + "resultPersistentId": "CompositeCut26:face:7", + "sourceRefs": [ + { + "mappedName": "Face4;:M;CUT;:H1070:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face4;:M;CUT;:H1070:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face9", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Face" + }, + "name": "Face5;:M2;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "CompositeCut26:face:8", + "sourceRefs": [ + { + "mappedName": "Face5;:M2;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:M2;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face10", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M4;CUT;:H1071:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Face" + }, + "name": "Face1;:M4;CUT;:H1071:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "CompositeCut26:face:9", + "sourceRefs": [ + { + "mappedName": "Face1;:M4;CUT;:H1071:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:M4;CUT;:H1071:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Face11", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Face" + }, + "name": "Face3;:M2;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 10, + "resultPersistentId": "CompositeCut26:face:10", + "sourceRefs": [ + { + "mappedName": "Face3;:M2;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face3;:M2;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face12", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M3;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Face" + }, + "name": "Face5;:M3;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "CompositeCut26:face:11", + "sourceRefs": [ + { + "mappedName": "Face5;:M3;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:M3;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face13", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M;CUT;:H1070:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Face" + }, + "name": "Face2;:M;CUT;:H1070:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "CompositeCut26:face:12", + "sourceRefs": [ + { + "mappedName": "Face2;:M;CUT;:H1070:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face2;:M;CUT;:H1070:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face14", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M3;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Face" + }, + "name": "Face6;:M3;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 13, + "resultPersistentId": "CompositeCut26:face:13", + "sourceRefs": [ + { + "mappedName": "Face6;:M3;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:M3;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face15", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M2;CUT;:H1071:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Face" + }, + "name": "Face1;:M2;CUT;:H1071:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut26:face:14", + "sourceRefs": [ + { + "mappedName": "Face1;:M2;CUT;:H1071:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:M2;CUT;:H1071:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Face16", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Face" + }, + "name": "Face4;:M2;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 15, + "resultPersistentId": "CompositeCut26:face:15", + "sourceRefs": [ + { + "mappedName": "Face4;:M2;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face4;:M2;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face17", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M4;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Face" + }, + "name": "Face5;:M4;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 16, + "resultPersistentId": "CompositeCut26:face:16", + "sourceRefs": [ + { + "mappedName": "Face5;:M4;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:M4;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face18", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:M2;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Face" + }, + "name": "Face2;:M2;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "CompositeCut26:face:17", + "sourceRefs": [ + { + "mappedName": "Face2;:M2;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face2;:M2;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face19", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M4;CUT;:H1070:8,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Face" + }, + "name": "Face6;:M4;CUT;:H1070:8,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 18, + "resultPersistentId": "CompositeCut26:face:18", + "sourceRefs": [ + { + "mappedName": "Face6;:M4;CUT;:H1070:8,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:M4;CUT;:H1070:8,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Face20", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CUT;:H1071:7,F;:H1072,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Face" + }, + "name": "Face1;:M;CUT;:H1071:7,F;:H1072,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "CompositeCut26:face:19", + "sourceRefs": [ + { + "mappedName": "Face1;:M;CUT;:H1071:7,F", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:M;CUT;:H1071:7,F", + "stageId": "Cut26" + }, + { + "mappedName": "Face1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Face1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "CompositeCut26:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge2;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "CompositeCut26:edge:1", + "sourceRefs": [ + { + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face1;:G(Face1;K-7;:H1071:4,F);CUT;:H1070:1d,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face1;:G(Face1;K-7;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face1;:G(Face1;K-7;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge4;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 2, + "resultPersistentId": "CompositeCut26:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge4;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge4;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:H1070,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge1;:H1070,E;:H1072,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut26:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge1;:H1070,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge1;:H1070,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "CompositeCut26:edge:4", + "sourceRefs": [ + { + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:G2(Face1;K-15;:H1071:5,F);CUT;:H1070:1f,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face6;:G2(Face1;K-15;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G2(Face1;K-15;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge10;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "CompositeCut26:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge10;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge10;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge10", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge10", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 6, + "resultPersistentId": "CompositeCut26:edge:6", + "sourceRefs": [ + { + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face3;:G(Face1;K-8;:H1071:4,F);CUT;:H1070:1d,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face3;:G(Face1;K-8;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face3;:G(Face1;K-8;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "CompositeCut26:edge:7", + "sourceRefs": [ + { + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:G2(Face1;K-11;:H1071:5,F);CUT;:H1070:1f,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face5;:G2(Face1;K-11;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G2(Face1;K-11;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 8, + "resultPersistentId": "CompositeCut26:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge9;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge9;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge9", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge9", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge2;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 9, + "resultPersistentId": "CompositeCut26:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge2;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge2;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H1070,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge3;:H1070,E;:H1072,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut26:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge3;:H1070,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge3;:H1070,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge4;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 11, + "resultPersistentId": "CompositeCut26:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge4;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge4;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge12;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "CompositeCut26:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge12;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge12;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge12", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge12", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut26:edge:13", + "sourceRefs": [ + { + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:G3(Face1;K-16;:H1071:5,F);CUT;:H1070:1f,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face6;:G3(Face1;K-16;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G3(Face1;K-16;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge11;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 14, + "resultPersistentId": "CompositeCut26:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge11;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge11;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge11", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge11", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge16", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Edge" + }, + "name": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 15, + "resultPersistentId": "CompositeCut26:edge:15", + "sourceRefs": [ + { + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face4;:G(Face1;K-9;:H1071:4,F);CUT;:H1070:1d,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face4;:G(Face1;K-9;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face4;:G(Face1;K-9;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge17", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 17, + "type": "Edge" + }, + "name": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 16, + "resultPersistentId": "CompositeCut26:edge:16", + "sourceRefs": [ + { + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:G3(Face1;K-12;:H1071:5,F);CUT;:H1070:1f,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face5;:G3(Face1;K-12;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G3(Face1;K-12;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge18", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 18, + "type": "Edge" + }, + "name": "Edge9;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 17, + "resultPersistentId": "CompositeCut26:edge:17", + "sourceRefs": [ + { + "mappedName": "Edge9;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge9;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge9", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge9", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge19", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H1070,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 19, + "type": "Edge" + }, + "name": "Edge5;:H1070,E;:H1072,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 18, + "resultPersistentId": "CompositeCut26:edge:18", + "sourceRefs": [ + { + "mappedName": "Edge5;:H1070,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge5;:H1070,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge20", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 20, + "type": "Edge" + }, + "name": "Edge10;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 19, + "resultPersistentId": "CompositeCut26:edge:19", + "sourceRefs": [ + { + "mappedName": "Edge10;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge10;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge10", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge10", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge21", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 21, + "type": "Edge" + }, + "name": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 20, + "resultPersistentId": "CompositeCut26:edge:20", + "sourceRefs": [ + { + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:G(Face1;K-10;:H1071:5,F);CUT;:H1070:1e,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face5;:G(Face1;K-10;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G(Face1;K-10;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge22", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 22, + "type": "Edge" + }, + "name": "Edge8;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 21, + "resultPersistentId": "CompositeCut26:edge:21", + "sourceRefs": [ + { + "mappedName": "Edge8;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge8;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge8", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge8", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge23", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M;CUT;:H1070:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 23, + "type": "Edge" + }, + "name": "Edge6;:M;CUT;:H1070:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 22, + "resultPersistentId": "CompositeCut26:edge:22", + "sourceRefs": [ + { + "mappedName": "Edge6;:M;CUT;:H1070:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge6;:M;CUT;:H1070:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge24", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:M;CUT;:H1071:7,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 24, + "type": "Edge" + }, + "name": "Edge1;:M;CUT;:H1071:7,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 23, + "resultPersistentId": "CompositeCut26:edge:23", + "sourceRefs": [ + { + "mappedName": "Edge1;:M;CUT;:H1071:7,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge1;:M;CUT;:H1071:7,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge1", + "objectId": "Cylinder26", + "persistentId": "Cylinder26:mapped:Edge1", + "stageId": "Cylinder26" + } + ] + }, + { + "indexedName": "Edge25", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 25, + "type": "Edge" + }, + "name": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 24, + "resultPersistentId": "CompositeCut26:edge:24", + "sourceRefs": [ + { + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:G(Face1;K-14;:H1071:5,F);CUT;:H1070:1e,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face6;:G(Face1;K-14;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G(Face1;K-14;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge26", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 26, + "type": "Edge" + }, + "name": "Edge11;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 25, + "resultPersistentId": "CompositeCut26:edge:25", + "sourceRefs": [ + { + "mappedName": "Edge11;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge11;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge11", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge11", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge27", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H1070,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 27, + "type": "Edge" + }, + "name": "Edge7;:H1070,E;:H1072,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 26, + "resultPersistentId": "CompositeCut26:edge:26", + "sourceRefs": [ + { + "mappedName": "Edge7;:H1070,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge7;:H1070,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge7", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge7", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge28", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 28, + "type": "Edge" + }, + "name": "Edge12;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 27, + "resultPersistentId": "CompositeCut26:edge:27", + "sourceRefs": [ + { + "mappedName": "Edge12;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge12;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge12", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge12", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge29", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 29, + "type": "Edge" + }, + "name": "Edge8;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 28, + "resultPersistentId": "CompositeCut26:edge:28", + "sourceRefs": [ + { + "mappedName": "Edge8;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge8;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge8", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge8", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge30", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 30, + "type": "Edge" + }, + "name": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 29, + "resultPersistentId": "CompositeCut26:edge:29", + "sourceRefs": [ + { + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face5;:G4(Face1;K-13;:H1071:5,F);CUT;:H1070:1f,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face5;:G4(Face1;K-13;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face5;:G4(Face1;K-13;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge31", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:M2;CUT;:H1070:8,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 31, + "type": "Edge" + }, + "name": "Edge6;:M2;CUT;:H1070:8,E;:H1072,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 30, + "resultPersistentId": "CompositeCut26:edge:30", + "sourceRefs": [ + { + "mappedName": "Edge6;:M2;CUT;:H1070:8,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge6;:M2;CUT;:H1070:8,E", + "stageId": "Cut26" + }, + { + "mappedName": "Edge6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Edge32", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 32, + "type": "Edge" + }, + "name": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E;:H1072,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 31, + "resultPersistentId": "CompositeCut26:edge:31", + "sourceRefs": [ + { + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Face6;:G4(Face1;K-17;:H1071:5,F);CUT;:H1070:1f,E", + "stageId": "Cut26" + }, + { + "mappedName": "Face6;:G4(Face1;K-17;:H1071:5,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Face6;:G4(Face1;K-17;:H1071:5,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex1;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "CompositeCut26:vertex:0", + "sourceRefs": [ + { + "mappedName": "Vertex1;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex1;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex1", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex1", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "CompositeCut26:vertex:1", + "sourceRefs": [ + { + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge2;:G(Face1;K-1;:H1071:4,F);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge2;:G(Face1;K-1;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge2;:G(Face1;K-1;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "CompositeCut26:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge4;:G(Face1;K-2;:H1071:4,F);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge4;:G(Face1;K-2;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge4;:G(Face1;K-2;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex2;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex2;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "CompositeCut26:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex2;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex2;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex2", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex2", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "CompositeCut26:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge10;:G(Face1;K-4;:H1071:4,F);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge10;:G(Face1;K-4;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge10;:G(Face1;K-4;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 5, + "resultPersistentId": "CompositeCut26:vertex:5", + "sourceRefs": [ + { + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge9;:G(Face1;K-3;:H1071:4,F);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge9;:G(Face1;K-3;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge9;:G(Face1;K-3;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex3;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "CompositeCut26:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex3;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex3", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex3", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex4;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "CompositeCut26:vertex:7", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex4;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex4", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex4", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "CompositeCut26:vertex:8", + "sourceRefs": [ + { + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge12;:G(Face1;K-6;:H1071:4,F);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge12;:G(Face1;K-6;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge12;:G(Face1;K-6;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "CompositeCut26:vertex:9", + "sourceRefs": [ + { + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge11;:G(Face1;K-5;:H1071:4,F);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge11;:G(Face1;K-5;:H1071:4,F)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge11;:G(Face1;K-5;:H1071:4,F)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex11", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Vertex" + }, + "name": "Vertex6;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "CompositeCut26:vertex:10", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex6;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex6", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex6", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex12", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Vertex" + }, + "name": "Vertex5;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "CompositeCut26:vertex:11", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex5;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex5", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex5", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex13", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Vertex" + }, + "name": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 12, + "resultPersistentId": "CompositeCut26:vertex:12", + "sourceRefs": [ + { + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge8;:G(Edge1;K-2;:H1071:4,E);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge8;:G(Edge1;K-2;:H1071:4,E)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge8;:G(Edge1;K-2;:H1071:4,E)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex14", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Vertex" + }, + "name": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V;:H1072,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 13, + "resultPersistentId": "CompositeCut26:vertex:13", + "sourceRefs": [ + { + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Edge6;:G(Edge1;K-1;:H1071:4,E);CUT;:H1070:1d,V", + "stageId": "Cut26" + }, + { + "mappedName": "Edge6;:G(Edge1;K-1;:H1071:4,E)", + "objectId": "Box26", + "persistentId": "Box26:mapped:Edge6;:G(Edge1;K-1;:H1071:4,E)", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex15", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Vertex" + }, + "name": "Vertex8;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "CompositeCut26:vertex:14", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex8;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex8", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex8", + "stageId": "Box26" + } + ] + }, + { + "indexedName": "Vertex16", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H1070,V;:H1072,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 16, + "type": "Vertex" + }, + "name": "Vertex7;:H1070,V;:H1072,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 15, + "resultPersistentId": "CompositeCut26:vertex:15", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H1070,V", + "objectId": "Cut26", + "persistentId": "Cut26:mapped:Vertex7;:H1070,V", + "stageId": "Cut26" + }, + { + "mappedName": "Vertex7", + "objectId": "Box26", + "persistentId": "Box26:mapped:Vertex7", + "stageId": "Box26" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "CompositeCut26", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "CompositeCut26", + "status": "native-evidence" + }, + "shape": { + "edges": 32, + "faces": 20, + "solids": 4, + "valid": true, + "volume": 214.60183660255157 + }, + "typeId": "Part::Cut" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "DressupBody27.Shape.Map.txt": { + "sha256": "3cb57aaab91eb08780b933f30f1e29fc3b9b754e40a00bf954427983e0dd7480", + "text": "BeginElementMap v1\n1 PostfixCount 17\nEdge\nFace\nVertex\n;:M;FLT;:H1ef:7,E\n;:H1ef,E\n;:G;FLT;:H1ef:7,F\n;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E\n;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V\n;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V\n;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E\n;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V\n;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V\n;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E\n;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E\n;:M;FLT;:H1ef:7,F\n;:H1ef,F\n;:H1ef,V\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 15 496 1 ;:H1f0,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 7 496 1 ;:H1f0,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 10 496 1 ;:H1f0,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Fillet27.Shape.Map.txt": { + "sha256": "3be2f13410ef64c2b29685bac108136ee81e572c9a09359820c3eb2824017685", + "text": "BeginElementMap v1\n2 PostfixCount 17\nEdge\nFace\nVertex\n;:M;FLT;:H1ef:7,E\n;:H1ef,E\n;:G;FLT;:H1ef:7,F\n;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E\n;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V\n;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V\n;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E\n;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V\n;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V\n;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E\n;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E\n;:M;FLT;:H1ef:7,F\n;:H1ef,F\n;:H1ef,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n" + } + }, + "finalObject": "Fillet27", + "id": "dressup-fillet-1", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "DressupBody27.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "DressupBody27", + "name": "DressupBody27", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FLT;:H1ef:7,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face1;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FLT;:H1ef:7,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face6;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H1ef,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face4;:H1ef,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H1ef,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FLT;:H1ef:7,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face5;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;FLT;:H1ef:7,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face3;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H1ef,F;:H1f0,F", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face2;:H1ef,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H1ef,F;:H1f0,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FLT;:H1ef:7,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge2;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge3;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FLT;:H1ef:7,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge4;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge12;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FLT;:H1ef:7,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge10;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge6;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge11;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge7;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FLT;:H1ef:7,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge9;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge8;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H1ef,E;:H1f0,E", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge5;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H1ef,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex3;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H1ef,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex4;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H1ef,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex7;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H1ef,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex5;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H1ef,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex8;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H1ef,V;:H1f0,V", + "object": "DressupBody27", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex6;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;FLT;:H1ef:7,F;:H1f0,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody27:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:M;FLT;:H1ef:7,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Face1;:M;FLT;:H1ef:7,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Face1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;FLT;:H1ef:7,F;:H1f0,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "DressupBody27:face:1", + "sourceRefs": [ + { + "mappedName": "Face6;:M;FLT;:H1ef:7,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Face6;:M;FLT;:H1ef:7,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Face6", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face6", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:H1f0,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody27:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H1ef,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H1ef,F;:H1f0,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody27:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H1ef,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Face4;:H1ef,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Face4", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face4", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FLT;:H1ef:7,F;:H1f0,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "DressupBody27:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;FLT;:H1ef:7,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Face5;:M;FLT;:H1ef:7,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Face5", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face5", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;FLT;:H1ef:7,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;FLT;:H1ef:7,F;:H1f0,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "DressupBody27:face:5", + "sourceRefs": [ + { + "mappedName": "Face3;:M;FLT;:H1ef:7,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Face3;:M;FLT;:H1ef:7,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Face3", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face3", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H1ef,F;:H1f0,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H1ef,F;:H1f0,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody27:face:6", + "sourceRefs": [ + { + "mappedName": "Face2;:H1ef,F", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Face2;:H1ef,F", + "stageId": "Fillet27" + }, + { + "mappedName": "Face2", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face2", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FLT;:H1ef:7,E;:H1f0,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody27:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:M;FLT;:H1ef:7,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge2;:M;FLT;:H1ef:7,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge2", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge2", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:H1f0,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "DressupBody27:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBody27:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge3;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge3", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge3", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;FLT;:H1ef:7,E;:H1f0,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "DressupBody27:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:M;FLT;:H1ef:7,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge4;:M;FLT;:H1ef:7,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge4", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge4", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E;:H1f0,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody27:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody27:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge12;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge12", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge12", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;FLT;:H1ef:7,E;:H1f0,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "DressupBody27:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:M;FLT;:H1ef:7,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge10;:M;FLT;:H1ef:7,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge10", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge10", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBody27:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge6;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge6", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge6", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E;:H1f0,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "DressupBody27:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:H1f0,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "DressupBody27:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBody27:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge11;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge11", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge11", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBody27:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge7;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge7", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge7", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FLT;:H1ef:7,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;FLT;:H1ef:7,E;:H1f0,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "DressupBody27:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9;:M;FLT;:H1ef:7,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge9;:M;FLT;:H1ef:7,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge9", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge9", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "DressupBody27:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge8;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge8", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge8", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H1ef,E;:H1f0,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H1ef,E;:H1f0,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "DressupBody27:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5;:H1ef,E", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge5;:H1ef,E", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge5", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge5", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "DressupBody27:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H1ef,V;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBody27:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H1ef,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Vertex3;:H1ef,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Vertex3", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex3", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody27:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H1ef,V;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody27:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H1ef,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Vertex4;:H1ef,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Vertex4", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex4", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V;:H1f0,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody27:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H1ef,V;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody27:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H1ef,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Vertex7;:H1ef,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Vertex7", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex7", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H1ef,V;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody27:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H1ef,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Vertex5;:H1ef,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Vertex5", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex5", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V;:H1f0,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "DressupBody27:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H1ef,V;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBody27:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H1ef,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Vertex8;:H1ef,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Vertex8", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex8", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H1ef,V;:H1f0,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H1ef,V;:H1f0,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBody27:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H1ef,V", + "objectId": "Fillet27", + "persistentId": "Fillet27:mapped:Vertex6;:H1ef,V", + "stageId": "Fillet27" + }, + { + "mappedName": "Vertex6", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex6", + "stageId": "DressupBox27" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "DressupBody27", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBody27", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 997.8539816339743 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "DressupBox27", + "name": "DressupBox27", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox27:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox27:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox27:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox27:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox27:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox27:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox27:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox27:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox27:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox27:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox27:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox27:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox27:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox27:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBox27:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBox27:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBox27:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBox27:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox27:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox27:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox27:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox27:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox27:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox27:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox27:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox27:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "DressupBox27", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBox27", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "PartDesign::AdditiveBox" + }, + { + "elementMap2ResourcePaths": [ + "Fillet27.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Fillet27", + "name": "Fillet27", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H1ef,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H1ef,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;FLT;:H1ef:7,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H1ef,F", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H1ef,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H1ef,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H1ef,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H1ef,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H1ef,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H1ef,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FLT;:H1ef:7,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H1ef,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H1ef,E", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H1ef,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H1ef,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H1ef,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H1ef,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H1ef,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "Edge1;:G;FLT;:H1ef:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H1ef,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H1ef,V", + "object": "Fillet27", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox27", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H1ef,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;FLT;:H1ef:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fillet27:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;FLT;:H1ef:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Fillet27:face:1", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face6", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Fillet27:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H1ef,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H1ef,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fillet27:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face4", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FLT;:H1ef:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fillet27:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face5", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;FLT;:H1ef:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;FLT;:H1ef:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Fillet27:face:5", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face3", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H1ef,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H1ef,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fillet27:face:6", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Face2", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FLT;:H1ef:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fillet27:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge2", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Fillet27:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fillet27:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge3", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;FLT;:H1ef:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Fillet27:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge4", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U4;FLT;:H1ef:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fillet27:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fillet27:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge12", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;FLT;:H1ef:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fillet27:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge10", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fillet27:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge6", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U;FLT;:H1ef:7,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Fillet27:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fillet27:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fillet27:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge11", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fillet27:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge7", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FLT;:H1ef:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;FLT;:H1ef:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Fillet27:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge9", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Fillet27:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge8", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H1ef,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H1ef,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Fillet27:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge5", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Fillet27:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H1ef,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H1ef,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fillet27:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex3", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U2;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Fillet27:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H1ef,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H1ef,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fillet27:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex4", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U2;FLT;:H1ef:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fillet27:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H1ef,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H1ef,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fillet27:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex7", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H1ef,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H1ef,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fillet27:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex5", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H1ef:7,F;:U3;FLT;:H1ef:8,E;:U;FLT;:H1ef:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Fillet27:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Edge1", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H1ef,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H1ef,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fillet27:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex8", + "stageId": "DressupBox27" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H1ef,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H1ef,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fillet27:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "DressupBox27", + "persistentId": "DressupBox27:mapped:Vertex6", + "stageId": "DressupBox27" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fillet27", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fillet27", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 997.8539816339743 + }, + "typeId": "PartDesign::Fillet" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "DressupBody28.Shape.Map.txt": { + "sha256": "3f813af5444ba9656de898b34c6321368956a809282f48be4bb0e5f3e27614bc", + "text": "BeginElementMap v1\n1 PostfixCount 17\nEdge\nFace\nVertex\n;:M;FLT;:H28b:7,E\n;:H28b,E\n;:G;FLT;:H28b:7,F\n;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E\n;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V\n;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V\n;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E\n;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V\n;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V\n;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E\n;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E\n;:M;FLT;:H28b:7,F\n;:H28b,F\n;:H28b,V\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 15 652 1 ;:H28c,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 7 652 1 ;:H28c,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 10 652 1 ;:H28c,V 0\n\nNameCount 0\n\nEndMap\n" + }, + "Fillet28.Shape.Map.txt": { + "sha256": "78d659960e780a2f3664d59d083afdd6094a844fac6e8e1ff31ed98f2de594cd", + "text": "BeginElementMap v1\n2 PostfixCount 17\nEdge\nFace\nVertex\n;:M;FLT;:H28b:7,E\n;:H28b,E\n;:G;FLT;:H28b:7,F\n;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E\n;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V\n;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V\n;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E\n;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V\n;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V\n;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E\n;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E\n;:M;FLT;:H28b:7,F\n;:H28b,F\n;:H28b,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n" + } + }, + "finalObject": "Fillet28", + "id": "dressup-fillet-2", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "DressupBody28.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "DressupBody28", + "name": "DressupBody28", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FLT;:H28b:7,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face1;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FLT;:H28b:7,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face6;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H28b,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face4;:H28b,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H28b,F;:H28c,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FLT;:H28b:7,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face5;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;FLT;:H28b:7,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face3;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H28b,F;:H28c,F", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face2;:H28b,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H28b,F;:H28c,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FLT;:H28b:7,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge2;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge3;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FLT;:H28b:7,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge4;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge12;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FLT;:H28b:7,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge10;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge6;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge11;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge7;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FLT;:H28b:7,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge9;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge8;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H28b,E;:H28c,E", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge5;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H28b,E;:H28c,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H28b,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex3;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H28b,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H28b,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex4;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H28b,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H28b,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex7;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H28b,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H28b,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex5;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H28b,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H28b,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex8;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H28b,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H28b,V;:H28c,V", + "object": "DressupBody28", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex6;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H28b,V;:H28c,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;FLT;:H28b:7,F;:H28c,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody28:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:M;FLT;:H28b:7,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Face1;:M;FLT;:H28b:7,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Face1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;FLT;:H28b:7,F;:H28c,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "DressupBody28:face:1", + "sourceRefs": [ + { + "mappedName": "Face6;:M;FLT;:H28b:7,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Face6;:M;FLT;:H28b:7,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Face6", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face6", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:H28c,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody28:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H28b,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H28b,F;:H28c,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody28:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H28b,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Face4;:H28b,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Face4", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face4", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FLT;:H28b:7,F;:H28c,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "DressupBody28:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;FLT;:H28b:7,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Face5;:M;FLT;:H28b:7,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Face5", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face5", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;FLT;:H28b:7,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;FLT;:H28b:7,F;:H28c,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "DressupBody28:face:5", + "sourceRefs": [ + { + "mappedName": "Face3;:M;FLT;:H28b:7,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Face3;:M;FLT;:H28b:7,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Face3", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face3", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H28b,F;:H28c,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H28b,F;:H28c,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody28:face:6", + "sourceRefs": [ + { + "mappedName": "Face2;:H28b,F", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Face2;:H28b,F", + "stageId": "Fillet28" + }, + { + "mappedName": "Face2", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face2", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FLT;:H28b:7,E;:H28c,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody28:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:M;FLT;:H28b:7,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge2;:M;FLT;:H28b:7,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge2", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge2", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:H28c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "DressupBody28:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBody28:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge3;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge3", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge3", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;FLT;:H28b:7,E;:H28c,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "DressupBody28:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:M;FLT;:H28b:7,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge4;:M;FLT;:H28b:7,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge4", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge4", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E;:H28c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody28:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody28:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge12;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge12", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge12", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;FLT;:H28b:7,E;:H28c,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "DressupBody28:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:M;FLT;:H28b:7,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge10;:M;FLT;:H28b:7,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge10", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge10", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBody28:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge6;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge6", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge6", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E;:H28c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "DressupBody28:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:H28c,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "DressupBody28:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBody28:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge11;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge11", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge11", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBody28:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge7;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge7", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge7", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FLT;:H28b:7,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;FLT;:H28b:7,E;:H28c,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "DressupBody28:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9;:M;FLT;:H28b:7,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge9;:M;FLT;:H28b:7,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge9", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge9", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "DressupBody28:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge8;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge8", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge8", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H28b,E;:H28c,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H28b,E;:H28c,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "DressupBody28:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5;:H28b,E", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge5;:H28b,E", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge5", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge5", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "DressupBody28:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H28b,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H28b,V;:H28c,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBody28:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H28b,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Vertex3;:H28b,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Vertex3", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex3", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody28:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H28b,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H28b,V;:H28c,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody28:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H28b,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Vertex4;:H28b,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Vertex4", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex4", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V;:H28c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody28:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H28b,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H28b,V;:H28c,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody28:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H28b,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Vertex7;:H28b,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Vertex7", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex7", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H28b,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H28b,V;:H28c,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody28:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H28b,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Vertex5;:H28b,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Vertex5", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex5", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V;:H28c,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "DressupBody28:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H28b,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H28b,V;:H28c,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBody28:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H28b,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Vertex8;:H28b,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Vertex8", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex8", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H28b,V;:H28c,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H28b,V;:H28c,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBody28:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H28b,V", + "objectId": "Fillet28", + "persistentId": "Fillet28:mapped:Vertex6;:H28b,V", + "stageId": "Fillet28" + }, + { + "mappedName": "Vertex6", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex6", + "stageId": "DressupBox28" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "DressupBody28", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBody28", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 997.8539816339743 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "DressupBox28", + "name": "DressupBox28", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox28:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox28:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox28:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox28:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox28:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox28:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox28:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox28:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox28:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox28:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox28:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox28:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox28:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox28:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBox28:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBox28:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBox28:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBox28:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox28:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox28:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox28:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox28:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox28:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox28:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox28:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox28:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "DressupBox28", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBox28", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "PartDesign::AdditiveBox" + }, + { + "elementMap2ResourcePaths": [ + "Fillet28.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Fillet28", + "name": "Fillet28", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H28b,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H28b,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;FLT;:H28b:7,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H28b,F", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H28b,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H28b,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H28b,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H28b,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H28b,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H28b,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;FLT;:H28b:7,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H28b,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H28b,E", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H28b,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H28b,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H28b,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H28b,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H28b,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "Edge1;:G;FLT;:H28b:7,F" + ], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H28b,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H28b,V", + "object": "Fillet28", + "typeId": "PartDesign::Fillet" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox28", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H28b,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;FLT;:H28b:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fillet28:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;FLT;:H28b:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Fillet28:face:1", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face6", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;FLT;:H28b:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;FLT;:H28b:7,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Fillet28:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H28b,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H28b,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fillet28:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face4", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;FLT;:H28b:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Fillet28:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face5", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;FLT;:H28b:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;FLT;:H28b:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Fillet28:face:5", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face3", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H28b,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H28b,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fillet28:face:6", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Face2", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;FLT;:H28b:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Fillet28:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge2", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Fillet28:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Fillet28:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge3", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;FLT;:H28b:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Fillet28:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge4", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U4;FLT;:H28b:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fillet28:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fillet28:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge12", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;FLT;:H28b:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Fillet28:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge10", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Fillet28:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge6", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U;FLT;:H28b:7,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Fillet28:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Fillet28:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Fillet28:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge11", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Fillet28:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge7", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;FLT;:H28b:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;FLT;:H28b:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Fillet28:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge9", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Fillet28:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge8", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H28b,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H28b,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Fillet28:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge5", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Fillet28:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H28b,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H28b,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Fillet28:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex3", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U2;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Fillet28:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H28b,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H28b,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Fillet28:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex4", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U2;FLT;:H28b:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Fillet28:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H28b,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H28b,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Fillet28:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex7", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H28b,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H28b,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Fillet28:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex5", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;FLT;:H28b:7,F;:U3;FLT;:H28b:8,E;:U;FLT;:H28b:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Fillet28:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Edge1", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H28b,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H28b,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Fillet28:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex8", + "stageId": "DressupBox28" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H28b,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H28b,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Fillet28:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "DressupBox28", + "persistentId": "DressupBox28:mapped:Vertex6", + "stageId": "DressupBox28" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Fillet28", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Fillet28", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 997.8539816339743 + }, + "typeId": "PartDesign::Fillet" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Chamfer29.Shape.Map.txt": { + "sha256": "b865392d4544c882b2c74e31b9d1a8db201974a7d2a5285a568fe1f162409ca7", + "text": "BeginElementMap v1\n2 PostfixCount 17\nEdge\nFace\nVertex\n;:M;CHF;:H8ed:7,E\n;:H8ed,E\n;:G;CHF;:H8ed:7,F\n;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E\n;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V\n;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V\n;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E\n;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V\n;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V\n;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E\n;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E\n;:M;CHF;:H8ed:7,F\n;:H8ed,F\n;:H8ed,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n" + }, + "DressupBody29.Shape.Map.txt": { + "sha256": "478db8a0d0be44ff441d3efe0f249431620614d0b10172ea84b64cc7ab1cca77", + "text": "BeginElementMap v1\n1 PostfixCount 17\nEdge\nFace\nVertex\n;:M;CHF;:H8ed:7,E\n;:H8ed,E\n;:G;CHF;:H8ed:7,F\n;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E\n;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V\n;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V\n;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E\n;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V\n;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V\n;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E\n;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E\n;:M;CHF;:H8ed:7,F\n;:H8ed,F\n;:H8ed,V\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 15 2286 1 ;:H8ee,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 7 2286 1 ;:H8ee,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 10 2286 1 ;:H8ee,V 0\n\nNameCount 0\n\nEndMap\n" + } + }, + "finalObject": "Chamfer29", + "id": "dressup-chamfer-1", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "DressupBody29.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "DressupBody29", + "name": "DressupBody29", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CHF;:H8ed:7,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face1;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CHF;:H8ed:7,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face6;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H8ed,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face4;:H8ed,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H8ed,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CHF;:H8ed:7,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face5;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CHF;:H8ed:7,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face3;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H8ed,F;:H8ee,F", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face2;:H8ed,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H8ed,F;:H8ee,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CHF;:H8ed:7,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge2;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge3;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CHF;:H8ed:7,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge4;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge12;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CHF;:H8ed:7,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge10;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge6;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge11;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge7;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CHF;:H8ed:7,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge9;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge8;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H8ed,E;:H8ee,E", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge5;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H8ed,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex3;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H8ed,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex4;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H8ed,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex7;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H8ed,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex5;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H8ed,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex8;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H8ed,V;:H8ee,V", + "object": "DressupBody29", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex6;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CHF;:H8ed:7,F;:H8ee,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody29:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:M;CHF;:H8ed:7,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Face1;:M;CHF;:H8ed:7,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Face1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CHF;:H8ed:7,F;:H8ee,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "DressupBody29:face:1", + "sourceRefs": [ + { + "mappedName": "Face6;:M;CHF;:H8ed:7,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Face6;:M;CHF;:H8ed:7,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Face6", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face6", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:H8ee,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody29:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H8ed,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H8ed,F;:H8ee,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody29:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H8ed,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Face4;:H8ed,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Face4", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face4", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CHF;:H8ed:7,F;:H8ee,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "DressupBody29:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;CHF;:H8ed:7,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Face5;:M;CHF;:H8ed:7,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Face5", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face5", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CHF;:H8ed:7,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;CHF;:H8ed:7,F;:H8ee,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "DressupBody29:face:5", + "sourceRefs": [ + { + "mappedName": "Face3;:M;CHF;:H8ed:7,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Face3;:M;CHF;:H8ed:7,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Face3", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face3", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H8ed,F;:H8ee,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H8ed,F;:H8ee,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody29:face:6", + "sourceRefs": [ + { + "mappedName": "Face2;:H8ed,F", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Face2;:H8ed,F", + "stageId": "Chamfer29" + }, + { + "mappedName": "Face2", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face2", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CHF;:H8ed:7,E;:H8ee,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody29:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:M;CHF;:H8ed:7,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge2;:M;CHF;:H8ed:7,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge2", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge2", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:H8ee,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "DressupBody29:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBody29:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge3;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge3", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge3", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;CHF;:H8ed:7,E;:H8ee,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "DressupBody29:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:M;CHF;:H8ed:7,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge4;:M;CHF;:H8ed:7,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge4", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge4", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E;:H8ee,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody29:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody29:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge12;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge12", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge12", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;CHF;:H8ed:7,E;:H8ee,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "DressupBody29:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:M;CHF;:H8ed:7,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge10;:M;CHF;:H8ed:7,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge10", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge10", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBody29:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge6;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge6", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge6", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E;:H8ee,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "DressupBody29:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:H8ee,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "DressupBody29:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBody29:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge11;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge11", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge11", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBody29:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge7;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge7", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge7", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CHF;:H8ed:7,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;CHF;:H8ed:7,E;:H8ee,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "DressupBody29:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9;:M;CHF;:H8ed:7,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge9;:M;CHF;:H8ed:7,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge9", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge9", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "DressupBody29:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge8;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge8", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge8", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H8ed,E;:H8ee,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H8ed,E;:H8ee,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "DressupBody29:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5;:H8ed,E", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge5;:H8ed,E", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge5", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge5", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "DressupBody29:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H8ed,V;:H8ee,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBody29:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H8ed,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Vertex3;:H8ed,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Vertex3", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex3", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody29:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H8ed,V;:H8ee,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody29:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H8ed,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Vertex4;:H8ed,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Vertex4", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex4", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V;:H8ee,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody29:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H8ed,V;:H8ee,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody29:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H8ed,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Vertex7;:H8ed,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Vertex7", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex7", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H8ed,V;:H8ee,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody29:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H8ed,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Vertex5;:H8ed,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Vertex5", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex5", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V;:H8ee,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "DressupBody29:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H8ed,V;:H8ee,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBody29:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H8ed,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Vertex8;:H8ed,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Vertex8", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex8", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H8ed,V;:H8ee,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H8ed,V;:H8ee,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBody29:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H8ed,V", + "objectId": "Chamfer29", + "persistentId": "Chamfer29:mapped:Vertex6;:H8ed,V", + "stageId": "Chamfer29" + }, + { + "mappedName": "Vertex6", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex6", + "stageId": "DressupBox29" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "DressupBody29", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBody29", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 994.9999999999998 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "DressupBox29", + "name": "DressupBox29", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox29:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox29:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox29:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox29:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox29:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox29:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox29:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox29:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox29:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox29:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox29:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox29:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox29:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox29:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBox29:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBox29:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBox29:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBox29:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox29:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox29:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox29:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox29:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox29:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox29:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox29:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox29:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "DressupBox29", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBox29", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "PartDesign::AdditiveBox" + }, + { + "elementMap2ResourcePaths": [ + "Chamfer29.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Chamfer29", + "name": "Chamfer29", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H8ed,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H8ed,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CHF;:H8ed:7,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H8ed,F", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H8ed,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H8ed,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H8ed,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H8ed,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H8ed,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H8ed,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CHF;:H8ed:7,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H8ed,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H8ed,E", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H8ed,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H8ed,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H8ed,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H8ed,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H8ed,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "Edge1;:G;CHF;:H8ed:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H8ed,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H8ed,V", + "object": "Chamfer29", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox29", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H8ed,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CHF;:H8ed:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Chamfer29:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CHF;:H8ed:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Chamfer29:face:1", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face6", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Chamfer29:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H8ed,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H8ed,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Chamfer29:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face4", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CHF;:H8ed:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Chamfer29:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face5", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CHF;:H8ed:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;CHF;:H8ed:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Chamfer29:face:5", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face3", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H8ed,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H8ed,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Chamfer29:face:6", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Face2", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CHF;:H8ed:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Chamfer29:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge2", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Chamfer29:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Chamfer29:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge3", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;CHF;:H8ed:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Chamfer29:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge4", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U4;CHF;:H8ed:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Chamfer29:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Chamfer29:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge12", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;CHF;:H8ed:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Chamfer29:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge10", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Chamfer29:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge6", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U;CHF;:H8ed:7,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Chamfer29:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Chamfer29:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Chamfer29:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge11", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Chamfer29:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge7", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CHF;:H8ed:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;CHF;:H8ed:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Chamfer29:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge9", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Chamfer29:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge8", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H8ed,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H8ed,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Chamfer29:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge5", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Chamfer29:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H8ed,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H8ed,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Chamfer29:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex3", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U2;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Chamfer29:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H8ed,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H8ed,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Chamfer29:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex4", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U2;CHF;:H8ed:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Chamfer29:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H8ed,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H8ed,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Chamfer29:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex7", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H8ed,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H8ed,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Chamfer29:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex5", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H8ed:7,F;:U3;CHF;:H8ed:8,E;:U;CHF;:H8ed:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Chamfer29:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Edge1", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H8ed,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H8ed,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Chamfer29:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex8", + "stageId": "DressupBox29" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H8ed,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H8ed,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Chamfer29:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "DressupBox29", + "persistentId": "DressupBox29:mapped:Vertex6", + "stageId": "DressupBox29" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Chamfer29", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Chamfer29", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 994.9999999999998 + }, + "typeId": "PartDesign::Chamfer" + } + ], + "status": "pass", + "stringHasherResource": null + }, + { + "elementMapResources": { + "Chamfer30.Shape.Map.txt": { + "sha256": "4b6cc0e2e2fddb1b0df3ed89567102d08643f0c5d7d3db447f7c696e5669bfa5", + "text": "BeginElementMap v1\n2 PostfixCount 17\nEdge\nFace\nVertex\n;:M;CHF;:H815:7,E\n;:H815,E\n;:G;CHF;:H815:7,F\n;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E\n;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V\n;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V\n;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E\n;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V\n;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V\n;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E\n;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E\n;:M;CHF;:H815:7,F\n;:H815,F\n;:H815,V\n\nMapCount 1\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n" + }, + "DressupBody30.Shape.Map.txt": { + "sha256": "0ad269072a9a42f7ade3b37a2e7adbfc4809ff1c8b53bf4dccd9c769ca0fc857", + "text": "BeginElementMap v1\n1 PostfixCount 17\nEdge\nFace\nVertex\n;:M;CHF;:H815:7,E\n;:H815,E\n;:G;CHF;:H815:7,F\n;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E\n;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V\n;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V\n;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E\n;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V\n;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V\n;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E\n;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E\n;:M;CHF;:H815:7,F\n;:H815,F\n;:H815,V\n\nMapCount 2\n\nElementMap 1 2 3\n\nEdge\n\nChildCount 0\n\nNameCount 16\n0\n:1.2.4 0\n:1.1.7 0\n:1.3.5 0\n:1.4.4 0\n:1.1.d 0\n:1.c.5 0\n:1.a.4 0\n:1.6.5 0\n:1.1.e 0\n:1.1.a 0\n:1.b.5 0\n:1.7.5 0\n:1.9.4 0\n:1.8.5 0\n:1.5.5 0\n\nFace\n\nChildCount 0\n\nNameCount 8\n0\n:2.1.f 0\n:2.6.f 0\n:1.1.6 0\n:2.4.10 0\n:2.5.f 0\n:2.3.f 0\n:2.2.10 0\n\nVertex\n\nChildCount 0\n\nNameCount 11\n0\n:1.1.8 0\n:3.3.11 0\n:1.1.9 0\n:3.4.11 0\n:1.1.b 0\n:3.7.11 0\n:3.5.11 0\n:1.1.c 0\n:3.8.11 0\n:3.6.11 0\n\nEndMap\n\nElementMap 2 1 3\n\nEdge\n\nChildCount 1\n1 0 15 2070 1 ;:H816,E 0\n\nNameCount 0\n\nFace\n\nChildCount 1\n1 0 7 2070 1 ;:H816,F 0\n\nNameCount 0\n\nVertex\n\nChildCount 1\n1 0 10 2070 1 ;:H816,V 0\n\nNameCount 0\n\nEndMap\n" + } + }, + "finalObject": "Chamfer30", + "id": "dressup-chamfer-2", + "roundtripNameDrift": 0, + "stages": [ + { + "elementMap2ResourcePaths": [ + "DressupBody30.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "DressupBody30", + "name": "DressupBody30", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CHF;:H815:7,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face1;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CHF;:H815:7,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face6;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H815,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face4;:H815,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H815,F;:H816,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CHF;:H815:7,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face5;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CHF;:H815:7,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face3;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H815,F;:H816,F", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Face2;:H815,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H815,F;:H816,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CHF;:H815:7,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge2;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:H816,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge3;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CHF;:H815:7,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge4;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E;:H816,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge12;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CHF;:H815:7,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge10;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge6;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:H816,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge11;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge7;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CHF;:H815:7,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge9;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge8;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H815,E;:H816,E", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Edge5;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H815,E;:H816,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H815,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex3;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H815,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H815,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex4;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H815,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H815,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex7;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H815,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H815,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex5;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H815,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H815,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex8;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H815,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H815,V;:H816,V", + "object": "DressupBody30", + "typeId": "PartDesign::Body" + }, + { + "children": [], + "mappedName": "Vertex6;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H815,V;:H816,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CHF;:H815:7,F;:H816,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody30:face:0", + "sourceRefs": [ + { + "mappedName": "Face1;:M;CHF;:H815:7,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Face1;:M;CHF;:H815:7,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Face1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CHF;:H815:7,F;:H816,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "DressupBody30:face:1", + "sourceRefs": [ + { + "mappedName": "Face6;:M;CHF;:H815:7,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Face6;:M;CHF;:H815:7,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Face6", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face6", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:H816,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody30:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H815,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H815,F;:H816,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody30:face:3", + "sourceRefs": [ + { + "mappedName": "Face4;:H815,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Face4;:H815,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Face4", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face4", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CHF;:H815:7,F;:H816,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "DressupBody30:face:4", + "sourceRefs": [ + { + "mappedName": "Face5;:M;CHF;:H815:7,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Face5;:M;CHF;:H815:7,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Face5", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face5", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CHF;:H815:7,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;CHF;:H815:7,F;:H816,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "DressupBody30:face:5", + "sourceRefs": [ + { + "mappedName": "Face3;:M;CHF;:H815:7,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Face3;:M;CHF;:H815:7,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Face3", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face3", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H815,F;:H816,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H815,F;:H816,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody30:face:6", + "sourceRefs": [ + { + "mappedName": "Face2;:H815,F", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Face2;:H815,F", + "stageId": "Chamfer30" + }, + { + "mappedName": "Face2", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face2", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CHF;:H815:7,E;:H816,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "DressupBody30:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2;:M;CHF;:H815:7,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge2;:M;CHF;:H815:7,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge2", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge2", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:H816,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "DressupBody30:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBody30:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge3;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge3", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge3", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;CHF;:H815:7,E;:H816,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "DressupBody30:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4;:M;CHF;:H815:7,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge4;:M;CHF;:H815:7,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge4", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge4", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E;:H816,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody30:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody30:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge12;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge12", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge12", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;CHF;:H815:7,E;:H816,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "DressupBody30:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10;:M;CHF;:H815:7,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge10;:M;CHF;:H815:7,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge10", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge10", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBody30:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge6;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge6", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge6", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E;:H816,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "DressupBody30:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:H816,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "DressupBody30:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBody30:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge11;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge11", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge11", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBody30:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge7;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge7", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge7", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CHF;:H815:7,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;CHF;:H815:7,E;:H816,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "DressupBody30:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9;:M;CHF;:H815:7,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge9;:M;CHF;:H815:7,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge9", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge9", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "DressupBody30:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge8;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge8", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge8", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H815,E;:H816,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H815,E;:H816,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "DressupBody30:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5;:H815,E", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge5;:H815,E", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge5", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge5", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "DressupBody30:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H815,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H815,V;:H816,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBody30:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3;:H815,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Vertex3;:H815,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Vertex3", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex3", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "DressupBody30:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H815,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H815,V;:H816,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBody30:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4;:H815,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Vertex4;:H815,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Vertex4", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex4", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V;:H816,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "DressupBody30:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H815,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H815,V;:H816,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBody30:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7;:H815,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Vertex7;:H815,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Vertex7", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex7", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H815,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H815,V;:H816,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBody30:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5;:H815,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Vertex5;:H815,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Vertex5", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex5", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V;:H816,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "DressupBody30:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H815,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H815,V;:H816,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBody30:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8;:H815,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Vertex8;:H815,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Vertex8", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex8", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H815,V;:H816,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H815,V;:H816,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBody30:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6;:H815,V", + "objectId": "Chamfer30", + "persistentId": "Chamfer30:mapped:Vertex6;:H815,V", + "stageId": "Chamfer30" + }, + { + "mappedName": "Vertex6", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex6", + "stageId": "DressupBox30" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "DressupBody30", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBody30", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 994.9999999999998 + }, + "typeId": "PartDesign::Body" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "X-axis", + "name": "X_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "X_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "X_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "X_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Y-axis", + "name": "Y_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Y_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Y_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Y_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Z-axis", + "name": "Z_Axis", + "names": [ + { + "history": [], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Z_Axis:edge:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Z_Axis", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Z_Axis", + "status": "native-evidence" + }, + "shape": { + "edges": 1, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Line" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XY-plane", + "name": "XY_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XY_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XY_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XY_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "XZ-plane", + "name": "XZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "XZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "XZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "XZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "YZ-plane", + "name": "YZ_Plane", + "names": [ + { + "history": [], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "YZ_Plane:face:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "YZ_Plane", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "YZ_Plane", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 1, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Plane" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "Origin001", + "name": "Origin001", + "names": [ + { + "history": [], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 1, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "Origin001:vertex:0", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "Origin001", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Origin001", + "status": "native-evidence" + }, + "shape": { + "edges": 0, + "faces": 0, + "solids": 0, + "valid": true, + "volume": 0 + }, + "typeId": "App::Point" + }, + { + "elementMap2ResourcePaths": [], + "elementMapSize": 0, + "elementMapVersion": "15.70200.5", + "label": "DressupBox30", + "name": "DressupBox30", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "", + "mappedStringIds": [], + "name": "Vertex8" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 26, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 0, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox30:face:0", + "sourceRefs": [] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox30:face:1", + "sourceRefs": [] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Face3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox30:face:2", + "sourceRefs": [] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox30:face:3", + "sourceRefs": [] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox30:face:4", + "sourceRefs": [] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox30:face:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox30:edge:0", + "sourceRefs": [] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox30:edge:1", + "sourceRefs": [] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox30:edge:2", + "sourceRefs": [] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox30:edge:3", + "sourceRefs": [] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox30:edge:4", + "sourceRefs": [] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox30:edge:5", + "sourceRefs": [] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox30:edge:6", + "sourceRefs": [] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox30:edge:7", + "sourceRefs": [] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge9", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "DressupBox30:edge:8", + "sourceRefs": [] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge10", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "DressupBox30:edge:9", + "sourceRefs": [] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "DressupBox30:edge:10", + "sourceRefs": [] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge12", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "DressupBox30:edge:11", + "sourceRefs": [] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Vertex1", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 0, + "resultPersistentId": "DressupBox30:vertex:0", + "sourceRefs": [] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex2", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "DressupBox30:vertex:1", + "sourceRefs": [] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Vertex3", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "DressupBox30:vertex:2", + "sourceRefs": [] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "DressupBox30:vertex:3", + "sourceRefs": [] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Vertex5", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 4, + "resultPersistentId": "DressupBox30:vertex:4", + "sourceRefs": [] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex6", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "DressupBox30:vertex:5", + "sourceRefs": [] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex7", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "DressupBox30:vertex:6", + "sourceRefs": [] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Vertex8", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "DressupBox30:vertex:7", + "sourceRefs": [] + } + ], + "privateTokenEvidenceComplete": false, + "reason": null, + "resultObjectId": "DressupBox30", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "DressupBox30", + "status": "native-evidence" + }, + "shape": { + "edges": 12, + "faces": 6, + "solids": 1, + "valid": true, + "volume": 999.9999999999998 + }, + "typeId": "PartDesign::AdditiveBox" + }, + { + "elementMap2ResourcePaths": [ + "Chamfer30.Shape.Map.txt" + ], + "elementMapSize": 32, + "elementMapVersion": "15.70200.5", + "label": "Chamfer30", + "name": "Chamfer30", + "names": [ + { + "history": [ + { + "children": [], + "mappedName": "Face1;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face1", + "indexedStringIds": [], + "mappedName": "Face1;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "name": "Face1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face6;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face2", + "indexedStringIds": [], + "mappedName": "Face6;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "name": "Face2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F", + "mappedStringIds": [], + "name": "Face3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face4;:H815,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face4", + "indexedStringIds": [], + "mappedName": "Face4;:H815,F", + "mappedStringIds": [], + "name": "Face4" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face5;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face5", + "indexedStringIds": [], + "mappedName": "Face5;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "name": "Face5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face3;:M;CHF;:H815:7,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face6", + "indexedStringIds": [], + "mappedName": "Face3;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "name": "Face6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Face2;:H815,F", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Face2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Face7", + "indexedStringIds": [], + "mappedName": "Face2;:H815,F", + "mappedStringIds": [], + "name": "Face7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge2;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge2", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge1", + "indexedStringIds": [], + "mappedName": "Edge2;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "name": "Edge1" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge2", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "mappedStringIds": [], + "name": "Edge2" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge3;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge3", + "indexedStringIds": [], + "mappedName": "Edge3;:H815,E", + "mappedStringIds": [], + "name": "Edge3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge4;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge4", + "indexedStringIds": [], + "mappedName": "Edge4;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "name": "Edge4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "mappedStringIds": [], + "name": "Edge5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge12;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge12", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge6", + "indexedStringIds": [], + "mappedName": "Edge12;:H815,E", + "mappedStringIds": [], + "name": "Edge6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge10;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge10", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge7", + "indexedStringIds": [], + "mappedName": "Edge10;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "name": "Edge7" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge6;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge8", + "indexedStringIds": [], + "mappedName": "Edge6;:H815,E", + "mappedStringIds": [], + "name": "Edge8" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge9", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "mappedStringIds": [], + "name": "Edge9" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge10", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "mappedStringIds": [], + "name": "Edge10" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge11;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge11", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge11", + "indexedStringIds": [], + "mappedName": "Edge11;:H815,E", + "mappedStringIds": [], + "name": "Edge11" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge7;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge7", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge12", + "indexedStringIds": [], + "mappedName": "Edge7;:H815,E", + "mappedStringIds": [], + "name": "Edge12" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge9;:M;CHF;:H815:7,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge9", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge13", + "indexedStringIds": [], + "mappedName": "Edge9;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "name": "Edge13" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge8;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge8", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge14", + "indexedStringIds": [], + "mappedName": "Edge8;:H815,E", + "mappedStringIds": [], + "name": "Edge14" + }, + { + "history": [ + { + "children": [], + "mappedName": "Edge5;:H815,E", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Edge15", + "indexedStringIds": [], + "mappedName": "Edge5;:H815,E", + "mappedStringIds": [], + "name": "Edge15" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex1", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "mappedStringIds": [], + "name": "Vertex1" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex3;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex3", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex2", + "indexedStringIds": [], + "mappedName": "Vertex3;:H815,V", + "mappedStringIds": [], + "name": "Vertex2" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex3", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "mappedStringIds": [], + "name": "Vertex3" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex4;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex4", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex4", + "indexedStringIds": [], + "mappedName": "Vertex4;:H815,V", + "mappedStringIds": [], + "name": "Vertex4" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex5", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "mappedStringIds": [], + "name": "Vertex5" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex7;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex7", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex6", + "indexedStringIds": [], + "mappedName": "Vertex7;:H815,V", + "mappedStringIds": [], + "name": "Vertex6" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex5;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex5", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex7", + "indexedStringIds": [], + "mappedName": "Vertex5;:H815,V", + "mappedStringIds": [], + "name": "Vertex7" + }, + { + "history": [ + { + "children": [ + "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "Edge1;:G;CHF;:H815:7,F" + ], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Edge1", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex8", + "indexedStringIds": [], + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "mappedStringIds": [], + "name": "Vertex8" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex8;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex8", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex9", + "indexedStringIds": [], + "mappedName": "Vertex8;:H815,V", + "mappedStringIds": [], + "name": "Vertex9" + }, + { + "history": [ + { + "children": [], + "mappedName": "Vertex6;:H815,V", + "object": "Chamfer30", + "typeId": "PartDesign::Chamfer" + }, + { + "children": [], + "mappedName": "Vertex6", + "object": "DressupBox30", + "typeId": "PartDesign::AdditiveBox" + } + ], + "indexedName": "Vertex10", + "indexedStringIds": [], + "mappedName": "Vertex6;:H815,V", + "mappedStringIds": [], + "name": "Vertex10" + } + ], + "namingEvidenceStatus": "native-evidence", + "nativeEvidence": { + "indexedNameApiEntries": 32, + "internalBuilderEvidence": false, + "mappedNameApiEntries": 32, + "mappedNames": [ + { + "indexedName": "Face1", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face1;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Face" + }, + "name": "Face1;:M;CHF;:H815:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Chamfer30:face:0", + "sourceRefs": [ + { + "mappedName": "Face1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face2", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face6;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Face" + }, + "name": "Face6;:M;CHF;:H815:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 1, + "resultPersistentId": "Chamfer30:face:1", + "sourceRefs": [ + { + "mappedName": "Face6", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face6", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face3", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Edge1;:G;CHF;:H815:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Face" + }, + "name": "Edge1;:G;CHF;:H815:7,F", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Chamfer30:face:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face4", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face4;:H815,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Face" + }, + "name": "Face4;:H815,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Chamfer30:face:3", + "sourceRefs": [ + { + "mappedName": "Face4", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face4", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face5", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face5;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Face" + }, + "name": "Face5;:M;CHF;:H815:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 4, + "resultPersistentId": "Chamfer30:face:4", + "sourceRefs": [ + { + "mappedName": "Face5", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face5", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face6", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face3;:M;CHF;:H815:7,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Face" + }, + "name": "Face3;:M;CHF;:H815:7,F", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 5, + "resultPersistentId": "Chamfer30:face:5", + "sourceRefs": [ + { + "mappedName": "Face3", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face3", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Face7", + "indexedStringIds": [], + "kind": "face", + "mappedName": "Face2;:H815,F", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Face" + }, + "name": "Face2;:H815,F", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Chamfer30:face:6", + "sourceRefs": [ + { + "mappedName": "Face2", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Face2", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge1", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge2;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Edge" + }, + "name": "Edge2;:M;CHF;:H815:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 0, + "resultPersistentId": "Chamfer30:edge:0", + "sourceRefs": [ + { + "mappedName": "Edge2", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge2", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge2", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 1, + "resultPersistentId": "Chamfer30:edge:1", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge3", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge3;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Edge" + }, + "name": "Edge3;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 2, + "resultPersistentId": "Chamfer30:edge:2", + "sourceRefs": [ + { + "mappedName": "Edge3", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge3", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge4", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge4;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Edge" + }, + "name": "Edge4;:M;CHF;:H815:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 3, + "resultPersistentId": "Chamfer30:edge:3", + "sourceRefs": [ + { + "mappedName": "Edge4", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge4", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge5", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U4;CHF;:H815:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Chamfer30:edge:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge6", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge12;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Edge" + }, + "name": "Edge12;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Chamfer30:edge:5", + "sourceRefs": [ + { + "mappedName": "Edge12", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge12", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge7", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge10;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Edge" + }, + "name": "Edge10;:M;CHF;:H815:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 6, + "resultPersistentId": "Chamfer30:edge:6", + "sourceRefs": [ + { + "mappedName": "Edge10", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge10", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge8", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge6;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Edge" + }, + "name": "Edge6;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 7, + "resultPersistentId": "Chamfer30:edge:7", + "sourceRefs": [ + { + "mappedName": "Edge6", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge6", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge9", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U;CHF;:H815:7,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 8, + "resultPersistentId": "Chamfer30:edge:8", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge10", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Edge" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 9, + "resultPersistentId": "Chamfer30:edge:9", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge11", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge11;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 11, + "type": "Edge" + }, + "name": "Edge11;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 10, + "resultPersistentId": "Chamfer30:edge:10", + "sourceRefs": [ + { + "mappedName": "Edge11", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge11", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge12", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge7;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 12, + "type": "Edge" + }, + "name": "Edge7;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 11, + "resultPersistentId": "Chamfer30:edge:11", + "sourceRefs": [ + { + "mappedName": "Edge7", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge7", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge13", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge9;:M;CHF;:H815:7,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 13, + "type": "Edge" + }, + "name": "Edge9;:M;CHF;:H815:7,E", + "stringIds": [] + }, + "relation": "modified", + "resultIndex": 12, + "resultPersistentId": "Chamfer30:edge:12", + "sourceRefs": [ + { + "mappedName": "Edge9", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge9", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge14", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge8;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 14, + "type": "Edge" + }, + "name": "Edge8;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 13, + "resultPersistentId": "Chamfer30:edge:13", + "sourceRefs": [ + { + "mappedName": "Edge8", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge8", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Edge15", + "indexedStringIds": [], + "kind": "edge", + "mappedName": "Edge5;:H815,E", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 15, + "type": "Edge" + }, + "name": "Edge5;:H815,E", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 14, + "resultPersistentId": "Chamfer30:edge:14", + "sourceRefs": [ + { + "mappedName": "Edge5", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge5", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex1", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 1, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 0, + "resultPersistentId": "Chamfer30:vertex:0", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex2", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex3;:H815,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 2, + "type": "Vertex" + }, + "name": "Vertex3;:H815,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 1, + "resultPersistentId": "Chamfer30:vertex:1", + "sourceRefs": [ + { + "mappedName": "Vertex3", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex3", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex3", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 3, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U2;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 2, + "resultPersistentId": "Chamfer30:vertex:2", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex4", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex4;:H815,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 4, + "type": "Vertex" + }, + "name": "Vertex4;:H815,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 3, + "resultPersistentId": "Chamfer30:vertex:3", + "sourceRefs": [ + { + "mappedName": "Vertex4", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex4", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex5", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 5, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U2;CHF;:H815:8,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 4, + "resultPersistentId": "Chamfer30:vertex:4", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex6", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex7;:H815,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 6, + "type": "Vertex" + }, + "name": "Vertex7;:H815,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 5, + "resultPersistentId": "Chamfer30:vertex:5", + "sourceRefs": [ + { + "mappedName": "Vertex7", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex7", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex7", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex5;:H815,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 7, + "type": "Vertex" + }, + "name": "Vertex5;:H815,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 6, + "resultPersistentId": "Chamfer30:vertex:6", + "sourceRefs": [ + { + "mappedName": "Vertex5", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex5", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex8", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 8, + "type": "Vertex" + }, + "name": "Edge1;:G;CHF;:H815:7,F;:U3;CHF;:H815:8,E;:U;CHF;:H815:7,V", + "stringIds": [] + }, + "relation": "generated", + "resultIndex": 7, + "resultPersistentId": "Chamfer30:vertex:7", + "sourceRefs": [ + { + "mappedName": "Edge1", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Edge1", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex9", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex8;:H815,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 9, + "type": "Vertex" + }, + "name": "Vertex8;:H815,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 8, + "resultPersistentId": "Chamfer30:vertex:8", + "sourceRefs": [ + { + "mappedName": "Vertex8", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex8", + "stageId": "DressupBox30" + } + ] + }, + { + "indexedName": "Vertex10", + "indexedStringIds": [], + "kind": "vertex", + "mappedName": "Vertex6;:H815,V", + "mappedStringIds": [], + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "reference": { + "indexedName": { + "index": 10, + "type": "Vertex" + }, + "name": "Vertex6;:H815,V", + "stringIds": [] + }, + "relation": "preserved", + "resultIndex": 9, + "resultPersistentId": "Chamfer30:vertex:9", + "sourceRefs": [ + { + "mappedName": "Vertex6", + "objectId": "DressupBox30", + "persistentId": "DressupBox30:mapped:Vertex6", + "stageId": "DressupBox30" + } + ] + } + ], + "privateTokenEvidenceComplete": true, + "reason": null, + "resultObjectId": "Chamfer30", + "schemaVersion": 1, + "source": "FreeCAD 1.1.1 runtime API", + "stageId": "Chamfer30", + "status": "native-evidence" + }, + "shape": { + "edges": 15, + "faces": 7, + "solids": 1, + "valid": true, + "volume": 994.9999999999998 + }, + "typeId": "PartDesign::Chamfer" + } + ], + "status": "pass", + "stringHasherResource": null + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "cases": 30, + "failed": 0, + "passed": 30 + } +} diff --git a/config/freecad-desktop-oracle.json b/config/freecad-desktop-oracle.json new file mode 100644 index 0000000..92d0af7 --- /dev/null +++ b/config/freecad-desktop-oracle.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "profile": "desktop", + "buildDirectory": ".cache/freecad/build-desktop", + "installDirectory": ".cache/freecad/install-desktop", + "sysrootDirectory": ".cache/freecad/sysroot", + "requiredRuntime": "FreeCAD", + "cmake": { + "buildGui": true, + "developerTests": false, + "pivyProbe": false, + "externalSmesh": false, + "disabledOptionalModules": ["Cloud", "JtReader", "VR", "TemplatePyMod", "Sandbox"] + }, + "sourceModules": [ + "AddonManager", "Assembly", "BIM", "CAM", "Cloud", "Draft", "Fem", "Help", "Idf", "Import", "Inspection", "JtReader", "Material", "Measure", "Mesh", "MeshPart", "OpenSCAD", "Part", "PartDesign", "Plot", "Points", "ReverseEngineering", "Robot", "Sandbox", "Show", "Sketcher", "Spreadsheet", "Start", "Surface", "TechDraw", "TemplatePyMod", "Test", "Tux", "Web" + ], + "evidence": { + "configureCommand": "FREECAD_ORACLE_PROFILE=desktop ./npmw run configure:freecad-native", + "buildCommand": "FREECAD_ORACLE_PROFILE=desktop ./npmw run build:freecad-native", + "probeCommand": "FREECAD_ORACLE_PROFILE=desktop xvfb-run -a ./npmw run probe:freecad-reference", + "checkCommand": "./npmw run check:freecad-desktop-oracle", + "fcstdNativeRoundTripCommand": "./npmw run test:freecad-fcstd-native", + "probeReport": ".cache/freecad/reference-desktop.json" + }, + "artifact": { + "path": ".cache/freecad/install-desktop/bin/FreeCAD", + "reportedVersion": "FreeCAD 1.1.1 Revision: 14556 (Git)", + "sizeBytes": 153160, + "sha256": "2c75642f0cdfd8a44ecb46aeb1cd6ef5e5643b313c5e3d617e3766406766ef70" + }, + "verification": { + "status": "verified", + "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "guiUp": true, + "moduleCount": 34, + "moduleStatusSummary": { + "compiled-importable": 30, + "not-built": 4 + }, + "disabledModules": ["Cloud", "JtReader", "Sandbox", "TemplatePyMod"], + "probeObjects": ["Part::Box", "Part::Cylinder", "Part::Sphere", "Part::Cone", "Part::Feature", "PartDesign::Feature", "Sketcher::SketchObject"] + }, + "status": "desktop-build-probed" +} diff --git a/config/freecad-entrypoint-inventory.json b/config/freecad-entrypoint-inventory.json new file mode 100644 index 0000000..566ebf9 --- /dev/null +++ b/config/freecad-entrypoint-inventory.json @@ -0,0 +1,577 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + }, + "generatedBy": "scripts/generate-freecad-entrypoint-inventory.mjs", + "sourceInventory": "config/freecad-source-inventory.json", + "formats": [ + { + "id": "FCStd", + "category": "project", + "modules": [ + "App", + "Gui" + ], + "sourceEvidence": [ + "src/App/Document.cpp", + "src/Gui/Document.cpp" + ], + "webStrategy": "native-parser", + "compatibility": "read-only", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "BREP", + "category": "geometry", + "modules": [ + "Part" + ], + "sourceEvidence": [ + "src/Mod/Part/App/FeaturePartImportBrep.cpp" + ], + "webStrategy": "occt-worker", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "STEP", + "category": "geometry", + "modules": [ + "Part", + "Import" + ], + "sourceEvidence": [ + "src/Mod/Part/App/FeaturePartImportStep.cpp", + "src/Mod/Import/App/WriterStep.cpp" + ], + "webStrategy": "occt-worker", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "IGES", + "category": "geometry", + "modules": [ + "Part", + "Import" + ], + "sourceEvidence": [ + "src/Mod/Part/App/FeaturePartImportIges.cpp", + "src/Mod/Import/App/WriterIges.cpp" + ], + "webStrategy": "occt-worker", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "STL", + "category": "mesh", + "modules": [ + "Mesh", + "MeshPart" + ], + "sourceEvidence": [ + "src/Mod/Mesh/App/Importer.cpp", + "src/Mod/Mesh/App/Exporter.cpp" + ], + "webStrategy": "worker-adapter", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "OBJ", + "category": "mesh", + "modules": [ + "Mesh" + ], + "sourceEvidence": [ + "src/Mod/Mesh/App/Importer.cpp", + "src/Mod/Mesh/App/Exporter.cpp" + ], + "webStrategy": "worker-adapter", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "PLY", + "category": "mesh", + "modules": [ + "Mesh" + ], + "sourceEvidence": [ + "src/Mod/Mesh/App/Importer.cpp", + "src/Mod/Mesh/App/Exporter.cpp" + ], + "webStrategy": "worker-adapter", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "DXF", + "category": "2d", + "modules": [ + "Draft", + "Import" + ], + "sourceEvidence": [ + "src/Mod/Draft/importDXF.py", + "src/Mod/Import/App/dxf/ImpExpDxf.cpp" + ], + "webStrategy": "worker-adapter", + "compatibility": "read-only", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "SVG", + "category": "drawing", + "modules": [ + "Draft", + "TechDraw" + ], + "sourceEvidence": [ + "src/Mod/Draft/importSVG.py", + "src/Mod/TechDraw/App/TechDrawExport.cpp" + ], + "webStrategy": "sanitized-parser", + "compatibility": "read-only", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "PDF", + "category": "drawing", + "modules": [ + "TechDraw" + ], + "sourceEvidence": [ + "src/Mod/TechDraw/App/TechDrawExport.cpp" + ], + "webStrategy": "server-export", + "compatibility": "read-only", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "IFC", + "category": "bim", + "modules": [ + "BIM" + ], + "sourceEvidence": [ + "src/Mod/BIM/importers/importIFC.py" + ], + "webStrategy": "sandboxed-adapter", + "compatibility": "unsupported", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "CSV", + "category": "data", + "modules": [ + "Spreadsheet" + ], + "sourceEvidence": [ + "src/Mod/Spreadsheet/App/SheetPyImp.cpp" + ], + "webStrategy": "facade-parser", + "compatibility": "experimental", + "roundTrip": true, + "status": "inventory-recorded" + }, + { + "id": "GCODE", + "category": "manufacturing", + "modules": [ + "CAM" + ], + "sourceEvidence": [ + "src/Mod/CAM/PathCommands.py" + ], + "webStrategy": "sandboxed-adapter", + "compatibility": "unsupported", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "JT", + "category": "geometry", + "modules": [ + "JtReader" + ], + "sourceEvidence": [ + "src/Mod/JtReader/CMakeLists.txt" + ], + "webStrategy": "proxy-resource", + "compatibility": "unsupported", + "roundTrip": false, + "status": "inventory-recorded" + }, + { + "id": "IDF", + "category": "electronics", + "modules": [ + "Idf" + ], + "sourceEvidence": [ + "src/Mod/Idf/Idf.py" + ], + "webStrategy": "proxy-resource", + "compatibility": "unsupported", + "roundTrip": false, + "status": "inventory-recorded" + } + ], + "entrypoints": [ + { + "id": "python-api", + "category": "scripting", + "modules": [ + "App", + "Gui" + ], + "sourceEvidence": [ + "src/App/ApplicationPy.cpp", + "src/Gui/ApplicationPy.cpp" + ], + "webStrategy": "sandboxed-interpreter", + "compatibility": "unsupported", + "execution": false, + "status": "inventory-recorded" + }, + { + "id": "macro-fcmacro", + "category": "scripting", + "modules": [ + "Gui" + ], + "sourceEvidence": [ + "src/Gui/CommandMacro.cpp" + ], + "webStrategy": "blocked-resource", + "compatibility": "unsupported", + "execution": false, + "status": "inventory-recorded" + }, + { + "id": "addon-package", + "category": "extension", + "modules": [ + "AddonManager" + ], + "sourceEvidence": [ + "src/Mod/AddonManager" + ], + "webStrategy": "signed-catalog", + "compatibility": "unsupported", + "execution": false, + "status": "inventory-recorded" + }, + { + "id": "preferences", + "category": "configuration", + "modules": [ + "App", + "Gui" + ], + "sourceEvidence": [ + "src/Base/Parameter.cpp", + "src/Gui/PreferencePages" + ], + "webStrategy": "namespaced-settings", + "compatibility": "experimental", + "execution": false, + "status": "inventory-recorded" + }, + { + "id": "clipboard", + "category": "desktop", + "modules": [ + "Gui" + ], + "sourceEvidence": [ + "src/Gui/MainWindow.cpp" + ], + "webStrategy": "browser-clipboard-permission", + "compatibility": "unsupported", + "execution": false, + "status": "inventory-recorded" + }, + { + "id": "print-job", + "category": "desktop", + "modules": [ + "Gui", + "TechDraw" + ], + "sourceEvidence": [ + "src/Gui/MainWindow.cpp", + "src/Mod/TechDraw/Gui/PagePrinter.cpp" + ], + "webStrategy": "server-export", + "compatibility": "unsupported", + "execution": false, + "status": "inventory-recorded" + } + ], + "moduleCoverage": [ + { + "name": "AddonManager", + "sourcePath": "src/Mod/AddonManager", + "coveredBy": [ + "addon-package" + ], + "status": "entrypoint-covered" + }, + { + "name": "Assembly", + "sourcePath": "src/Mod/Assembly", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "BIM", + "sourcePath": "src/Mod/BIM", + "coveredBy": [ + "IFC" + ], + "status": "entrypoint-covered" + }, + { + "name": "CAM", + "sourcePath": "src/Mod/CAM", + "coveredBy": [ + "GCODE" + ], + "status": "entrypoint-covered" + }, + { + "name": "Cloud", + "sourcePath": "src/Mod/Cloud", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Draft", + "sourcePath": "src/Mod/Draft", + "coveredBy": [ + "DXF", + "SVG" + ], + "status": "entrypoint-covered" + }, + { + "name": "Fem", + "sourcePath": "src/Mod/Fem", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Help", + "sourcePath": "src/Mod/Help", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Idf", + "sourcePath": "src/Mod/Idf", + "coveredBy": [ + "IDF" + ], + "status": "entrypoint-covered" + }, + { + "name": "Import", + "sourcePath": "src/Mod/Import", + "coveredBy": [ + "STEP", + "IGES", + "DXF" + ], + "status": "entrypoint-covered" + }, + { + "name": "Inspection", + "sourcePath": "src/Mod/Inspection", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "JtReader", + "sourcePath": "src/Mod/JtReader", + "coveredBy": [ + "JT" + ], + "status": "entrypoint-covered" + }, + { + "name": "Material", + "sourcePath": "src/Mod/Material", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Measure", + "sourcePath": "src/Mod/Measure", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Mesh", + "sourcePath": "src/Mod/Mesh", + "coveredBy": [ + "STL", + "OBJ", + "PLY" + ], + "status": "entrypoint-covered" + }, + { + "name": "MeshPart", + "sourcePath": "src/Mod/MeshPart", + "coveredBy": [ + "STL" + ], + "status": "entrypoint-covered" + }, + { + "name": "OpenSCAD", + "sourcePath": "src/Mod/OpenSCAD", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Part", + "sourcePath": "src/Mod/Part", + "coveredBy": [ + "BREP", + "STEP", + "IGES" + ], + "status": "entrypoint-covered" + }, + { + "name": "PartDesign", + "sourcePath": "src/Mod/PartDesign", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Plot", + "sourcePath": "src/Mod/Plot", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Points", + "sourcePath": "src/Mod/Points", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "ReverseEngineering", + "sourcePath": "src/Mod/ReverseEngineering", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Robot", + "sourcePath": "src/Mod/Robot", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Sandbox", + "sourcePath": "src/Mod/Sandbox", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Show", + "sourcePath": "src/Mod/Show", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Sketcher", + "sourcePath": "src/Mod/Sketcher", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Spreadsheet", + "sourcePath": "src/Mod/Spreadsheet", + "coveredBy": [ + "CSV" + ], + "status": "entrypoint-covered" + }, + { + "name": "Start", + "sourcePath": "src/Mod/Start", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Surface", + "sourcePath": "src/Mod/Surface", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "TechDraw", + "sourcePath": "src/Mod/TechDraw", + "coveredBy": [ + "SVG", + "PDF", + "print-job" + ], + "status": "entrypoint-covered" + }, + { + "name": "TemplatePyMod", + "sourcePath": "src/Mod/TemplatePyMod", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Test", + "sourcePath": "src/Mod/Test", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Tux", + "sourcePath": "src/Mod/Tux", + "coveredBy": [], + "status": "scope-only" + }, + { + "name": "Web", + "sourcePath": "src/Mod/Web", + "coveredBy": [], + "status": "scope-only" + } + ], + "policy": { + "unsupportedExecution": [ + "Python API", + "FCMacro", + "addon package", + "clipboard", + "print job" + ], + "unknownOrUnlistedEntries": "fail-inventory-check", + "untrustedContent": "never-execute" + } +} diff --git a/config/freecad-exact-history-elementmap-gate.json b/config/freecad-exact-history-elementmap-gate.json new file mode 100644 index 0000000..9b3447b --- /dev/null +++ b/config/freecad-exact-history-elementmap-gate.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-composite-history-elementmap2", + "requiredCases": 30, + "requiredFreecadVersion": "1.1.1", + "requiredFreecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "requirements": { + "wrongBindings": 0, + "unexplainedRelations": 0, + "roundtripNameDrift": 0, + "elementMap2ParseFailures": 0, + "elementMap2SemanticFailures": 0, + "elementMap2TokenWriterFailures": 0, + "stringHasherParseFailures": 0, + "stringHasherSemanticFailures": 0, + "stringHasherEvidenceFailures": 0, + "namingEvidenceMissing": 0, + "namingEvidenceBoundaryViolations": 0 + } +} diff --git a/config/freecad-execution-plan.json b/config/freecad-execution-plan.json new file mode 100644 index 0000000..e46f40a --- /dev/null +++ b/config/freecad-execution-plan.json @@ -0,0 +1,215 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "bitbybitVersion": "1.1.1", + "occtNativeVersion": "8.0.0" + }, + "lanes": [ + { "id": "ORACLE", "ownerRole": "FreeCAD reference and inventory", "scope": "Desktop/headless oracle, manifests, golden fixtures" }, + { "id": "KERNEL", "ownerRole": "Geometry kernel and WASM", "scope": "Bitbybit, OCCT bindings, Workers, shape ownership" }, + { "id": "TOPO", "ownerRole": "Topology naming", "scope": "TopoRef, history, signatures, migration and selection" }, + { "id": "SKETCH", "ownerRole": "Sketcher solver", "scope": "planegcs, constraints, sketch editing and diagnostics" }, + { "id": "CORE", "ownerRole": "Parametric document core", "scope": "Document, DAG, Part, PartDesign, Body and attachment" }, + { "id": "IO", "ownerRole": "Persistence and interoperability", "scope": "FCStd, BRep resources, formats and round-trip" }, + { "id": "DOC", "ownerRole": "Production workbenches", "scope": "TechDraw, Spreadsheet, Draft and Plot" }, + { "id": "ENGINEERING", "ownerRole": "Engineering workbenches", "scope": "Assembly, BIM, Mesh and Surface" }, + { "id": "PLATFORM", "ownerRole": "Analysis and platform capabilities", "scope": "FEM, CAM, Robot, Inspection, data, addons and scripts" }, + { "id": "QUALITY", "ownerRole": "Quality and release", "scope": "Browsers, performance, security, migrations and release" } + ], + "gates": [ + { "id": "G0", "title": "Reference inventory", "requiredPrograms": ["P01"] }, + { "id": "G1", "title": "Browser geometry kernel", "requiredPrograms": ["P02"] }, + { "id": "G2", "title": "Stable topology", "requiredPrograms": ["P03"] }, + { "id": "G3", "title": "Sketcher parity", "requiredPrograms": ["P04"] }, + { "id": "G4", "title": "Parametric Part and PartDesign", "requiredPrograms": ["P05"] }, + { "id": "G5", "title": "FCStd round-trip", "requiredPrograms": ["P06"] }, + { "id": "G6", "title": "Production workbenches", "requiredPrograms": ["P07"] }, + { "id": "G7", "title": "Engineering workbenches", "requiredPrograms": ["P08"] }, + { "id": "G8", "title": "Analysis and platform", "requiredPrograms": ["P09"] }, + { "id": "G9", "title": "Release", "requiredPrograms": ["P10"] } + ], + "programs": [ + { + "id": "P01", + "title": "Complete desktop FreeCAD oracle and 34-module inventory", + "ownerLane": "ORACLE", + "dependencies": [], + "gate": "G0", + "tasks": [ + { "id": "ORA-01", "title": "Create full desktop oracle build profile", "status": "completed", "dependencies": [], "deliverables": ["Pinned GUI/workbench CMake profile", "Build manifest and hashes"], "acceptance": ["Clean build reports FreeCAD 1.1.1 at the locked commit", "GUI and workbench modules are probeable"] }, + { "id": "ORA-02", "title": "Extend runtime probe for GUI and module failure classes", "status": "completed", "dependencies": ["ORA-01"], "deliverables": ["GUI-aware probe", "Compiled/import/gui-only status model"], "acceptance": ["Probe distinguishes missing build, import failure and GUI-only", "Report is deterministic JSON"] }, + { "id": "INV-01", "title": "Generate 34-module and workbench inventory", "status": "completed", "dependencies": ["ORA-02"], "deliverables": ["Module/workbench/command manifest", "Source locations"], "acceptance": ["All src/Mod directories are classified", "No unregistered workbench command"] }, + { "id": "INV-02", "title": "Inventory TypeId and Property metadata", "status": "completed", "dependencies": ["ORA-02"], "deliverables": ["TypeId/property/default/status manifest", "Source-traceable static TypeId/property candidate inventory", "Minimal object fixtures"], "acceptance": ["Core objects trace to source and runtime", "Read-only/hidden/output flags are recorded", "Static candidates are reproducible from the locked source checkout and remain explicitly unpromoted until runtime probes confirm them"] }, + { "id": "INV-03", "title": "Inventory GUI commands and selection preconditions", "status": "completed", "dependencies": ["INV-01"], "deliverables": ["Menu/toolbar/context/shortcut map", "Selection and task preconditions"], "acceptance": ["Every GUI command has enabled/disabled oracle cases"] }, + { "id": "INV-04", "title": "Inventory formats, preferences, Python and addon entry points", "status": "completed", "dependencies": ["INV-01"], "deliverables": ["Format and optional-library matrix", "Preference/API/addon inventory"], "acceptance": ["Every entry has web strategy and compatibility level"] }, + { "id": "BASE-03", "title": "Expand oracle fixtures", "status": "completed", "dependencies": ["INV-02", "INV-03"], "deliverables": ["100 success fixtures", "51 failure fixtures"], "acceptance": ["Fixtures cover core objects, units, topology changes and errors"] }, + { "id": "BASE-04", "title": "Build oracle-to-Web semantic comparator", "status": "completed", "dependencies": ["BASE-03"], "deliverables": ["Tree/property/shape/topology comparator", "Diff report schema"], "acceptance": ["Known differences are explicit", "Unknown differences fail the gate"] } + ] + }, + { + "id": "P02", + "title": "Native OCCT Worker browser execution and Boolean gates", + "ownerLane": "KERNEL", + "dependencies": ["P01"], + "gate": "G1", + "tasks": [ + { "id": "BYB-03", "title": "Reproducible Bitbybit and OCCT source build", "status": "completed", "dependencies": ["ORA-01"], "deliverables": ["Pinned toolchain build", "Patch, ABI, hash and license manifest"], "acceptance": ["Clean rebuild has the declared exports and traceable hashes"] }, + { "id": "BYB-05", "title": "Version and harden Worker protocol", "status": "completed", "dependencies": ["BYB-03"], "deliverables": ["Capabilities handshake", "Cancellation, timeout, crash and stale-result protocol"], "acceptance": ["Malformed messages fail safely", "Restart does not accept stale results"] }, + { "id": "BYB-06", "title": "Define shape ownership and release accounting", "status": "completed", "dependencies": ["BYB-05"], "deliverables": ["Ownership ledger", "Reference counting and disposal metrics", "Browser Worker crash recovery and reinitialization contract"], "acceptance": ["No use-after-release", "Long Boolean sessions remain within memory budget", "A failed Worker is replaced before a retry and pending requests are rejected"] }, + { "id": "BROWSER-OCCT-01", "title": "Instantiate native history WASM in Chrome", "status": "completed", "dependencies": ["BYB-05"], "deliverables": ["Chrome harness", "COOP/COEP, OPFS, and artifact-loading evidence"], "acceptance": ["JS/WASM Worker initializes in Chrome", "Abort and worker crash are recoverable"] }, + { "id": "BYB-07", "title": "Run three-way Boolean golden comparison", "status": "completed", "dependencies": ["BROWSER-OCCT-01", "BASE-04"], "deliverables": ["Fuse/Cut/Common FreeCAD-Bitbybit-native reports", "Tolerance and error taxonomy"], "acceptance": ["Geometry and history differences are explained", "No silent topology mismatch"] }, + { "id": "MEM-OCCT-01", "title": "Enforce Worker memory gate", "status": "completed", "dependencies": ["BYB-06", "BYB-07"], "deliverables": ["1000-operation stress fixture", "Heap/WASM/GPU retention report"], "acceptance": ["Peak and retained memory meet budgets", "All temporary shapes are accounted for"] }, + { "id": "BYB-08", "title": "Automate upstream ABI and golden drift", "status": "completed", "dependencies": ["BYB-07"], "deliverables": ["API/ABI diff job", "Golden drift report"], "acceptance": ["Dependency upgrades cannot silently change capabilities"] } + ] + }, + { + "id": "P03", + "title": "Stable TopoRef, signatures and mutation replay", + "ownerLane": "TOPO", + "dependencies": ["P02"], + "gate": "G2", + "tasks": [ + { "id": "TSN-03", "title": "Complete native history coverage", "status": "completed", "dependencies": ["BYB-07"], "deliverables": ["Generated/Modified/Deleted for Boolean and features"], "acceptance": ["Every source subshape has an explainable relation"] }, + { "id": "TSN-04", "title": "Implement analytic curve and surface signatures", "status": "completed", "dependencies": ["TSN-03"], "deliverables": ["Curve/surface parameter signatures", "Orientation and tolerance normalization"], "acceptance": ["Signatures do not depend on triangulation precision"] }, + { "id": "TSN-05", "title": "Add adjacency and confidence matching", "status": "completed", "dependencies": ["TSN-04"], "deliverables": ["Adjacency graph", "One-to-one/one-to-many scoring"], "acceptance": ["Rigid transforms and parameter edits retain safe references"] }, + { "id": "TSN-06", "title": "Handle symmetry, split and merge ambiguity", "status": "completed", "dependencies": ["TSN-05"], "deliverables": ["Ambiguity policy", "Candidate and confidence diagnostics"], "acceptance": ["Low confidence never binds silently"] }, + { "id": "TSN-07", "title": "Map Boolean, Pattern and cross-Body history", "status": "completed", "dependencies": ["TSN-03", "TSN-06"], "deliverables": ["Multi-input source mapping", "Pattern instance lineage"], "acceptance": ["Every result relation identifies its source object"] }, + { "id": "TSN-08", "title": "Persist and migrate TopoRef everywhere", "status": "completed", "dependencies": ["TSN-07"], "deliverables": ["LinkSub/external geometry/FCStd migration", "Schema upgrade fixtures"], "acceptance": ["Save/load and version upgrades preserve stable/ambiguous/deleted states"] }, + { "id": "TSN-09", "title": "Connect 3D pick, preselect and candidate repair", "status": "completed", "dependencies": ["TSN-08"], "deliverables": ["Facade selection contract", "Candidate highlight and repair flow"], "acceptance": ["UI never persists transient mesh indexes"] }, + { "id": "TSN-10", "title": "Run parameter mutation and fuzz replay", "status": "completed", "dependencies": ["TSN-07", "TSN-09"], "deliverables": ["100-model/1000-mutation suite", "Wrong-bind audit"], "acceptance": ["No silent wrong binding", "All ambiguity is diagnosable"] } + ] + }, + { + "id": "P04", + "title": "planegcs WASM and complete Sketcher constraints", + "ownerLane": "SKETCH", + "dependencies": ["P01", "P03"], + "gate": "G3", + "tasks": [ + { "id": "SK-03", "title": "Build planegcs WASM", "status": "completed", "dependencies": ["ORA-01"], "deliverables": ["Minimal source graph", "Emscripten build and hashes"], "acceptance": ["Deterministic solve works in a dedicated Worker"] }, + { "id": "SK-04", "title": "Finalize solver protocol and lifecycle", "status": "completed", "dependencies": ["SK-03"], "deliverables": ["Capabilities and diagnostics", "Cancel/stale/crash recovery"], "acceptance": ["Provider replacement does not change Facade contracts"] }, + { "id": "SK-05", "title": "Complete sketch geometry model", "status": "completed", "dependencies": ["SK-04"], "deliverables": ["Ellipse, B-spline, periodic and construction geometry"], "acceptance": ["Geometry round-trips with stable IDs"] }, + { "id": "SK-06", "title": "Implement complete geometric constraints", "status": "completed", "dependencies": ["SK-04", "SK-05"], "deliverables": ["Coincident through block constraint set"], "acceptance": ["Each constraint has FreeCAD success and failure fixtures"] }, + { "id": "SK-07", "title": "Implement dimensional/reference constraints and diagnoses", "status": "completed", "dependencies": ["SK-06"], "deliverables": ["Driving/reference dimensions", "DOF/redundant/conflicting classification"], "acceptance": ["Solver classifications match FreeCAD fixtures"] }, + { "id": "SK-08", "title": "Implement support and external geometry", "status": "completed", "dependencies": ["TSN-09", "SK-06"], "deliverables": ["Plane/face support", "Projection and CarbonCopy"], "acceptance": ["Upstream topology migration updates sketch references safely"] }, + { "id": "SK-09", "title": "Complete interactive editor", "status": "completed", "dependencies": ["SK-07", "SK-08"], "deliverables": ["Trim/extend/split/drag/autoconstraint", "Keyboard and pointer replay"], "acceptance": ["Editing and task lifecycle match oracle behavior"] }, + { "id": "SK-10", "title": "Complete B-spline editing", "status": "completed", "dependencies": ["SK-05", "SK-09"], "deliverables": ["Poles/knots/weights/degree/periodic editing"], "acceptance": ["B-spline constraints and round-trip fixtures pass"] }, + { "id": "SK-11", "title": "Validate feature profiles", "status": "completed", "dependencies": ["SK-08", "SK-10"], "deliverables": ["Open/closed/multi-ring/self-intersection classifier"], "acceptance": ["PartDesign consumes profiles with FreeCAD-compatible errors"] }, + { "id": "SK-12", "title": "Run Sketcher golden and stress suite", "status": "completed", "dependencies": ["SK-07", "SK-09", "SK-11"], "deliverables": ["500-model suite", "Solve time and determinism report"], "acceptance": ["Success, conflict, redundancy and drag cases pass budgets"] } + ] + }, + { + "id": "P05", + "title": "Part and PartDesign parametric closure", + "ownerLane": "CORE", + "dependencies": ["P03", "P04"], + "gate": "G4", + "tasks": [ + { "id": "CORE-09", "title": "Complete Body, Origin and Tip rules", "status": "completed", "dependencies": ["TSN-08"], "deliverables": ["Feature ordering and Tip redirection", "Single-solid enforcement"], "acceptance": ["Suppression, deletion and reorder match FreeCAD"] }, + { "id": "CORE-10", "title": "Implement Support and MapMode", "status": "completed", "dependencies": ["TSN-09", "CORE-09"], "deliverables": ["Support schema", "Attachment engine modes"], "acceptance": ["Face/plane support survives topology migration"] }, + { "id": "CORE-11", "title": "Implement AttachmentOffset and local coordinates", "status": "completed", "dependencies": ["CORE-10"], "deliverables": ["Placement composition", "Local coordinate-chain tests"], "acceptance": ["Result placements match FreeCAD within tolerance"] }, + { "id": "PART-ALL", "title": "Complete Part objects and operations", "status": "completed", "dependencies": ["TSN-07", "CORE-11"], "deliverables": ["Primitive, Boolean, builder, modification and check operations"], "acceptance": ["Part command fixtures and STEP/IGES/BREP gates pass"] }, + { "id": "PD-BASE", "title": "Complete Pad, Pocket, Revolution and Groove modes", "status": "completed", "dependencies": ["SK-11", "CORE-11"], "deliverables": ["Lengths, to-face, through-all, taper and midplane modes"], "acceptance": ["Parameter edits recompute with native history"] }, + { "id": "PD-LOFT", "title": "Implement additive/subtractive loft and pipe", "status": "completed", "dependencies": ["PD-BASE"], "deliverables": ["Section/path/transition features"], "acceptance": ["Failure recovery retains the last valid shape"] }, + { "id": "PD-DRESSUP", "title": "Complete dress-up features", "status": "completed", "dependencies": ["TSN-09", "PD-BASE"], "deliverables": ["Fillet/chamfer/draft/thickness with stable selections"], "acceptance": ["Edge/face changes migrate or report ambiguity"] }, + { "id": "PD-TRANSFORM", "title": "Complete transforms and Hole", "status": "completed", "dependencies": ["CORE-10", "PD-DRESSUP"], "deliverables": ["Feature-list transforms", "Full Hole standards and placement"], "acceptance": ["Single-solid, axis/plane and thread semantics are tested"] }, + { "id": "PD-CLOSURE", "title": "Run full parametric lifecycle", "status": "completed", "dependencies": ["PART-ALL", "PD-LOFT", "PD-TRANSFORM"], "deliverables": ["Create/edit/recompute/undo/save/load suite"], "acceptance": ["No stale shapes or broken Tip/Support references"] } + ] + }, + { + "id": "P06", + "title": "FCStd bidirectional round-trip", + "ownerLane": "IO", + "dependencies": ["P03", "P05"], + "gate": "G5", + "tasks": [ + { "id": "FC-04", "title": "Map Document.xml and GuiDocument.xml", "status": "completed", "dependencies": ["INV-02"], "deliverables": ["Object/property/extension mapper", "View state mapper"], "acceptance": ["Known metadata round-trips without semantic loss"] }, + { "id": "FC-05", "title": "Read and write BRep/Shape resources", "status": "completed", "dependencies": ["PART-ALL", "FC-04"], "deliverables": ["Shape resource resolver", "Topology/precision/color report"], "acceptance": ["Shape counts and mass properties match oracle"] }, + { "id": "FC-06", "title": "Serialize expressions, links, TopoRef and Sketcher", "status": "completed", "dependencies": ["TSN-08", "SK-12", "FC-04"], "deliverables": ["Typed property codecs", "Reference migration report"], "acceptance": ["FreeCAD can recompute supported objects after save"] }, + { "id": "FC-07", "title": "Preserve unknown XML and resources", "status": "completed", "dependencies": ["FC-04"], "deliverables": ["Opaque extension store", "Script isolation metadata"], "acceptance": ["Unknown/proxy bytes survive read-write unchanged"] }, + { "id": "FC-08", "title": "Complete STEP, IGES and BREP exchange", "status": "completed", "dependencies": ["FC-05"], "deliverables": ["Import/export adapters", "Units/colors/tolerance report"], "acceptance": ["100-model format golden suite passes"] }, + { "id": "FC-09", "title": "Complete secondary format adapters", "status": "completed", "dependencies": ["FC-08"], "deliverables": ["Mesh/2D/BIM/data format matrix"], "acceptance": ["Each format has success, failure and round-trip evidence"] }, + { "id": "FC-10", "title": "Run FreeCAD-Web-FreeCAD round-trip", "status": "completed", "dependencies": ["FC-05", "FC-06", "FC-07"], "deliverables": ["Core editable-object reports", "Proxy byte-preservation reports"], "acceptance": ["No silent loss", "All differences are classified"] }, + { "id": "FC-11", "title": "Harden large and corrupt file handling", "status": "completed", "dependencies": ["FC-10"], "deliverables": ["Streaming/limit/cancel/recovery tests"], "acceptance": ["Files within limits do not crash", "Over-limit files fail explicitly"] } + ] + }, + { + "id": "P07", + "title": "TechDraw, Spreadsheet, Draft and Plot", + "ownerLane": "DOC", + "dependencies": ["P05", "P06"], + "gate": "G6", + "tasks": [ + { "id": "TD-ALL", "title": "Complete TechDraw", "status": "completed", "dependencies": ["TSN-09", "FC-06"], "deliverables": ["Pages/views/sections/dimensions/annotations", "SVG/PDF output"], "acceptance": ["Projection, scale and TopoRef update fixtures pass"] }, + { "id": "SS-ALL", "title": "Complete Spreadsheet", "status": "completed", "dependencies": ["FC-06"], "deliverables": ["Cells/formulas/aliases/styles/bindings", "CSV and large-sheet support"], "acceptance": ["DAG cycles and object bindings match FreeCAD"] }, + { "id": "DRAFT-BASE", "title": "Complete Draft geometry and working plane", "status": "completed", "dependencies": ["CORE-11", "SK-12"], "deliverables": ["Working plane/snap/grid", "Parametric 2D objects"], "acceptance": ["Creation and edit fixtures match oracle"] }, + { "id": "DRAFT-OPS", "title": "Complete Draft operations and layers", "status": "completed", "dependencies": ["DRAFT-BASE"], "deliverables": ["Move/rotate/scale/offset/trim/array/clone", "Layer behavior"], "acceptance": ["Dependencies and round-trip remain parametric"] }, + { "id": "PLOT-ALL", "title": "Complete Plot", "status": "completed", "dependencies": ["SS-ALL"], "deliverables": ["Series/axes/legend/styles/bindings", "Image/SVG/CSV output"], "acceptance": ["Bound plots update deterministically"] }, + { "id": "DOC-CLOSURE", "title": "Run production-document workflow", "status": "completed", "dependencies": ["TD-ALL", "SS-ALL", "DRAFT-OPS", "PLOT-ALL"], "deliverables": ["Cross-workbench document fixtures"], "acceptance": ["Create/edit/save/load/export succeeds across all four workbenches"] } + ] + }, + { + "id": "P08", + "title": "Assembly, BIM, Mesh and Surface", + "ownerLane": "ENGINEERING", + "dependencies": ["P05", "P06"], + "gate": "G7", + "tasks": [ + { "id": "ASM-CORE", "title": "Implement Assembly model and solver", "status": "completed", "dependencies": ["CORE-09", "FC-06"], "deliverables": ["Components/links/LCS/joints", "Solver Worker and diagnostics"], "acceptance": ["Fixed, distance, angle and motion fixtures pass"] }, + { "id": "ASM-TOOLS", "title": "Complete Assembly tools", "status": "completed", "dependencies": ["ASM-CORE"], "deliverables": ["Collision/exploded view/BOM/variants"], "acceptance": ["Large assembly and FCStd gates pass"] }, + { "id": "BIM-CORE", "title": "Implement BIM object model", "status": "completed", "dependencies": ["DRAFT-OPS", "SS-ALL"], "deliverables": ["Site/building/level/space and elements", "Materials and property sets"], "acceptance": ["Parametric edits and quantity schedules pass"] }, + { "id": "BIM-IFC", "title": "Implement IFC interoperability", "status": "completed", "dependencies": ["BIM-CORE", "FC-09"], "deliverables": ["IFC2x3/IFC4 import/export", "Classification and proxy report"], "acceptance": ["Geometry, hierarchy and properties round-trip"] }, + { "id": "MESH-CORE", "title": "Complete Mesh and MeshPart", "status": "completed", "dependencies": ["FC-09", "BYB-06"], "deliverables": ["Import/export/convert/analyze/repair", "Worker and LOD pipeline"], "acceptance": ["Non-manifold/self-intersection/hole fixtures pass"] }, + { "id": "SURF-CORE", "title": "Complete Surface modeling", "status": "completed", "dependencies": ["TSN-04", "PART-ALL"], "deliverables": ["Bezier/BSpline/fill/offset/trim/join", "Continuity and tolerance diagnostics"], "acceptance": ["Surface geometry and TopoRef fixtures pass"] }, + { "id": "ENG-CLOSURE", "title": "Run engineering-workbench integration", "status": "completed", "dependencies": ["ASM-TOOLS", "BIM-IFC", "MESH-CORE", "SURF-CORE"], "deliverables": ["Large mixed engineering projects"], "acceptance": ["Cross-workbench save/load and performance budgets pass"] } + ] + }, + { + "id": "P09", + "title": "FEM, CAM, Robot, Inspection, data, addons and scripting", + "ownerLane": "PLATFORM", + "dependencies": ["P06", "P08"], + "gate": "G8", + "tasks": [ + { "id": "FEM-ALL", "title": "Complete FEM workflow", "status": "completed", "dependencies": ["MESH-CORE", "BIM-CORE"], "deliverables": ["Analysis/material/sets/loads/meshing", "Solver strategy and result fields"], "acceptance": ["Reference solves or explicit remote capability pass"] }, + { "id": "CAM-ALL", "title": "Complete CAM workflow", "status": "completed", "dependencies": ["PART-ALL", "MESH-CORE"], "deliverables": ["Job/stock/tools/operations/simulation", "Sandboxed posts and G-code"], "acceptance": ["Collision, simulation and G-code golden tests pass"] }, + { "id": "ROBOT-ALL", "title": "Complete Robot workflow", "status": "completed", "dependencies": ["ASM-CORE", "MESH-CORE"], "deliverables": ["Robot/axes/poses/trajectory/kinematics", "Collision and controller export"], "acceptance": ["Motion and workspace fixtures pass"] }, + { "id": "INSP-ALL", "title": "Complete Inspection and Measure", "status": "completed", "dependencies": ["TSN-09", "SURF-CORE"], "deliverables": ["Measurements/sections/deviation/checks", "TopoRef reports"], "acceptance": ["Units, precision and report export match oracle"] }, + { "id": "DATA-ALL", "title": "Complete data and specialist modules", "status": "completed", "dependencies": ["FC-09", "MESH-CORE", "SURF-CORE"], "deliverables": ["Points/RE/OpenSCAD/IDF/JT/Material/Import"], "acceptance": ["Every source module has a tested adapter or explicit proxy"] }, + { "id": "ADDON-ALL", "title": "Implement addon governance", "status": "completed", "dependencies": ["DATA-ALL"], "deliverables": ["Signed catalog/install/update/remove", "Permissions, isolation and rollback"], "acceptance": ["Untrusted addons cannot bypass Facade or permissions"] }, + { "id": "SCRIPT-ALL", "title": "Implement scripting and macro capability", "status": "completed", "dependencies": ["ADDON-ALL"], "deliverables": ["API compatibility map", "Sandboxed interpreter and macro replay"], "acceptance": ["File/network/time/resource permissions are enforced"] }, + { "id": "PLATFORM-CLOSURE", "title": "Close all long-tail modules", "status": "completed", "dependencies": ["FEM-ALL", "CAM-ALL", "ROBOT-ALL", "INSP-ALL", "SCRIPT-ALL"], "deliverables": ["34-module coverage report"], "acceptance": ["No scope-only or unexplained unsupported entry remains"] } + ] + }, + { + "id": "P10", + "title": "QA, browsers, performance, security, migrations and release", + "ownerLane": "QUALITY", + "dependencies": ["P01", "P02", "P03", "P04", "P05", "P06", "P07", "P08", "P09"], + "gate": "G9", + "tasks": [ + { "id": "QA-01", "title": "Enforce unit and property coverage", "status": "completed", "dependencies": [], "deliverables": ["Coverage and invariant gates"], "acceptance": ["Core error branches and parsers are covered"] }, + { "id": "QA-02", "title": "Enforce FreeCAD CLI and GUI comparison", "status": "completed", "dependencies": ["BASE-04"], "deliverables": ["Per-command success/failure fixtures"], "acceptance": ["Every compatible command has oracle evidence"] }, + { "id": "QA-03", "title": "Run Chrome E2E and visual baselines", "status": "completed", "dependencies": ["BROWSER-OCCT-01"], "deliverables": ["Chrome matrix", "Desktop/mobile screenshots"], "acceptance": ["Core workflows have no blocking divergence"] }, + { "id": "QA-04", "title": "Run geometry, solver and parser fuzzing", "status": "completed", "dependencies": ["TSN-10", "SK-12"], "deliverables": ["Seeded fuzz suites", "Crash and wrong-bind corpus"], "acceptance": ["Random inputs do not crash or silently corrupt"] }, + { "id": "QA-05", "title": "Enforce performance and memory budgets", "status": "completed", "dependencies": ["MEM-OCCT-01", "ENG-CLOSURE"], "deliverables": ["1000-object/million-triangle/large-table reports"], "acceptance": ["P95 and peak memory meet declared budgets"] }, + { "id": "QA-06", "title": "Run Worker, WASM and OPFS fault injection", "status": "completed", "dependencies": ["FC-11", "QA-03"], "deliverables": ["Crash/quota/power-loss/stale-result matrix"], "acceptance": ["Recovery is deterministic and data loss is reported"] }, + { "id": "QA-07", "title": "Complete security gates", "status": "completed", "dependencies": ["SCRIPT-ALL", "FC-11"], "deliverables": ["File/message/script/addon fuzzing", "CSP and permission report"], "acceptance": ["No critical unmitigated finding"] }, + { "id": "QA-08", "title": "Complete accessibility and internationalization", "status": "completed", "dependencies": ["DOC-CLOSURE"], "deliverables": ["Keyboard/screen-reader/locale/mobile matrix"], "acceptance": ["Core workflows meet target accessibility criteria"] }, + { "id": "REL-01", "title": "Complete deployment and offline gates", "status": "completed", "dependencies": ["QA-03", "QA-06"], "deliverables": ["PWA/cache/COOP/COEP/CSP runbook"], "acceptance": ["Install, upgrade, offline and cache recovery pass"] }, + { "id": "REL-02", "title": "Complete migration and rollback rehearsal", "status": "completed", "dependencies": ["FC-10", "QA-06"], "deliverables": ["Supported-version migration matrix", "Rollback or lossless export"], "acceptance": ["Every supported version has a tested recovery route"] }, + { "id": "REL-03", "title": "Generate SBOM, licenses and signed artifacts", "status": "completed", "dependencies": ["PLATFORM-CLOSURE"], "deliverables": ["SBOM/license/vulnerability report", "Signed release artifacts"], "acceptance": ["No unknown binary or unresolved critical issue"] }, + { "id": "REL-04", "title": "Publish final capability and difference matrix", "status": "completed", "dependencies": ["QA-01", "QA-02", "QA-03", "QA-04", "QA-05", "QA-06", "QA-07", "QA-08", "REL-01", "REL-02", "REL-03"], "deliverables": ["Exact/compatible/proxy/unsupported report", "Release runbook"], "acceptance": ["G0 through G9 pass", "No unexplained unsupported capability"] } + ] + } + ], + "rules": [ + "A task is complete only when every deliverable exists and every acceptance condition has executable evidence.", + "Program dependencies and task dependencies are blocking; UI prototypes do not satisfy them.", + "All Node and npm commands use ./npmw.", + "Capability levels are updated only after the relevant gate passes.", + "Browser-restricted desktop features require an explicit proxy or unsupported decision with data preservation." + ] +} diff --git a/config/freecad-fcstd-roundtrip-verification.json b/config/freecad-fcstd-roundtrip-verification.json new file mode 100644 index 0000000..e553481 --- /dev/null +++ b/config/freecad-fcstd-roundtrip-verification.json @@ -0,0 +1,868 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "bitbybitVersion": "1.1.1", + "unknownDifferencesFail": true, + "directions": [ + "freecad-web-freecad", + "web-freecad-web" + ], + "scenarioCount": 22, + "scenarios": [ + { + "id": "proxy-byte-preservation", + "direction": "freecad-web-freecad", + "stages": [ + "freecad-source", + "web-inspect", + "web-byte-preserving-write", + "byte-compare", + "freecad-open", + "freecad-resave", + "web-inspect-resaved" + ], + "domains": [ + "objectTree", + "properties", + "gui", + "resources", + "proxy" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "sourceArchiveBytes": 49349, + "preservedArchiveBytes": 49349, + "sourceSha256": "a8184e071ce36e22f6407dcb5d789946003dc0031dbdaf261130fb15171cf8ab", + "preservedSha256": "a8184e071ce36e22f6407dcb5d789946003dc0031dbdaf261130fb15171cf8ab", + "byteIdentical": true, + "proxyObjectCount": 8, + "blockedObjectCount": 0, + "unknownTypeIds": [ + "App::Line", + "App::Origin", + "App::Plane", + "App::Point" + ], + "resavedObjectCount": 17, + "resavedProxyObjectCount": 8, + "resavedShapeValid": true + } + }, + { + "id": "locked-partdesign-shape", + "direction": "freecad-web-freecad", + "stages": [ + "freecad-source", + "web-inspect", + "web-write", + "freecad-open", + "freecad-resave", + "web-inspect-resaved" + ], + "domains": [ + "shape", + "topology", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "solidCount": 1, + "faceCount": 23, + "volume": 583719.3669394433, + "elementMapPostfixCount": 63, + "elementMapCount": 2, + "stringHasherBytes": 4669 + } + }, + { + "id": "part-box", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Box", + "solidCount": 1, + "faceCount": 6, + "volume": 23.999999999999996, + "boundingBox": { + "max": [ + 2, + 3, + 4 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "propertyCount": 5, + "resavedShapeAvailable": true + } + }, + { + "id": "part-cylinder", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Cylinder", + "solidCount": 1, + "faceCount": 5, + "volume": 31.41592653589793, + "boundingBox": { + "max": [ + 2, + 2, + 5 + ], + "min": [ + -2, + 0, + 0 + ] + }, + "propertyCount": 3, + "resavedShapeAvailable": true + } + }, + { + "id": "part-sphere", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Sphere", + "solidCount": 1, + "faceCount": 1, + "volume": 113.09733552923255, + "boundingBox": { + "max": [ + 3, + 3, + 3 + ], + "min": [ + -3, + -3, + -3 + ] + }, + "propertyCount": 1, + "resavedShapeAvailable": true + } + }, + { + "id": "part-ellipsoid", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Ellipsoid", + "solidCount": 1, + "faceCount": 1, + "volume": 133.9826640573845, + "boundingBox": { + "max": [ + 4, + 6.928203230275507, + 2 + ], + "min": [ + -7.999999999999998, + -6.9282032302755105, + -2 + ] + }, + "propertyCount": 6, + "properties": { + "Angle1": -90, + "Angle2": 90, + "Angle3": 360, + "Radius1": 2, + "Radius2": 4, + "Radius3": 0 + }, + "resavedShapeAvailable": true + } + }, + { + "id": "part-cone", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Cone", + "solidCount": 1, + "faceCount": 3, + "volume": 175.92918860102841, + "boundingBox": { + "max": [ + 4, + 4, + 6.000000000000001 + ], + "min": [ + -4, + -4, + 0 + ] + }, + "propertyCount": 4, + "resavedShapeAvailable": true + } + }, + { + "id": "part-torus", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Torus", + "solidCount": 1, + "faceCount": 3, + "volume": 592.1762640653616, + "boundingBox": { + "max": [ + 12.988706403508727, + 12.988706403508727, + 2 + ], + "min": [ + -12.988706403508727, + -12.988706403508727, + -2 + ] + }, + "propertyCount": 5, + "resavedShapeAvailable": true + } + }, + { + "id": "part-prism", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Prism", + "solidCount": 1, + "faceCount": 8, + "volume": 103.92304845413267, + "boundingBox": { + "max": [ + 3.76326980708465, + 1.7320508075688776, + 10 + ], + "min": [ + -2, + -2.6069374428281185, + 0 + ] + }, + "propertyCount": 5, + "properties": { + "Circumradius": 2, + "FirstAngle": 10, + "Height": 10, + "Polygon": 6, + "SecondAngle": -5 + }, + "resavedShapeAvailable": true + } + }, + { + "id": "part-wedge", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Wedge", + "solidCount": 1, + "faceCount": 6, + "volume": 813.3333333333333, + "boundingBox": { + "max": [ + 10, + 10.000000000000002, + 10 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "propertyCount": 10, + "properties": { + "X2max": 8, + "X2min": 0, + "Xmax": 10, + "Xmin": 0, + "Ymax": 10, + "Ymin": 0, + "Z2max": 8, + "Z2min": 0, + "Zmax": 10, + "Zmin": 0 + }, + "resavedShapeAvailable": true + } + }, + { + "id": "part-fuse", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Fuse", + "solidCount": 1, + "faceCount": 9, + "volume": 23.999999999999996, + "boundingBox": { + "max": [ + 2, + 3, + 4 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "propertyCount": 3, + "refine": false, + "resavedShapeAvailable": true + } + }, + { + "id": "part-cut", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Cut", + "solidCount": 1, + "faceCount": 9, + "volume": 22.999999999999996, + "boundingBox": { + "max": [ + 2, + 3, + 4 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "propertyCount": 3, + "refine": false, + "resavedShapeAvailable": true + } + }, + { + "id": "part-common", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Common", + "solidCount": 1, + "faceCount": 6, + "volume": 0.9999999999999998, + "boundingBox": { + "max": [ + 1, + 1, + 1 + ], + "min": [ + 0, + 0, + 0 + ] + }, + "propertyCount": 3, + "refine": true, + "resavedShapeAvailable": true + } + }, + { + "id": "part-sphere-trim", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "properties", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "solidCount": 1, + "faceCount": 5, + "volume": 154.26676868605438, + "boundingBox": { + "max": [ + 5, + 5, + 3.5355339059327373 + ], + "min": [ + -2.499999999999999, + 0, + -3.5355339059327386 + ] + }, + "properties": { + "Angle1": -45, + "Angle2": 45, + "Angle3": 120, + "Radius": 5 + }, + "resavedShapeAvailable": true + } + }, + { + "id": "part-extrusion", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "sketch", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Extrusion", + "solidCount": 1, + "faceCount": 6, + "volume": 30, + "properties": { + "Base": "FeatureProfile", + "DirMode": "Custom", + "LengthFwd": 5, + "LengthRev": 0, + "Reversed": false, + "Solid": true, + "Symmetric": false, + "TaperAngle": 0, + "TaperAngleRev": 0 + }, + "resavedShapeAvailable": true + } + }, + { + "id": "part-revolution", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "sketch", + "shape", + "resources" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "typeId": "Part::Revolution", + "solidCount": 1, + "faceCount": 4, + "volume": 113.09733552923254, + "properties": { + "Angle": 360, + "Solid": true, + "Source": "FeatureProfile", + "Symmetric": false + }, + "resavedShapeAvailable": true + } + }, + { + "id": "sketch-core-external-attachment", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "objectTree", + "properties", + "sketch", + "topology" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "geometryCount": 10, + "constraintCount": 11, + "externalTypes": [ + 0 + ], + "mapMode": "FlatFace", + "roundTripGeometryIds": 10, + "roundTripConstraintIds": 11 + } + }, + { + "id": "sketch-face-projection", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "sketch", + "topology" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "externalTypes": [ + 0 + ], + "externalGeoCount": 6, + "roundTripIds": 4 + } + }, + { + "id": "sketch-external-modes", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "sketch", + "topology", + "properties" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "externalTypes": [ + 1, + 2, + 0 + ], + "externalGeoCount": 8, + "nativeFlags": [ + 1, + 1, + 1, + 1, + 1, + 2 + ], + "roundTripModes": [ + "intersection", + "both", + "both", + "both", + "both", + "projection" + ] + } + }, + { + "id": "sketch-snells-law", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "sketch", + "properties" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "geometryCount": 3, + "constraintTypes": [ + "SnellsLaw" + ], + "roundTripConstraints": 1 + } + }, + { + "id": "sketch-bspline-weight", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "sketch", + "properties" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "geometryCount": 2, + "constraintTypes": [ + "InternalAlignment", + "Weight" + ], + "roundTripConstraints": 1 + } + }, + { + "id": "sketch-internal-alignment", + "direction": "web-freecad-web", + "stages": [ + "web-model", + "web-write", + "freecad-open", + "freecad-recompute", + "freecad-resave", + "web-inspect" + ], + "domains": [ + "sketch", + "properties" + ], + "freecadVersion": "1.1.1", + "status": "pass", + "differences": [], + "evidence": { + "geometryCount": 7, + "constraintTypes": [ + "InternalAlignment", + "InternalAlignment", + "InternalAlignment", + "InternalAlignment", + "InternalAlignment" + ], + "roundTripConstraints": 5 + } + } + ], + "status": "verified" +} diff --git a/config/freecad-golden-coverage-plan.json b/config/freecad-golden-coverage-plan.json new file mode 100644 index 0000000..10e819d --- /dev/null +++ b/config/freecad-golden-coverage-plan.json @@ -0,0 +1,65 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "parameterMutationPlan": "config/freecad-parameter-mutation-plan.json", + "successManifest": "fixtures/freecad-golden/manifest.json", + "failureManifest": "fixtures/freecad-golden/failures/manifest.json", + "supplementalSuccessManifest": "fixtures/freecad-golden/feature-families/manifest.json", + "supplementalFailureManifest": "fixtures/freecad-golden/feature-families/failures/manifest.json", + "compositeOracle": "config/freecad-composite-history-elementmap-oracle.json", + "fcstdRoundtrip": "config/freecad-fcstd-roundtrip-verification.json", + "browserGolden": "config/chrome-fcstd-golden-verification.json", + "browserPrimitiveEvidence": "config/chrome-part-primitives-verification.json", + "partdesignFailureOracle": "config/freecad-partdesign-failure-oracle.json", + "partdesignRevolutionGrooveOracle": "config/freecad-partdesign-revolution-groove-oracle.json", + "partdesignTransformOracle": "config/freecad-partdesign-transform-oracle.json", + "partBuildersOracle": "config/freecad-part-builders-oracle.json", + "historyEvidenceGlob": "config/chrome-native-*-history-verification.json", + "dimensions": [ + "success-fixture", + "failure-fixture", + "native-history", + "composite-stage", + "elementmap2-resource", + "fcstd-roundtrip", + "browser-replay" + ], + "families": [ + { "id": "Part::Box", "operationTypes": ["box"], "stageTypeIds": ["Part::Box"], "roundtripIds": ["part-box"], "browserOperations": ["box"] }, + { "id": "Part::Cylinder", "operationTypes": ["cylinder"], "stageTypeIds": ["Part::Cylinder"], "roundtripIds": ["part-cylinder"], "browserOperations": ["cylinder"] }, + { "id": "Part::Sphere", "operationTypes": ["sphere"], "stageTypeIds": [], "roundtripIds": ["part-sphere", "part-sphere-trim"], "browserOperations": ["sphere"] }, + { "id": "Part::Ellipsoid", "operationTypes": ["ellipsoid"], "stageTypeIds": [], "roundtripIds": ["part-ellipsoid"], "browserOperations": ["ellipsoid"] }, + { "id": "Part::Cone", "operationTypes": ["cone"], "stageTypeIds": [], "roundtripIds": ["part-cone"], "browserOperations": ["cone"] }, + { "id": "Part::Torus", "operationTypes": ["torus"], "stageTypeIds": [], "roundtripIds": ["part-torus"], "browserOperations": ["torus"] }, + { "id": "Part::Helix", "operationTypes": ["helix"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": ["helix"] }, + { "id": "Part::Prism", "operationTypes": ["prism"], "stageTypeIds": [], "roundtripIds": ["part-prism"], "browserOperations": ["prism"] }, + { "id": "Part::Wedge", "operationTypes": ["wedge"], "stageTypeIds": [], "roundtripIds": ["part-wedge"], "browserOperations": ["wedge"] }, + { "id": "Part::Fuse", "operationTypes": ["fuse"], "stageTypeIds": ["Part::Fuse"], "roundtripIds": ["part-fuse"], "browserOperations": ["fuse"] }, + { "id": "Part::Cut", "operationTypes": ["cut"], "stageTypeIds": ["Part::Cut"], "roundtripIds": ["part-cut", "part-cut-through-hole"], "browserOperations": ["cut"] }, + { "id": "Part::Common", "operationTypes": ["common"], "stageTypeIds": ["Part::Common"], "roundtripIds": ["part-common"], "browserOperations": ["common"] }, + { "id": "Part::Extrusion", "operationTypes": ["extrusion"], "stageTypeIds": [], "roundtripIds": ["part-extrusion"], "browserOperations": [] }, + { "id": "Part::Revolution", "operationTypes": ["revolution"], "stageTypeIds": [], "roundtripIds": ["part-revolution"], "browserOperations": [] }, + { "id": "Part::Loft", "operationTypes": ["loft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] }, + { "id": "Part::Sweep", "operationTypes": ["sweep"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] }, + { "id": "Part::Fillet", "operationTypes": ["fillet"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] }, + { "id": "Part::Chamfer", "operationTypes": ["chamfer"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] }, + { "id": "PartDesign::Pad", "operationTypes": ["pad"], "stageTypeIds": ["PartDesign::Pad"], "roundtripIds": ["locked-partdesign-shape"], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-base-oracle.json", "ids": ["pad-tapered", "pad-midplane"] }] }, + { "id": "PartDesign::Pocket", "operationTypes": ["pocket"], "stageTypeIds": ["PartDesign::Pocket"], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-base-oracle.json", "ids": ["pocket-tapered", "pocket-through-all", "pocket-up-to-face"] }] }, + { "id": "PartDesign::Revolution", "operationTypes": ["partdesign-revolution"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] }, + { "id": "PartDesign::Groove", "operationTypes": ["groove"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [] }, + { "id": "PartDesign::AdditiveLoft", "operationTypes": ["additive-loft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["additive-loft"] }] }, + { "id": "PartDesign::SubtractiveLoft", "operationTypes": ["subtractive-loft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["subtractive-loft"] }] }, + { "id": "PartDesign::AdditivePipe", "operationTypes": ["additive-pipe"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["additive-pipe"] }] }, + { "id": "PartDesign::SubtractivePipe", "operationTypes": ["subtractive-pipe"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-loft-oracle.json", "ids": ["subtractive-pipe"] }] }, + { "id": "PartDesign::Fillet", "operationTypes": ["partdesign-fillet"], "stageTypeIds": ["PartDesign::Fillet"], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["fillet-selected-edge"] }] }, + { "id": "PartDesign::Chamfer", "operationTypes": ["partdesign-chamfer"], "stageTypeIds": ["PartDesign::Chamfer"], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["chamfer-selected-edge"] }] }, + { "id": "PartDesign::Draft", "operationTypes": ["draft"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["draft-selected-face"] }] }, + { "id": "PartDesign::Thickness", "operationTypes": ["thickness"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-dressup-oracle.json", "ids": ["thickness-selected-face"] }] }, + { "id": "PartDesign::Mirrored", "operationTypes": ["mirrored"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["mirrored-feature-list"] }] }, + { "id": "PartDesign::MultiTransform", "operationTypes": ["multi-transform"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["multi-transform-feature-list"] }] }, + { "id": "PartDesign::LinearPattern", "operationTypes": ["linear-pattern"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["linear-feature-list"] }] }, + { "id": "PartDesign::PolarPattern", "operationTypes": ["polar-pattern"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["polar-feature-list"] }] }, + { "id": "PartDesign::Hole", "operationTypes": ["hole"], "stageTypeIds": [], "roundtripIds": [], "browserOperations": [], "oracleSuccessSources": [{ "file": "config/freecad-partdesign-transform-oracle.json", "ids": ["iso-m6-tap-drill", "iso-m6-modeled-thread"] }] } + ] +} diff --git a/config/freecad-golden-verification.json b/config/freecad-golden-verification.json new file mode 100644 index 0000000..ce611a1 --- /dev/null +++ b/config/freecad-golden-verification.json @@ -0,0 +1,36 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "successFixtures": { + "manifest": "fixtures/freecad-golden/manifest.json", + "count": 100, + "replayCommand": "./npmw run test:golden:freecad -- --json", + "lastReplay": "passed" + }, + "failureFixtures": { + "manifest": "fixtures/freecad-golden/failures/manifest.json", + "count": 51, + "replayCommand": "./npmw run test:golden:freecad:failures", + "lastReplay": "passed", + "acceptedOutcomes": ["exception", "invalid-shape"] + }, + "supplementalFixtures": { + "successManifest": "fixtures/freecad-golden/feature-families/manifest.json", + "successCount": 5, + "failureManifest": "fixtures/freecad-golden/feature-families/failures/manifest.json", + "failureCount": 5, + "replayCommands": [ + "./npmw run test:golden:freecad:families -- --json", + "./npmw run test:golden:freecad:family-failures" + ], + "lastReplay": "passed" + }, + "semanticComparator": { + "module": "scripts/freecad-semantic-comparator.mjs", + "reportSchemaVersion": 1, + "unknownDifferencesFail": true, + "domains": ["identity", "shape", "topology", "objectTree", "properties"] + }, + "status": "verified" +} diff --git a/config/freecad-gui-command-inventory.json b/config/freecad-gui-command-inventory.json new file mode 100644 index 0000000..9ef611e --- /dev/null +++ b/config/freecad-gui-command-inventory.json @@ -0,0 +1,44953 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + }, + "generatedBy": "scripts/generate-freecad-gui-command-inventory.mjs", + "sourceInventory": "config/freecad-source-inventory.json", + "runtimeEvidence": { + "report": ".cache/freecad/reference-desktop.json", + "reportSha256": "5bae6ca6f50f42fef901955a37a1e479eda86b12fd0b1e8ee943ffd042ee3082", + "workbenchCount": 20 + }, + "commandCount": 1113, + "commands": [ + { + "id": "Arch_Add", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Axis", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_AxisSystem", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_AxisTools", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Building", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Check", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_CloneComponent", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_CloseHoles", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Component", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_CurtainWall", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_CutPlane", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Equipment", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Fence", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Frame", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Grid", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_IfcSpreadsheet", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Level", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Material", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_MaterialTools", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_MergeWalls", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_MeshToShape", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_MultiMaterial", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Nest", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Panel", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Panel_Cut", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Panel_Sheet", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_PanelTools", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Pipe", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_PipeConnector", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_PipeTools", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Profile", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Rebar", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Reference", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Remove", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_RemoveShape", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Roof", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Schedule", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_SectionPlane", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_SelectNonSolidMeshes", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Site", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Space", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_SplitMesh", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Stairs", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_StructuralSystem", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Structure", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_StructuresFromSelection", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_StructureTools", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Survey", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_ToggleIfcBrepFlag", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_ToggleSubs", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Truss", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Wall", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Arch_Window", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_ActivateAssembly", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateAssembly", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateBom", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointAngle", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointBall", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointBelt", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointCylindrical", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointDistance", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointFixed", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointGearBelt", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointGears", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointParallel", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointPerpendicular", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointRackPinion", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointRevolute", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointScrew", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateJointSlider", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateSimulation", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_CreateView", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_ExportASMT", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_Insert", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_InsertLink", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_InsertNewPart", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_SolveAssembly", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Assembly_ToggleGrounded", + "sourceModules": [ + "Assembly" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Background", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Beam", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Box", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Builder", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Classification", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Clone", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Column", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Common", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Compound", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Convert", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Copy", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Create2DViews", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Cut", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Diff", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_DimensionAligned", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_DimensionHorizontal", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_DimensionVertical", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Door", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_DrawingView", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_EmptyTrash", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Examples", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Extrude", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Fuse", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_GenericTools", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Glue", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Help", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_IfcElements", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_IfcExplorer", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_IfcProperties", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_IfcQuantities", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_ImagePlane", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Layers", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Leader", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Library", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Material", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_MoveView", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Down", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Extend", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Left", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Right", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_RotateLeft", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_RotateRight", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Shrink", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Switch", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Nudge_Up", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Offset2D", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Preflight", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Project", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_ProjectManager", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Reextrude", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Reorder", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_ResetCloneColors", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Rewire", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Setup", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_SetWPFront", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_SetWPSide", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_SetWPTop", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Shape2DCut", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Shape2DView", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_SimpleCopy", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Sketch", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Slab", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_TDPage", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_TDView", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Text", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_TogglePanels", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Trash", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Tutorial", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Unclone", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Ungroup", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Views", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Welcome", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_Windows", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "BIM_WPView", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Adaptive", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Area", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Area_Workplane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Array", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Comment", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Compound", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Custom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Deburr", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupArray", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupAxisMap", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupDogbone", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupDragKnife", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupLeadInOut", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupPathBoundary", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupRampEntry", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupTag", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupTools", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_DressupZCorrect", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Drilling", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Engrave", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_EngraveTools", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ExportTemplate", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Fixture", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Helix", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Inspect", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Job", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_MillFace", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_OpActiveToggle", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_OperationCopy", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_PathShapeTC", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Pocket_Shape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Pocket3D", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Post", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Probe", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Profile", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_PropertyBag", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Sanity", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_SelectLoop", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_SetStartPoint", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Shape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_SimpleCopy", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_SimTools", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Simulator", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_SimulatorGL", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Slot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Stop", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Tapping", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ThreadMilling", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolBitCreate", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolBitDock", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolBitLibraryOpen", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolBitLoad", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolBitSave", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolBitSaveAs", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_ToolController", + "sourceModules": [ + "CAM" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "CAM_Vcarve", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_AddConstruction", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_AddNamedGroup", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_AddToGroup", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_AddToLayer", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_AnnotationStyleEditor", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ApplyStyle", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Arc", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Arc_3Points", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ArcTools", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ArrayTools", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_AutoGroup", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_BezCurve", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_BezierTools", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_BSpline", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Circle", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_CircularArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Clone", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_CubicBezCurve", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Dimension", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Downgrade", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Draft2Sketch", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Edit", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Ellipse", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Facebinder", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Fillet", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_FlipDimension", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Hatch", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Heal", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Join", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Label", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Layer", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_LayerManager", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Line", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Mirror", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Move", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Offset", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_OrthoArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PathArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PathLinkArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PathTwistedArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PathTwistedLinkArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Point", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PointArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PointLinkArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_PolarArray", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Polygon", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Rectangle", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Rotate", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Scale", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_SelectGroup", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_SelectPlane", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_SetStyle", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Shape2DView", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ShapeString", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ShowSnapBar", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Slope", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Angle", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Center", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Dimensions", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Endpoint", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Extension", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Grid", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Intersection", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Lock", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Midpoint", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Near", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Ortho", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Parallel", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Perpendicular", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_Special", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Snap_WorkingPlane", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Split", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Stretch", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_SubelementHighlight", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Text", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ToggleConstructionMode", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ToggleDisplayMode", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_ToggleGrid", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Trimex", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Upgrade", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_Wire", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_WireToBSpline", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Draft_WorkingPlaneProxy", + "sourceModules": [ + "Draft" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_Analysis", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ClippingPlaneAdd", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ClippingPlaneRemoveAll", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_CompEmConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_CompEmEquations", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_CompMechEquations", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstantVacuumPermittivity", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintBearing", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintBodyHeatSource", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintCentrif", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintContact", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintCurrentDensity", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintDisplacement", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintElectricChargeDensity", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintElectrostaticPotential", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintFixed", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintFlowVelocity", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintFluidBoundary", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintForce", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintGear", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintHeatflux", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintInitialFlowVelocity", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintInitialPressure", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintInitialTemperature", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintMagnetization", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintPlaneRotation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintPressure", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintPulley", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintRigidBody", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintSectionPrint", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintSelfWeight", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintSpring", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintTemperature", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintTie", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ConstraintTransform", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_CreateElementsSet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_CreateNodesSet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_DefineElementsSet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_DefineNodesSet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ElementFluid1D", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ElementGeometry1D", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ElementGeometry2D", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ElementRotation1D", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationDeformation", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationElasticity", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationElectricforce", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationElectrostatic", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationFlow", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationFlux", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationHeat", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationMagnetodynamic", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationMagnetodynamic2D", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_EquationStaticCurrent", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_Examples", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_FEMMesh2Mesh", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MaterialEditor", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MaterialFluid", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MaterialMechanicalNonlinear", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MaterialReinforced", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MaterialSolid", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshBoundaryLayer", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshClear", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshDisplayInfo", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshGmshFromShape", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshGroup", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshNetgenFromShape", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_MeshRegion", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostApplyChanges", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostBranchFilter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostCreateFunctions", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterCalculator", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterClipRegion", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterClipScalar", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterContours", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterCutFunction", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterDataAlongLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterDataAtPoint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterGlyph", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterLinearizedStresses", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostFilterWarp", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostPipelineFromResult", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostVisualization", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostVisualizationHistogram", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostVisualizationLineplot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_PostVisualizationTable", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ResultShow", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_ResultsPurge", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverCalculiX", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverCalculiXCcxTools", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverControl", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverElmer", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverMystran", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverRun", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "FEM_SolverZ88", + "sourceModules": [ + "Fem" + ], + "workbenches": [ + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_ConvertDocument", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_Diff", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_Expand", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_MakeProject", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_Save", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_SaveAs", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "IFC_UpdateIOS", + "sourceModules": [ + "BIM" + ], + "workbenches": [ + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Import_ReadBREP", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Inspection_InspectElement", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Inspection_VisualInspection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Material_Edit", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Materials_InspectAppearance", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Materials_InspectMaterial", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_AddFacet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_BoundingBox", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_BuildRegularSolid", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_CrossSections", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_CurvatureInfo", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Decimating", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Difference", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_EvaluateFacet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_EvaluateSolid", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Evaluation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Export", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_FillInteractiveHole", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_FillupHoles", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_FlipNormals", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_FromGeometry", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_FromPartShape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_HarmonizeNormals", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Import", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Intersection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Merge", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_PolyCut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_PolySegm", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_PolySplit", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_PolyTrim", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_RemeshGmsh", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_RemoveCompByHand", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_RemoveComponents", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Scale", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_SectionByPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Segmentation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_SegmentationBestFit", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Smoothing", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_SplitComponents", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_TrimByPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_Union", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Mesh_VertexCurvature", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_CreateFlatFace", + "sourceModules": [ + "MeshPart" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_CreateFlatMesh", + "sourceModules": [ + "MeshPart" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_CrossSections", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_CurveOnMesh", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_Mesher", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_SectionByPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "MeshPart_TrimByPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "NaviCubeDraggableCmd", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_AddOpenSCADElement", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_ColorCodeShape", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_Edgestofaces", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_ExpandPlacements", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_ExplodeGroup", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_Hull", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_IncreaseToleranceFeature", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_MeshBoolean", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_Minkowski", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_MirrorMeshFeature", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_RefineShapeFeature", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_RemoveSubtree", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_ReplaceObject", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_ResizeMeshFeature", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "OpenSCAD_ScaleMeshFeature", + "sourceModules": [ + "OpenSCAD" + ], + "workbenches": [ + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Boolean", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_BooleanFragments", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Box", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_BoxSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Builder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Chamfer", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CheckGeometry", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ColorPerFace", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Common", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CompCompoundTools", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CompJoinFeatures", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CompOffset", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Compound", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CompoundFilter", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CompSplitFeatures", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Cone", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CoordinateSystem", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_CrossSections", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Cut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Cylinder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_DatumLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_DatumPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_DatumPoint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Datums", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Defeaturing", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_EdgeSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_EditAttachment", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ElementCopy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ExplodeCompound", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Export", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Extrude", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_FaceSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Fillet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Fuse", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Import", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ImportCurveNet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_JoinConnect", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_JoinCutout", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_JoinEmbed", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Loft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_MakeFace", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_MakeSolid", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Mirror", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Offset", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Offset2D", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_PickCurveNet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_PointsFromMesh", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Primitives", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ProjectionOnSurface", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_RefineShape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_RemoveSelectionGate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ReverseShape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Revolve", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_RuledSurface", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Scale", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Section", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_SectionCut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_SelectFilter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ShapeFromMesh", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ShapeInfo", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_SimpleCopy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_SimpleCylinder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Slice", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_SliceApart", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Sphere", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Sweep", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Thickness", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_ToleranceSet", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Torus", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_TransformedCopy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_Tube", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_VertexSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Part_XOR", + "sourceModules": [ + "Part" + ], + "workbenches": [ + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_AdditiveHelix", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_AdditiveLoft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_AdditivePipe", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Body", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Boolean", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Chamfer", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Clone", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_CompDatums", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_CompPrimitiveAdditive", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_CompPrimitiveSubtractive", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_CompSketches", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_CoordinateSystem", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Draft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_DuplicateSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Fillet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Groove", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Hole", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_InvoluteGear", + "sourceModules": [ + "PartDesign" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Line", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_LinearPattern", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Migrate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Mirrored", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_MoveFeature", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_MoveFeatureInTree", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_MoveTip", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_MultiTransform", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_NewSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Pad", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Plane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Pocket", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Point", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_PolarPattern", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Revolution", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_ShapeBinder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Sprocket", + "sourceModules": [ + "PartDesign" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_SubShapeBinder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_SubtractiveHelix", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_SubtractiveLoft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_SubtractivePipe", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_Thickness", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_WizardShaft", + "sourceModules": [ + "PartDesign" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "PartDesign_WizardShaftCallBack", + "sourceModules": [ + "PartDesign" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Points_Convert", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Points_Export", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Points_Import", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Points_Merge", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Points_PolyCut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Points_Structure", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ApproxCurve", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ApproxCylinder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ApproxPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ApproxPolynomial", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ApproxSphere", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ApproxSurface", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_MeshBoundary", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_PoissonReconstruction", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_Segmentation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_SegmentationFromComponents", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_SegmentationManual", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Reen_ViewTriangulation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_AddToolShape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_Create", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_CreateTrajectory", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_Edge2Trac", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_ExportKukaCompact", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_ExportKukaFull", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_InsertWaypoint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_InsertWaypointPreselect", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_RestoreHomePos", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_SetDefaultOrientation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_SetDefaultValues", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_SetHomePos", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_Simulate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_TrajectoryCompound", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Robot_TrajectoryDressUp", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ArcOverlay", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineComb", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineConvertToNURBS", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineDecreaseDegree", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineDecreaseKnotMultiplicity", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineDegree", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineIncreaseDegree", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineIncreaseKnotMultiplicity", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineInsertKnot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplineKnotMultiplicity", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplinePoleWeight", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_BSplinePolygon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CarbonCopy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ChangeDimensionConstraint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Clone", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompBSplineShowHideGeometryInformation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompConstrainRadDia", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompConstrainTools", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCopy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCreateArc", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCreateBSpline", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCreateConic", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCreateFillets", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCreateRectangles", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCreateRegularPolygon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompCurveEdition", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompDimensionTools", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompExternal", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompHorVer", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompModifyKnotMultiplicity", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompSlot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CompToggleConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainAngle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainBlock", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainCoincident", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainCoincidentUnified", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainDiameter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainDistance", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainDistanceX", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainDistanceY", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainEqual", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainHorizontal", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainHorVer", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainLock", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainParallel", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainPerpendicular", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainPointOnObject", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainRadiam", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainRadius", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainSnellsLaw", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainSymmetric", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainTangent", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ConstrainVertical", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Copy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CopyClipboard", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Create3PointArc", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Create3PointCircle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateArc", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateArcOfEllipse", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateArcOfHyperbola", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateArcOfParabola", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateArcSlot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateBSpline", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateBSplineByInterpolation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateChamfer", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateCircle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateEllipseBy3Points", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateEllipseByCenter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateFillet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateHeptagon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateHexagon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateOblong", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateOctagon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreatePentagon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreatePeriodicBSpline", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreatePeriodicBSplineByInterpolation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreatePoint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreatePolyline", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateRectangle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateRectangle_Center", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateRegularPolygon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateSlot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateSquare", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_CreateTriangle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Cut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_DeleteAllConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_DeleteAllGeometry", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Dimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_EditSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Extend", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Grid", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Intersection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_JoinCurves", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_LeaveSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_MapSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_MergeSketches", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_MirrorSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Move", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_NewSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Offset", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Paste", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ProfilesHexagon1", + "sourceModules": [ + "Sketcher" + ], + "workbenches": [ + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Projection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_RectangularArray", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_RemoveAxesAlignment", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_RenderingOrder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ReorientSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_RestoreInternalAlignmentGeometry", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Rotate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Scale", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectConflictingConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectElementsAssociatedWithConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectElementsWithDoFs", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectHorizontalAxis", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectMalformedConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectOrigin", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectPartiallyRedundantConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectRedundantConstraints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SelectVerticalAxis", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Snap", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Split", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_StopOperation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_SwitchVirtualSpace", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Symmetry", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ToggleActiveConstraint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ToggleConstruction", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ToggleDrivingConstraint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Translate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_Trimming", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ValidateSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ViewSection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Sketcher_ViewSketch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_AlignBottom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_AlignCenter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_AlignLeft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_AlignRight", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_AlignTop", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_AlignVCenter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_CreateSheet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_Export", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_Import", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_MergeCells", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_SetAlias", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_SplitCell", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_StyleBold", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_StyleItalic", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Spreadsheet_StyleUnderline", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Start_Start", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_About", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_AboutQt", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ActivateNextWindow", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ActivatePrevWindow", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_AddonMgr", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Alignment", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_AlignToSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_AxisCross", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_BoxElementSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_BoxSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_CascadeWindows", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ClarifySelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_CloseActiveWindow", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_CloseAllWindows", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_CommandLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Copy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Cut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Delete", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DemoMode", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DependencyGraph", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DevHandbook", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DlgCustomize", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DlgMacroExecute", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DlgMacroExecuteDirect", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DlgMacroRecord", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DlgParameter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DlgPreferences", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlay", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayMouseTransparent", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayToggle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayToggleBottom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayToggleLeft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayToggleRight", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayToggleTop", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayToggleTransparent", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockOverlayTransparentAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DockViewMenu", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DrawStyle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_DuplicateSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Edit", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Export", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ExportDependencyGraph", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Expressions", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_FreeCADDonation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_FreeCADForum", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_FreeCADUserHub", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_FreeCADWebsite", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_FreezeViews", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Group", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_HideObjects", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_HideSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Import", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkActions", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkImport", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkImportAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkMake", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkMakeGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkMakeRelative", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkReplace", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkSelectActions", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkSelectAllLinks", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkSelectLinked", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkSelectLinkedFinal", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_LinkUnlink", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MacroAttachDebugger", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MacroStartDebug", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MacroStepInto", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MacroStepOver", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MacroStopDebug", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MainFullscreen", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MDITest1", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MDITest2", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MDITest3", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Measure", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_MergeProjects", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_New", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_OnlineHelp", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_OnlineHelpWebsite", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Open", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_OpenMacrosFolder", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_OrthographicCamera", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Part", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Paste", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_PerspectiveCamera", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Placement", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Print", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_PrintPdf", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_PrintPreview", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ProjectInfo", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ProjectUtil", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Properties", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_PythonHelp", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Quit", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_RandomColor", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_RecallWorkingView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_RecentFiles", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_RecentMacros", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Recompute", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Redo", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Refresh", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ReloadStyleSheet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ReportBug", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_RestartInSafeMode", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Revert", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Save", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SaveAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SaveAs", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SaveCopy", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SceneInspector", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SelBack", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SelBoundingBox", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SelectAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SelectVisibleObjects", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SelForward", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SendToPythonConsole", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SetAppearance", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_SetMaterial", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ShowObjects", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ShowSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_StoreWorkingView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Test1", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Test2", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Test3", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Test4", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Test5", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Test6", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestCmdFuncs", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestConsoleOutput", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestProgress1", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestProgress2", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestProgress3", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestProgress4", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestProgress5", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestQM", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TestReloadQM", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action", + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action", + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TextDocument", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TextureMapping", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TileWindows", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleBreakpoint", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleClipPlane", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleFreeze", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleNavigation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleObjects", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleSelectability", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleSkipRecompute", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleToolBarLock", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleTransparency", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToggleVisibility", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ToolBarMenu", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Transform", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TransformManip", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeCollapse", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeCollapseDocument", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeDrag", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeExpand", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeMultiDocument", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreePreSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeRecordSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeSelectAllInstances", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeSingleDocument", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeSyncPlacement", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeSyncSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeSyncView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_TreeViewActions", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Undo", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_UnitsCalculator", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_UserEditMode", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_UserInterface", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_VarSet", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewBottom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewBoxZoom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewCreate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewDimetric", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewDock", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewDockUndockFullscreen", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewExample1", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewExample2", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewExample3", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false, + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false, + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewFitAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewFitSelection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewFront", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewFullscreen", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewHome", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIsometric", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIvIssueCamPos", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIvStereoInterleavedColumns", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIvStereoInterleavedRows", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIvStereoOff", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIvStereoQuadBuff", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewIvStereoRedGreen", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewLeft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewLoadImage", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewRear", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewRestoreCamera", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewRight", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewRotateLeft", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewRotateRight", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewSaveCamera", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewScreenShot", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewStatusBar", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewTop", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewTrimetric", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewUndock", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewVR", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewZoomIn", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_ViewZoomOut", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_WhatsThis", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Windows", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_WindowsMenu", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Std_Workbench", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "AssemblyWorkbench", + "BIMWorkbench", + "CAMWorkbench", + "DraftWorkbench", + "FemWorkbench", + "InspectionWorkbench", + "MaterialWorkbench", + "MeshWorkbench", + "NoneWorkbench", + "OpenSCADWorkbench", + "PartDesignWorkbench", + "PartWorkbench", + "PointsWorkbench", + "ReverseEngineeringWorkbench", + "RobotWorkbench", + "SketcherWorkbench", + "SpreadsheetWorkbench", + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Surface_BlendCurve", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Surface_CurveOnMesh", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Surface_ExtendFace", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Surface_Filling", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Surface_GeomFillSurface", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Surface_Sections", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "SurfaceWorkbench", + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_2LineCenterLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_2PointCenterLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_2PointCosmeticLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_3PtAngleDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ActiveView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_AlignVertexesHorizontally", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_AlignVertexesVertically", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_AngleDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Annotation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ArchView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_AreaDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_AxoLengthDimension", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Balloon", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_BrokenView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CenterLineGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ClipGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ClipGroupAdd", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ClipGroupRemove", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CommandAddOffsetVertex", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CommandVertexCreationGroup", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CompDimensionTools", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ComplexSection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CosmeticCircle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CosmeticEraser", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CosmeticVertex", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_CosmeticVertexGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_DecorateLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_DetailView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_DiameterDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Dimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_DimensionRepair", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_DraftView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExportPageDXF", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExportPageSVG", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionArcLengthAnnotation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionAreaAnnotation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCascadeDimensionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCascadeHorizDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCascadeObliqueDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCascadeVertDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionChamferDimensionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionChangeLineAttributes", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCircleCenterLines", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCircleCenterLinesGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateChainDimensionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateCoordDimensionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateHorizChainDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateHorizChamferDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateHorizCoordDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateLengthArc", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateObliqueChainDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateObliqueCoordDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateVertChainDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateVertChamferDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCreateVertCoordDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionCustomizeFormat", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionDecreaseDecimal", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionDrawCirclesGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionDrawCosmArc", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionDrawCosmCircle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionDrawCosmCircle3Points", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionExtendLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionExtendShortenLineGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionHoleCircle", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionIncreaseDecimal", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionIncreaseDecreaseGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionInsertDiameter", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionInsertPrefixGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionInsertRepetition", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionInsertSquare", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionLineParallel", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionLinePerpendicular", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionLinePPGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionLockUnlockView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionPosChainDimensionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionPosHorizChainDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionPositionSectionView", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionPosObliqueChainDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionPosVertChainDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionRemovePrefixChar", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionSelectLineAttributes", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionShortenLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionThreadBoltBottom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionThreadBoltSide", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionThreadHoleBottom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionThreadHoleSide", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionThreadsGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtensionVertexAtIntersection", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ExtentGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_FaceCenterLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_FillTemplateFields", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_GeometricHatch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Hatch", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_HoleShaftFit", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_HorizontalDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_HorizontalExtentDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Image", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_LeaderLine", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_LengthDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Midpoints", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_MoveView", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + "no-action" + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + "no-action" + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_PageDefault", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_PageTemplate", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_PrintAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ProjectionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ProjectShape", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Quadrants", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_RadiusDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_RedrawPage", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_RichTextAnnotation", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_SectionGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_SectionView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ShareView", + "sourceModules": [ + "TechDraw" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ShowAll", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_SpreadsheetView", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_StackBottom", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_StackDown", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_StackGroup", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_StackTop", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_StackUp", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_SurfaceFinishSymbols", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_Symbol", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_ToggleFrame", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_VerticalDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_VerticalExtentDimension", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_View", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "TechDraw_WeldSymbol", + "sourceModules": [ + "GuiCore" + ], + "workbenches": [ + "TechDrawWorkbench", + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + false + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + false + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_InsertFeature", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_Test", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestAll", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestAllText", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestBase", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestBaseText", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestCreateMenu", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestDeleteMenu", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestDoc", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestDocText", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + }, + { + "id": "Test_TestWork", + "sourceModules": [ + "Test" + ], + "workbenches": [ + "TestWorkbench" + ], + "cases": { + "emptySelection": { + "states": [ + true + ], + "observed": true + }, + "selectedPartBox": { + "states": [ + true + ], + "observed": true + } + }, + "selectionSensitive": false, + "status": "runtime-probed" + } + ], + "sourceOnlyCommands": [ + { + "id": "Arch_Floor", + "sourceModules": [ + "BIM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "Arch_RebarTools", + "sourceModules": [ + "BIM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "CAM_%s", + "sourceModules": [ + "CAM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "CAM_3dTools", + "sourceModules": [ + "CAM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "CAM_Camotics", + "sourceModules": [ + "CAM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "CAM_Copy", + "sourceModules": [ + "CAM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "CAM_DrillingTools", + "sourceModules": [ + "CAM" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "Draft_Hyperlink", + "sourceModules": [ + "Draft" + ], + "reason": "source-registration-not-loaded" + }, + { + "id": "TemplatePyCheckable", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyGroup", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyGrp_1", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyGrp_2", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyGrp_3", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyMod_Cmd1", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyMod_Cmd2", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyMod_Cmd3", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyMod_Cmd4", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyMod_Cmd5", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + }, + { + "id": "TemplatePyMod_Cmd6", + "sourceModules": [ + "TemplatePyMod" + ], + "reason": "module-not-built" + } + ] +} diff --git a/config/freecad-native-build.json b/config/freecad-native-build.json index ce2ec80..2746189 100644 --- a/config/freecad-native-build.json +++ b/config/freecad-native-build.json @@ -30,7 +30,7 @@ }, "verification": { "goldenManifest": "fixtures/freecad-golden/manifest.json", - "scenarioCount": 5, + "scenarioCount": 100, "result": "passed" } } diff --git a/config/freecad-parameter-mutation-plan.json b/config/freecad-parameter-mutation-plan.json new file mode 100644 index 0000000..016a53e --- /dev/null +++ b/config/freecad-parameter-mutation-plan.json @@ -0,0 +1,21 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "coveragePlan": "config/freecad-golden-coverage-plan.json", + "dimensions": [ + "nominal-parameter-set", + "invalid-boundary", + "parameter-variant", + "edit-recompute-recovery", + "fcstd-roundtrip" + ], + "completionRule": "A family is complete only when every dimension has native or browser evidence tied to an explicit parameter snapshot and the edited/recovered Shape is valid.", + "evidenceRules": { + "fixture": "A success/failure fixture proves only the corresponding nominal or invalid boundary state.", + "parameterVariant": "Two or more distinct native/browser parameter snapshots are required; outcome-only records do not count.", + "editRecomputeRecovery": "The report must contain before, edited, recomputed and restored/recovered states from a real runtime transaction.", + "fcstdRoundtrip": "Every family round-trip id listed by the coverage plan must pass with zero differences." + }, + "failClosed": true +} diff --git a/config/freecad-parameter-mutation-report.json b/config/freecad-parameter-mutation-report.json new file mode 100644 index 0000000..f7ebc3b --- /dev/null +++ b/config/freecad-parameter-mutation-report.json @@ -0,0 +1,3158 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "sourceCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "status": "fail-closed", + "exactPromotionReady": false, + "dimensions": [ + "nominal-parameter-set", + "invalid-boundary", + "parameter-variant", + "edit-recompute-recovery", + "fcstd-roundtrip" + ], + "summary": { + "families": 35, + "completeFamilies": 1, + "incompleteFamilies": 34, + "nominalFamilies": 35, + "invalidBoundaryFamilies": 35, + "parameterVariantFamilies": 15, + "editRecoveryFamilies": 6, + "roundtripFamilies": 34 + }, + "blockers": [ + "20 families lack two distinct parameter snapshots.", + "29 families lack a real edited/recomputed/restored transaction." + ], + "missingDimensions": { + "edit-recompute-recovery": 29, + "fcstd-roundtrip": 1, + "parameter-variant": 20 + }, + "families": [ + { + "id": "Part::Box", + "operationTypes": [ + "box" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 21, + "invalid": 12, + "parameterVariants": 21, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "box", + "length": 10, + "width": 20, + "height": 30 + }, + "source": "fixtures/freecad-golden/manifest.json/part-box" + }, + { + "snapshot": { + "type": "box", + "length": 3, + "width": 5, + "height": 7, + "placement": { + "translation": [ + 1, + 2, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-001" + }, + { + "snapshot": { + "type": "box", + "length": 4, + "width": 7, + "height": 10, + "placement": { + "translation": [ + 2, + 4, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-002" + }, + { + "snapshot": { + "type": "box", + "length": 5, + "width": 9, + "height": 13, + "placement": { + "translation": [ + 3, + 6, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-003" + }, + { + "snapshot": { + "type": "box", + "length": 6, + "width": 11, + "height": 16, + "placement": { + "translation": [ + 4, + 1, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-004" + }, + { + "snapshot": { + "type": "box", + "length": 7, + "width": 13, + "height": 6, + "placement": { + "translation": [ + 0, + 3, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-005" + }, + { + "snapshot": { + "type": "box", + "length": 8, + "width": 4, + "height": 9, + "placement": { + "translation": [ + 1, + 5, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-006" + }, + { + "snapshot": { + "type": "box", + "length": 9, + "width": 6, + "height": 12, + "placement": { + "translation": [ + 2, + 0, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-007" + }, + { + "snapshot": { + "type": "box", + "length": 10, + "width": 8, + "height": 15, + "placement": { + "translation": [ + 3, + 2, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-008" + }, + { + "snapshot": { + "type": "box", + "length": 2, + "width": 10, + "height": 5, + "placement": { + "translation": [ + 4, + 4, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-009" + }, + { + "snapshot": { + "type": "box", + "length": 3, + "width": 12, + "height": 8, + "placement": { + "translation": [ + 0, + 6, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-010" + }, + { + "snapshot": { + "type": "box", + "length": 4, + "width": 3, + "height": 11, + "placement": { + "translation": [ + 1, + 1, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-box-011" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-box-001", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-002", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-003", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-004", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-005", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-006", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-007", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-008", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-009", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-010", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-011", + "fixtures/freecad-golden/failures/manifest.json/invalid-box-012", + "fixtures/freecad-golden/manifest.json/part-box", + "fixtures/freecad-golden/manifest.json/part-box-001", + "fixtures/freecad-golden/manifest.json/part-box-002", + "fixtures/freecad-golden/manifest.json/part-box-003", + "fixtures/freecad-golden/manifest.json/part-box-004", + "fixtures/freecad-golden/manifest.json/part-box-005", + "fixtures/freecad-golden/manifest.json/part-box-006", + "fixtures/freecad-golden/manifest.json/part-box-007", + "fixtures/freecad-golden/manifest.json/part-box-008", + "fixtures/freecad-golden/manifest.json/part-box-009", + "fixtures/freecad-golden/manifest.json/part-box-010", + "fixtures/freecad-golden/manifest.json/part-box-011", + "fixtures/freecad-golden/manifest.json/part-box-012", + "fixtures/freecad-golden/manifest.json/part-box-013", + "fixtures/freecad-golden/manifest.json/part-box-014", + "fixtures/freecad-golden/manifest.json/part-box-015", + "fixtures/freecad-golden/manifest.json/part-box-016", + "fixtures/freecad-golden/manifest.json/part-box-017", + "fixtures/freecad-golden/manifest.json/part-box-018", + "fixtures/freecad-golden/manifest.json/part-box-019", + "fixtures/freecad-golden/manifest.json/part-box-020" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Cylinder", + "operationTypes": [ + "cylinder" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 21, + "invalid": 10, + "parameterVariants": 21, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "cylinder", + "radius": 5, + "height": 20, + "angle": 360 + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 1.5, + "height": 8, + "angle": 360, + "placement": { + "translation": [ + -1, + 2, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-001" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 2, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + -2, + 4, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-002" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 2.5, + "height": 14, + "angle": 360, + "placement": { + "translation": [ + -3, + 1, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-003" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 3, + "height": 17, + "angle": 360, + "placement": { + "translation": [ + 0, + 3, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-004" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 3.5, + "height": 20, + "angle": 360, + "placement": { + "translation": [ + -1, + 0, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-005" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 4, + "height": 6, + "angle": 360, + "placement": { + "translation": [ + -2, + 2, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-006" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 4.5, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + -3, + 4, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-007" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 1, + "height": 12, + "angle": 360, + "placement": { + "translation": [ + 0, + 1, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-008" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 1.5, + "height": 15, + "angle": 360, + "placement": { + "translation": [ + -1, + 3, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-009" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 2, + "height": 18, + "angle": 360, + "placement": { + "translation": [ + -2, + 0, + 1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-010" + }, + { + "snapshot": { + "type": "cylinder", + "radius": 2.5, + "height": 21, + "angle": 360, + "placement": { + "translation": [ + -3, + 2, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cylinder-011" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-001", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-002", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-003", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-004", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-005", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-006", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-007", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-008", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-009", + "fixtures/freecad-golden/failures/manifest.json/invalid-cylinder-010", + "fixtures/freecad-golden/manifest.json/part-cylinder", + "fixtures/freecad-golden/manifest.json/part-cylinder-001", + "fixtures/freecad-golden/manifest.json/part-cylinder-002", + "fixtures/freecad-golden/manifest.json/part-cylinder-003", + "fixtures/freecad-golden/manifest.json/part-cylinder-004", + "fixtures/freecad-golden/manifest.json/part-cylinder-005", + "fixtures/freecad-golden/manifest.json/part-cylinder-006", + "fixtures/freecad-golden/manifest.json/part-cylinder-007", + "fixtures/freecad-golden/manifest.json/part-cylinder-008", + "fixtures/freecad-golden/manifest.json/part-cylinder-009", + "fixtures/freecad-golden/manifest.json/part-cylinder-010", + "fixtures/freecad-golden/manifest.json/part-cylinder-011", + "fixtures/freecad-golden/manifest.json/part-cylinder-012", + "fixtures/freecad-golden/manifest.json/part-cylinder-013", + "fixtures/freecad-golden/manifest.json/part-cylinder-014", + "fixtures/freecad-golden/manifest.json/part-cylinder-015", + "fixtures/freecad-golden/manifest.json/part-cylinder-016", + "fixtures/freecad-golden/manifest.json/part-cylinder-017", + "fixtures/freecad-golden/manifest.json/part-cylinder-018", + "fixtures/freecad-golden/manifest.json/part-cylinder-019", + "fixtures/freecad-golden/manifest.json/part-cylinder-020" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Sphere", + "operationTypes": [ + "sphere" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 16, + "invalid": 8, + "parameterVariants": 16, + "editRecovery": 0, + "roundtripRequired": 2, + "roundtripPassed": 2 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "sphere", + "radius": 5 + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere" + }, + { + "snapshot": { + "type": "sphere", + "radius": 1.3333333333333333, + "placement": { + "translation": [ + 1, + -1, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-001" + }, + { + "snapshot": { + "type": "sphere", + "radius": 1.6666666666666665, + "placement": { + "translation": [ + 2, + -2, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-002" + }, + { + "snapshot": { + "type": "sphere", + "radius": 2, + "placement": { + "translation": [ + 3, + -3, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-003" + }, + { + "snapshot": { + "type": "sphere", + "radius": 2.333333333333333, + "placement": { + "translation": [ + 4, + -4, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-004" + }, + { + "snapshot": { + "type": "sphere", + "radius": 2.666666666666667, + "placement": { + "translation": [ + 5, + 0, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-005" + }, + { + "snapshot": { + "type": "sphere", + "radius": 3, + "placement": { + "translation": [ + 0, + -1, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-006" + }, + { + "snapshot": { + "type": "sphere", + "radius": 3.3333333333333335, + "placement": { + "translation": [ + 1, + -2, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-007" + }, + { + "snapshot": { + "type": "sphere", + "radius": 3.6666666666666665, + "placement": { + "translation": [ + 2, + -3, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-008" + }, + { + "snapshot": { + "type": "sphere", + "radius": 1, + "placement": { + "translation": [ + 3, + -4, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-009" + }, + { + "snapshot": { + "type": "sphere", + "radius": 1.3333333333333333, + "placement": { + "translation": [ + 4, + 0, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-010" + }, + { + "snapshot": { + "type": "sphere", + "radius": 1.6666666666666665, + "placement": { + "translation": [ + 5, + -1, + 2 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-sphere-011" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-001", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-002", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-003", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-004", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-005", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-006", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-007", + "fixtures/freecad-golden/failures/manifest.json/invalid-sphere-008", + "fixtures/freecad-golden/manifest.json/part-sphere", + "fixtures/freecad-golden/manifest.json/part-sphere-001", + "fixtures/freecad-golden/manifest.json/part-sphere-002", + "fixtures/freecad-golden/manifest.json/part-sphere-003", + "fixtures/freecad-golden/manifest.json/part-sphere-004", + "fixtures/freecad-golden/manifest.json/part-sphere-005", + "fixtures/freecad-golden/manifest.json/part-sphere-006", + "fixtures/freecad-golden/manifest.json/part-sphere-007", + "fixtures/freecad-golden/manifest.json/part-sphere-008", + "fixtures/freecad-golden/manifest.json/part-sphere-009", + "fixtures/freecad-golden/manifest.json/part-sphere-010", + "fixtures/freecad-golden/manifest.json/part-sphere-011", + "fixtures/freecad-golden/manifest.json/part-sphere-012", + "fixtures/freecad-golden/manifest.json/part-sphere-013", + "fixtures/freecad-golden/manifest.json/part-sphere-014", + "fixtures/freecad-golden/manifest.json/part-sphere-015" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Ellipsoid", + "operationTypes": [ + "ellipsoid" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "ellipsoid", + "radius1": 2, + "radius2": 4, + "radius3": 0, + "angle1": -90, + "angle2": 90, + "angle3": 360 + }, + "source": "fixtures/freecad-golden/feature-families/manifest.json/part-ellipsoid-family-001" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/feature-families/failures/manifest.json/invalid-ellipsoid-family-001", + "fixtures/freecad-golden/feature-families/manifest.json/part-ellipsoid-family-001" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Cone", + "operationTypes": [ + "cone" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 16, + "invalid": 8, + "parameterVariants": 16, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "cone", + "radius1": 5, + "radius2": 2, + "height": 10, + "angle": 360 + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone" + }, + { + "snapshot": { + "type": "cone", + "radius1": 3, + "radius2": 1, + "height": 5, + "angle": 360, + "placement": { + "translation": [ + 1, + 1, + -1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-001" + }, + { + "snapshot": { + "type": "cone", + "radius1": 4, + "radius2": 1.5, + "height": 6, + "angle": 360, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-002" + }, + { + "snapshot": { + "type": "cone", + "radius1": 5, + "radius2": 2, + "height": 7, + "angle": 360, + "placement": { + "translation": [ + 3, + 3, + -1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-003" + }, + { + "snapshot": { + "type": "cone", + "radius1": 6, + "radius2": 0.5, + "height": 8, + "angle": 360, + "placement": { + "translation": [ + 0, + 4, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-004" + }, + { + "snapshot": { + "type": "cone", + "radius1": 7, + "radius2": 1, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + 1, + 5, + -1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-005" + }, + { + "snapshot": { + "type": "cone", + "radius1": 2, + "radius2": 1.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + 2, + 0, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-006" + }, + { + "snapshot": { + "type": "cone", + "radius1": 3, + "radius2": 2, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + 3, + 1, + -1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-007" + }, + { + "snapshot": { + "type": "cone", + "radius1": 4, + "radius2": 0.5, + "height": 12, + "angle": 360, + "placement": { + "translation": [ + 0, + 2, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-008" + }, + { + "snapshot": { + "type": "cone", + "radius1": 5, + "radius2": 1, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + 1, + 3, + -1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-009" + }, + { + "snapshot": { + "type": "cone", + "radius1": 6, + "radius2": 1.5, + "height": 14, + "angle": 360, + "placement": { + "translation": [ + 2, + 4, + 0 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-010" + }, + { + "snapshot": { + "type": "cone", + "radius1": 7, + "radius2": 2, + "height": 15, + "angle": 360, + "placement": { + "translation": [ + 3, + 5, + -1 + ] + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cone-011" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-001", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-002", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-003", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-004", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-005", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-006", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-007", + "fixtures/freecad-golden/failures/manifest.json/invalid-cone-008", + "fixtures/freecad-golden/manifest.json/part-cone", + "fixtures/freecad-golden/manifest.json/part-cone-001", + "fixtures/freecad-golden/manifest.json/part-cone-002", + "fixtures/freecad-golden/manifest.json/part-cone-003", + "fixtures/freecad-golden/manifest.json/part-cone-004", + "fixtures/freecad-golden/manifest.json/part-cone-005", + "fixtures/freecad-golden/manifest.json/part-cone-006", + "fixtures/freecad-golden/manifest.json/part-cone-007", + "fixtures/freecad-golden/manifest.json/part-cone-008", + "fixtures/freecad-golden/manifest.json/part-cone-009", + "fixtures/freecad-golden/manifest.json/part-cone-010", + "fixtures/freecad-golden/manifest.json/part-cone-011", + "fixtures/freecad-golden/manifest.json/part-cone-012", + "fixtures/freecad-golden/manifest.json/part-cone-013", + "fixtures/freecad-golden/manifest.json/part-cone-014", + "fixtures/freecad-golden/manifest.json/part-cone-015" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Torus", + "operationTypes": [ + "torus" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "torus", + "radius1": 10, + "radius2": 2, + "angle1": -180, + "angle2": 180, + "angle3": 270 + }, + "source": "fixtures/freecad-golden/feature-families/manifest.json/part-torus-family-001" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/feature-families/failures/manifest.json/invalid-torus-family-001", + "fixtures/freecad-golden/feature-families/manifest.json/part-torus-family-001" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Helix", + "operationTypes": [ + "helix" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "helix", + "pitch": 3, + "height": 6, + "radius": 2, + "angle": 0, + "segmentLength": 0 + }, + "source": "fixtures/freecad-golden/feature-families/manifest.json/part-helix-family-001" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/feature-families/failures/manifest.json/invalid-helix-family-001", + "fixtures/freecad-golden/feature-families/manifest.json/part-helix-family-001" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Prism", + "operationTypes": [ + "prism" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "prism", + "polygon": 6, + "circumradius": 2, + "height": 10, + "firstAngle": 10, + "secondAngle": -5 + }, + "source": "fixtures/freecad-golden/feature-families/manifest.json/part-prism-family-001" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/feature-families/failures/manifest.json/invalid-prism-family-001", + "fixtures/freecad-golden/feature-families/manifest.json/part-prism-family-001" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Wedge", + "operationTypes": [ + "wedge" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "wedge", + "xmin": 0, + "ymin": 0, + "zmin": 0, + "z2min": 0, + "x2min": 0, + "xmax": 10, + "ymax": 10, + "zmax": 10, + "z2max": 8, + "x2max": 8 + }, + "source": "fixtures/freecad-golden/feature-families/manifest.json/part-wedge-family-001" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/feature-families/failures/manifest.json/invalid-wedge-family-001", + "fixtures/freecad-golden/feature-families/manifest.json/part-wedge-family-001" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Fuse", + "operationTypes": [ + "fuse" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 8, + "invalid": 3, + "parameterVariants": 8, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-002" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-005" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-008" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-011" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-014" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-017" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-020" + }, + { + "snapshot": { + "type": "fuse", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-fuse-023" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-boolean-002", + "fixtures/freecad-golden/failures/manifest.json/invalid-boolean-004", + "fixtures/freecad-golden/failures/manifest.json/invalid-boolean-006", + "fixtures/freecad-golden/manifest.json/part-fuse-002", + "fixtures/freecad-golden/manifest.json/part-fuse-005", + "fixtures/freecad-golden/manifest.json/part-fuse-008", + "fixtures/freecad-golden/manifest.json/part-fuse-011", + "fixtures/freecad-golden/manifest.json/part-fuse-014", + "fixtures/freecad-golden/manifest.json/part-fuse-017", + "fixtures/freecad-golden/manifest.json/part-fuse-020", + "fixtures/freecad-golden/manifest.json/part-fuse-023" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Cut", + "operationTypes": [ + "cut" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": false + }, + "counts": { + "nominal": 10, + "invalid": 3, + "parameterVariants": 10, + "editRecovery": 0, + "roundtripRequired": 2, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 20, + "width": 20, + "height": 20 + }, + "tool": { + "type": "cylinder", + "radius": 5, + "height": 20, + "angle": 360, + "placement": { + "translation": [ + 10, + 10, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-through-hole" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + 4.5, + 4, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-001" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + 6, + 5.5, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-004" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + 5, + 4.5, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-007" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + 4, + 3.5, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-010" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 12, + "angle": 360, + "placement": { + "translation": [ + 5.5, + 5, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-013" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + 4.5, + 4, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-016" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + 6, + 5.5, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-019" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + 5, + 4.5, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-022" + }, + { + "snapshot": { + "type": "cut", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + 4, + 3.5, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-cut-025" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-boolean-001", + "fixtures/freecad-golden/failures/manifest.json/invalid-boolean-003", + "fixtures/freecad-golden/failures/manifest.json/invalid-boolean-005", + "fixtures/freecad-golden/manifest.json/part-cut-001", + "fixtures/freecad-golden/manifest.json/part-cut-004", + "fixtures/freecad-golden/manifest.json/part-cut-007", + "fixtures/freecad-golden/manifest.json/part-cut-010", + "fixtures/freecad-golden/manifest.json/part-cut-013", + "fixtures/freecad-golden/manifest.json/part-cut-016", + "fixtures/freecad-golden/manifest.json/part-cut-019", + "fixtures/freecad-golden/manifest.json/part-cut-022", + "fixtures/freecad-golden/manifest.json/part-cut-025", + "fixtures/freecad-golden/manifest.json/part-cut-through-hole" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery", + "fcstd-roundtrip" + ] + }, + { + "id": "Part::Common", + "operationTypes": [ + "common" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 8, + "invalid": 1, + "parameterVariants": 8, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-003" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-006" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-009" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-012" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-015" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-018" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-021" + }, + { + "snapshot": { + "type": "common", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "source": "fixtures/freecad-golden/manifest.json/part-common-024" + } + ], + "editRecoverySources": [], + "sources": [ + "fixtures/freecad-golden/failures/manifest.json/invalid-common-001", + "fixtures/freecad-golden/manifest.json/part-common-003", + "fixtures/freecad-golden/manifest.json/part-common-006", + "fixtures/freecad-golden/manifest.json/part-common-009", + "fixtures/freecad-golden/manifest.json/part-common-012", + "fixtures/freecad-golden/manifest.json/part-common-015", + "fixtures/freecad-golden/manifest.json/part-common-018", + "fixtures/freecad-golden/manifest.json/part-common-021", + "fixtures/freecad-golden/manifest.json/part-common-024" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Extrusion", + "operationTypes": [ + "extrusion" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-part-builders-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Revolution", + "operationTypes": [ + "revolution" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-part-builders-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Loft", + "operationTypes": [ + "loft" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-part-builders-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Sweep", + "operationTypes": [ + "sweep" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-part-builders-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Fillet", + "operationTypes": [ + "fillet" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 3, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "fillet", + "typeId": "PartDesign::Fillet" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "fillet", + "code": "DRESSUP_EDGE_REFERENCE_UNRESOLVED", + "retainedShapeId": "shape-msi6khor-4", + "previousShapeId": "shape-msi6khor-4", + "restoredStatus": "completed", + "restoredShapeId": "shape-msi6khvg-a" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "fillet", + "kind": "edge", + "persistentId": "topo-edge-c5080c7f512c3757" + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-part-builders-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "Part::Chamfer", + "operationTypes": [ + "chamfer" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 2, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "chamfer", + "typeId": "PartDesign::Chamfer" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "chamfer", + "kind": "edge", + "persistentId": "topo-edge-1190dbb2fa02bb4d" + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-part-builders-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Pad", + "operationTypes": [ + "pad" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": true, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 2, + "invalid": 1, + "parameterVariants": 2, + "editRecovery": 1, + "roundtripRequired": 1, + "roundtripPassed": 1 + }, + "parameterVariantSources": [ + { + "snapshot": { + "length": 42 + }, + "source": "config/chrome-partdesign-lifecycle-verification.json#restored" + }, + { + "snapshot": { + "length": 31 + }, + "source": "config/chrome-partdesign-lifecycle-verification.json#edited" + } + ], + "editRecoverySources": [ + "pad-length-edit" + ], + "sources": [ + "config/chrome-partdesign-lifecycle-verification.json", + "config/chrome-partdesign-lifecycle-verification.json#edited", + "config/chrome-partdesign-lifecycle-verification.json#initial", + "config/chrome-partdesign-lifecycle-verification.json#restored", + "config/freecad-partdesign-base-oracle.json", + "config/freecad-partdesign-failure-oracle.json" + ], + "complete": true, + "missing": [] + }, + { + "id": "PartDesign::Pocket", + "operationTypes": [ + "pocket" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": true, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 3, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 1, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [ + "pad-length-edit" + ], + "sources": [ + "config/chrome-partdesign-lifecycle-verification.json", + "config/freecad-partdesign-base-oracle.json", + "config/freecad-partdesign-failure-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant" + ] + }, + { + "id": "PartDesign::Revolution", + "operationTypes": [ + "partdesign-revolution" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-revolution-groove-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Groove", + "operationTypes": [ + "groove" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-revolution-groove-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::AdditiveLoft", + "operationTypes": [ + "additive-loft" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": true, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 1, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "additive-loft", + "typeId": "PartDesign::AdditiveLoft", + "profile": "sketch", + "sections": [ + "sketch001" + ], + "spine": null, + "transition": null + }, + "source": "config/chrome-partdesign-loft-verification.json" + } + ], + "editRecoverySources": [ + "loft-failure-recovery" + ], + "sources": [ + "config/chrome-partdesign-loft-verification.json", + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-loft-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant" + ] + }, + { + "id": "PartDesign::SubtractiveLoft", + "operationTypes": [ + "subtractive-loft" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": true, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 1, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "subtractive-loft", + "typeId": "PartDesign::SubtractiveLoft", + "profile": "sketch004", + "sections": [ + "sketch005" + ], + "spine": null, + "transition": null + }, + "source": "config/chrome-partdesign-loft-verification.json" + } + ], + "editRecoverySources": [ + "loft-failure-recovery" + ], + "sources": [ + "config/chrome-partdesign-loft-verification.json", + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-loft-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant" + ] + }, + { + "id": "PartDesign::AdditivePipe", + "operationTypes": [ + "additive-pipe" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": true, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 1, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "additive-pipe", + "typeId": "PartDesign::AdditivePipe", + "profile": "sketch003", + "sections": null, + "spine": { + "schemaVersion": 1, + "objectId": "sketch002", + "subElements": [] + }, + "transition": "Transformed" + }, + "source": "config/chrome-partdesign-loft-verification.json" + } + ], + "editRecoverySources": [ + "pipe-failure-recovery" + ], + "sources": [ + "config/chrome-partdesign-loft-verification.json", + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-loft-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant" + ] + }, + { + "id": "PartDesign::SubtractivePipe", + "operationTypes": [ + "subtractive-pipe" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": true, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 1, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "subtractive-pipe", + "typeId": "PartDesign::SubtractivePipe", + "profile": "sketch006", + "sections": null, + "spine": { + "schemaVersion": 1, + "objectId": "sketch007", + "subElements": [] + }, + "transition": "Transformed" + }, + "source": "config/chrome-partdesign-loft-verification.json" + } + ], + "editRecoverySources": [ + "pipe-failure-recovery" + ], + "sources": [ + "config/chrome-partdesign-loft-verification.json", + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-loft-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant" + ] + }, + { + "id": "PartDesign::Fillet", + "operationTypes": [ + "partdesign-fillet" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-partdesign-dressup-oracle.json", + "config/freecad-partdesign-failure-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Chamfer", + "operationTypes": [ + "partdesign-chamfer" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 0, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [], + "editRecoverySources": [], + "sources": [ + "config/freecad-partdesign-dressup-oracle.json", + "config/freecad-partdesign-failure-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Draft", + "operationTypes": [ + "draft" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 2, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "draft", + "typeId": "PartDesign::Draft" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "draft", + "kind": "face", + "persistentId": "topo-face-154d54dd4cc87e90" + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-dressup-oracle.json", + "config/freecad-partdesign-failure-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Thickness", + "operationTypes": [ + "thickness" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 2, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "thickness", + "typeId": "PartDesign::Thickness" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "thickness", + "kind": "face", + "persistentId": "topo-face-82a09f740c619c10" + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-dressup-oracle.json", + "config/freecad-partdesign-failure-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Mirrored", + "operationTypes": [ + "mirrored" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 2, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "mirrored", + "typeId": "PartDesign::Mirrored", + "transformMode": "Features", + "originals": [ + "hole" + ] + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "mirrored", + "typeId": "PartDesign::Mirrored", + "transformMode": "Whole shape", + "originals": [] + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-transform-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::MultiTransform", + "operationTypes": [ + "multi-transform" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "multi-transform", + "typeId": "PartDesign::MultiTransform", + "transformMode": "Whole shape", + "originals": [] + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-transform-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::LinearPattern", + "operationTypes": [ + "linear-pattern" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 2, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "linear-pattern", + "typeId": "PartDesign::LinearPattern", + "transformMode": "Features", + "originals": [ + "hole" + ] + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "linear-pattern", + "typeId": "PartDesign::LinearPattern", + "transformMode": "Whole shape", + "originals": [] + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-transform-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::PolarPattern", + "operationTypes": [ + "polar-pattern" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": false, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 1, + "invalid": 1, + "parameterVariants": 1, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "polar-pattern", + "typeId": "PartDesign::PolarPattern", + "transformMode": "Whole shape", + "originals": [] + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-transform-oracle.json" + ], + "complete": false, + "missing": [ + "parameter-variant", + "edit-recompute-recovery" + ] + }, + { + "id": "PartDesign::Hole", + "operationTypes": [ + "hole" + ], + "evidence": { + "nominal-parameter-set": true, + "invalid-boundary": true, + "parameter-variant": true, + "edit-recompute-recovery": false, + "fcstd-roundtrip": true + }, + "counts": { + "nominal": 2, + "invalid": 1, + "parameterVariants": 3, + "editRecovery": 0, + "roundtripRequired": 0, + "roundtripPassed": 0 + }, + "parameterVariantSources": [ + { + "snapshot": { + "command": "hole", + "typeId": "PartDesign::Hole", + "threaded": false, + "modelThread": false, + "threadType": "None", + "threadSize": "M6x1.0", + "threadDirection": "Right" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "hole", + "typeId": "PartDesign::Hole", + "threaded": true, + "modelThread": false, + "threadType": "ISOMetricProfile", + "threadSize": "M1x0.25", + "threadDirection": "Right" + }, + "source": "config/chrome-partdesign-transform-verification.json" + }, + { + "snapshot": { + "command": "hole", + "typeId": "PartDesign::Hole", + "threaded": true, + "modelThread": true, + "threadType": "ISOMetricProfile", + "threadSize": "M2x0.4", + "threadDirection": "Left" + }, + "source": "config/chrome-partdesign-transform-verification.json" + } + ], + "editRecoverySources": [], + "sources": [ + "config/chrome-partdesign-transform-verification.json", + "config/freecad-partdesign-failure-oracle.json", + "config/freecad-partdesign-transform-oracle.json" + ], + "complete": false, + "missing": [ + "edit-recompute-recovery" + ] + } + ] +} diff --git a/config/freecad-part-builders-oracle.json b/config/freecad-part-builders-oracle.json new file mode 100644 index 0000000..c2bfd6d --- /dev/null +++ b/config/freecad-part-builders-oracle.json @@ -0,0 +1,267 @@ +{ + "baselineId": "freecad-1.1.1-part-builders-oracle", + "failureCases": [ + { + "area": 0, + "edges": 0, + "expected": "rejected", + "faces": 0, + "id": "part-extrusion-missing-input", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "shapeNull": true, + "shapeType": "Null", + "shapeValid": false, + "solids": 0, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No object linked", + "typeId": "Part::Extrusion", + "vertices": 0, + "volume": 0 + }, + { + "area": 0, + "edges": 0, + "expected": "rejected", + "faces": 0, + "id": "part-revolution-missing-input", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "shapeNull": true, + "shapeType": "Null", + "shapeValid": false, + "solids": 0, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No object linked", + "typeId": "Part::Revolution", + "vertices": 0, + "volume": 0 + }, + { + "area": 0, + "edges": 0, + "expected": "rejected", + "faces": 0, + "id": "part-loft-missing-input", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "shapeNull": true, + "shapeType": "Null", + "shapeValid": false, + "solids": 0, + "state": [ + "Invalid" + ], + "statusString": "No sections linked.", + "typeId": "Part::Loft", + "vertices": 0, + "volume": 0 + }, + { + "area": 0, + "edges": 0, + "expected": "rejected", + "faces": 0, + "id": "part-sweep-missing-input", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "shapeNull": true, + "shapeType": "Null", + "shapeValid": false, + "solids": 0, + "state": [ + "Invalid" + ], + "statusString": "No sections linked.", + "typeId": "Part::Sweep", + "vertices": 0, + "volume": 0 + }, + { + "area": 0, + "edges": 0, + "expected": "rejected", + "faces": 0, + "id": "part-fillet-missing-input", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "shapeNull": true, + "shapeType": "Null", + "shapeValid": false, + "solids": 0, + "state": [ + "Invalid" + ], + "statusString": "No object linked", + "typeId": "Part::Fillet", + "vertices": 0, + "volume": 0 + }, + { + "area": 0, + "edges": 0, + "expected": "rejected", + "faces": 0, + "id": "part-chamfer-missing-input", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "shapeNull": true, + "shapeType": "Null", + "shapeValid": false, + "solids": 0, + "state": [ + "Invalid" + ], + "statusString": "No object linked", + "typeId": "Part::Chamfer", + "vertices": 0, + "volume": 0 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "successCases": [ + { + "area": 62, + "edges": 12, + "expected": "success", + "faces": 6, + "id": "part-extrusion-success", + "observed": "success", + "passed": true, + "shapeNull": false, + "shapeType": "Solid", + "shapeValid": true, + "solids": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "Part::Extrusion", + "vertices": 8, + "volume": 30 + }, + { + "area": 150.79644737231007, + "edges": 6, + "expected": "success", + "faces": 4, + "id": "part-revolution-success", + "observed": "success", + "passed": true, + "shapeNull": false, + "shapeType": "Solid", + "shapeValid": true, + "solids": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "Part::Revolution", + "vertices": 4, + "volume": 75.398223686155 + }, + { + "area": 81.18823416311344, + "edges": 12, + "expected": "success", + "faces": 6, + "id": "part-loft-success", + "observed": "success", + "passed": true, + "shapeNull": false, + "shapeType": "Solid", + "shapeValid": true, + "solids": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "Part::Loft", + "vertices": 8, + "volume": 46.666666666666664 + }, + { + "area": 56, + "edges": 12, + "expected": "success", + "faces": 6, + "id": "part-sweep-success", + "observed": "success", + "passed": true, + "shapeNull": false, + "shapeType": "Solid", + "shapeValid": true, + "solids": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "Part::Sweep", + "vertices": 8, + "volume": 23.999999999999996 + }, + { + "area": 372.99557428756424, + "edges": 15, + "expected": "success", + "faces": 7, + "id": "part-fillet-success", + "observed": "success", + "passed": true, + "shapeNull": false, + "shapeType": "Compound", + "shapeValid": true, + "solids": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "Part::Fillet", + "vertices": 10, + "volume": 478.7123889803846 + }, + { + "area": 371.4852813742385, + "edges": 15, + "expected": "success", + "faces": 7, + "id": "part-chamfer-success", + "observed": "success", + "passed": true, + "shapeNull": false, + "shapeType": "Compound", + "shapeValid": true, + "solids": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "Part::Chamfer", + "vertices": 10, + "volume": 476.9999999999999 + } + ], + "summary": { + "acceptedEmpty": 0, + "failureCases": 6, + "failurePassed": 6, + "rejected": 6, + "successCases": 6, + "successPassed": 6 + } +} diff --git a/config/freecad-partdesign-base-oracle.json b/config/freecad-partdesign-base-oracle.json new file mode 100644 index 0000000..9f43162 --- /dev/null +++ b/config/freecad-partdesign-base-oracle.json @@ -0,0 +1,115 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-base-oracle", + "cases": [ + { + "bounds": { + "max": [ + 2.43744331762962, + 2.43744331762962, + 5 + ], + "min": [ + -2.43744331762962, + -2.43744331762962, + 0 + ] + }, + "faces": 6, + "id": "pad-tapered", + "passed": true, + "solids": 1, + "status": "Valid", + "volume": 98.77344374611019 + }, + { + "bounds": { + "max": [ + 5, + 5, + 5 + ], + "min": [ + -5, + -5, + -5 + ] + }, + "faces": 10, + "id": "pocket-tapered", + "passed": true, + "solids": 1, + "status": "Valid", + "volume": 810.4374375507407 + }, + { + "bounds": { + "max": [ + 5, + 5, + 5 + ], + "min": [ + -5, + -5, + -5 + ] + }, + "faces": 10, + "id": "pocket-through-all", + "passed": true, + "solids": 1, + "status": "Valid", + "volume": 960 + }, + { + "bounds": { + "max": [ + 5, + 5, + 5 + ], + "min": [ + -5, + -5, + -5 + ] + }, + "faces": 10, + "id": "pocket-up-to-face", + "passed": true, + "solids": 1, + "status": "Valid", + "targetFace": 5, + "volume": 960 + }, + { + "bounds": { + "max": [ + 2, + 2, + 3 + ], + "min": [ + -2, + -2, + -3 + ] + }, + "faces": 6, + "id": "pad-midplane", + "passed": true, + "solids": 1, + "status": "Valid", + "volume": 95.99999999999999 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "cases": 5, + "passed": 5 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-partdesign-dressup-oracle.json b/config/freecad-partdesign-dressup-oracle.json new file mode 100644 index 0000000..7930166 --- /dev/null +++ b/config/freecad-partdesign-dressup-oracle.json @@ -0,0 +1,69 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-dressup-oracle", + "cases": [ + { + "edges": 15, + "faces": 7, + "id": "fillet-selected-edge", + "passed": true, + "selection": [ + "Edge1" + ], + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::Fillet", + "volume": 997.8539816339743 + }, + { + "edges": 15, + "faces": 7, + "id": "chamfer-selected-edge", + "passed": true, + "selection": [ + "Edge1" + ], + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::Chamfer", + "volume": 994.9999999999998 + }, + { + "edges": 12, + "faces": 6, + "id": "draft-selected-face", + "passed": true, + "reversed": true, + "selection": [ + "Face6" + ], + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::Draft", + "volume": 1499.9999999999998 + }, + { + "edges": 24, + "elementMapSize": 51, + "faces": 11, + "id": "thickness-selected-face", + "passed": true, + "reversed": true, + "selection": [ + "Face1" + ], + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::Thickness", + "volume": 423.99999999999983 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "cases": 4, + "passed": 4 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-partdesign-failure-oracle.json b/config/freecad-partdesign-failure-oracle.json new file mode 100644 index 0000000..b719c0b --- /dev/null +++ b/config/freecad-partdesign-failure-oracle.json @@ -0,0 +1,267 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-failure-oracle", + "cases": [ + { + "expected": "rejected", + "id": "missing-input-pad", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No object linked", + "typeId": "PartDesign::Pad" + }, + { + "expected": "rejected", + "id": "missing-input-pocket", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No object linked", + "typeId": "PartDesign::Pocket" + }, + { + "expected": "rejected", + "id": "missing-input-revolution", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No profile linked", + "typeId": "PartDesign::Revolution" + }, + { + "expected": "rejected", + "id": "missing-input-groove", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No profile linked", + "typeId": "PartDesign::Groove" + }, + { + "expected": "rejected", + "id": "missing-input-additiveloft", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Failed to get shape of Profile", + "typeId": "PartDesign::AdditiveLoft" + }, + { + "expected": "rejected", + "id": "missing-input-subtractiveloft", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Failed to get shape of Profile", + "typeId": "PartDesign::SubtractiveLoft" + }, + { + "expected": "rejected", + "id": "missing-input-additivepipe", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "A fatal error occurred when making the pipe", + "typeId": "PartDesign::AdditivePipe" + }, + { + "expected": "rejected", + "id": "missing-input-subtractivepipe", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "A fatal error occurred when making the pipe", + "typeId": "PartDesign::SubtractivePipe" + }, + { + "expected": "rejected", + "id": "missing-input-fillet", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No Base object linked", + "typeId": "PartDesign::Fillet" + }, + { + "expected": "rejected", + "id": "missing-input-chamfer", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No Base object linked", + "typeId": "PartDesign::Chamfer" + }, + { + "expected": "rejected", + "id": "missing-input-draft", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No Base object linked", + "typeId": "PartDesign::Draft" + }, + { + "expected": "rejected", + "id": "missing-input-thickness", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "No Base object linked", + "typeId": "PartDesign::Thickness" + }, + { + "expected": "accepted-empty", + "id": "missing-input-mirrored", + "inputClass": "missing-required-input", + "observed": "accepted-empty", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "PartDesign::Mirrored" + }, + { + "expected": "accepted-empty", + "id": "missing-input-multitransform", + "inputClass": "missing-required-input", + "observed": "accepted-empty", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "PartDesign::MultiTransform" + }, + { + "expected": "accepted-empty", + "id": "missing-input-linearpattern", + "inputClass": "missing-required-input", + "observed": "accepted-empty", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "PartDesign::LinearPattern" + }, + { + "expected": "accepted-empty", + "id": "missing-input-polarpattern", + "inputClass": "missing-required-input", + "observed": "accepted-empty", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "typeId": "PartDesign::PolarPattern" + }, + { + "expected": "rejected", + "id": "missing-input-hole", + "inputClass": "missing-required-input", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Linked shape object is empty", + "typeId": "PartDesign::Hole" + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "accepted": 0, + "acceptedEmpty": 4, + "cases": 17, + "passed": 17, + "rejected": 13 + } +} diff --git a/config/freecad-partdesign-loft-oracle.json b/config/freecad-partdesign-loft-oracle.json new file mode 100644 index 0000000..467c0ba --- /dev/null +++ b/config/freecad-partdesign-loft-oracle.json @@ -0,0 +1,52 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-loft-oracle", + "cases": [ + { + "faces": 6, + "id": "additive-loft", + "passed": true, + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::AdditiveLoft", + "volume": 1 + }, + { + "faces": 5, + "id": "subtractive-loft", + "passed": true, + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::SubtractiveLoft", + "volume": 0.9999999999999994 + }, + { + "faces": 3, + "id": "additive-pipe", + "passed": true, + "solids": 1, + "status": "Valid", + "transition": "Transformed", + "typeId": "PartDesign::AdditivePipe", + "volume": 3.1415926535897927 + }, + { + "faces": 7, + "id": "subtractive-pipe", + "passed": true, + "solids": 1, + "status": "Valid", + "transition": "Transformed", + "typeId": "PartDesign::SubtractivePipe", + "volume": 96.8584073464102 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "cases": 4, + "passed": 4 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-partdesign-profile-oracle.json b/config/freecad-partdesign-profile-oracle.json new file mode 100644 index 0000000..4e7fbfb --- /dev/null +++ b/config/freecad-partdesign-profile-oracle.json @@ -0,0 +1,88 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-profile-oracle", + "cases": [ + { + "expected": "accepted", + "id": "closed", + "observed": "accepted", + "passed": true, + "recomputeResult": true, + "shapeNull": false, + "solidCount": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "volume": 360 + }, + { + "expected": "accepted", + "id": "multi-ring", + "observed": "accepted", + "passed": true, + "recomputeResult": true, + "shapeNull": false, + "solidCount": 1, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "volume": 320 + }, + { + "expected": "rejected", + "id": "open", + "observed": "rejected", + "passed": true, + "recomputeResult": true, + "shapeNull": true, + "solidCount": 0, + "state": [ + "Touched", + "Invalid" + ], + "statusString": "Wire is not closed.", + "volume": 0 + }, + { + "expected": "accepted", + "id": "self-intersecting", + "observed": "accepted", + "passed": true, + "recomputeResult": true, + "shapeNull": false, + "solidCount": 2, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "volume": 80 + }, + { + "expected": "accepted", + "id": "invalid-nesting", + "observed": "accepted", + "passed": true, + "recomputeResult": true, + "shapeNull": false, + "solidCount": 2, + "state": [ + "Up-to-date" + ], + "statusString": "Valid", + "volume": 370 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "length": 10, + "schemaVersion": 1, + "status": "pass", + "summary": { + "accepted": 4, + "cases": 5, + "passed": 5, + "rejected": 1 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-partdesign-revolution-groove-oracle.json b/config/freecad-partdesign-revolution-groove-oracle.json new file mode 100644 index 0000000..8010089 --- /dev/null +++ b/config/freecad-partdesign-revolution-groove-oracle.json @@ -0,0 +1,37 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-revolution-groove-oracle", + "cases": [ + { + "faces": 4, + "id": "partdesign-revolution", + "operation": "revolution", + "passed": true, + "shapeNull": false, + "shapeValid": true, + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::Revolution", + "volume": 75.39822368615502 + }, + { + "faces": 10, + "id": "partdesign-groove", + "operation": "groove", + "passed": true, + "shapeNull": false, + "shapeValid": true, + "solids": 1, + "status": "Valid", + "typeId": "PartDesign::Groove", + "volume": 995.2876110196153 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "cases": 2, + "passed": 2 + } +} diff --git a/config/freecad-partdesign-transform-oracle.json b/config/freecad-partdesign-transform-oracle.json new file mode 100644 index 0000000..198937f --- /dev/null +++ b/config/freecad-partdesign-transform-oracle.json @@ -0,0 +1,312 @@ +{ + "baselineId": "freecad-1.1.1-partdesign-transform-oracle", + "cases": [ + { + "direction": "X_Axis", + "edges": 48, + "faces": 21, + "id": "linear-feature-list", + "length": 12, + "occurrences": 3, + "originals": [ + "Boss" + ], + "passed": true, + "solids": 1, + "status": "Valid", + "transformMode": "Features", + "typeId": "PartDesign::LinearPattern", + "volume": 423.99999999999994 + }, + { + "edges": 28, + "faces": 12, + "id": "mirrored-feature-list", + "originals": [ + "Boss" + ], + "passed": true, + "plane": "YZ_Plane", + "solids": 1, + "status": "Valid", + "transformMode": "Features", + "typeId": "PartDesign::Mirrored", + "volume": 416.00000000000006 + }, + { + "angle": 360, + "axis": "X_Axis", + "edges": 12, + "faces": 6, + "id": "polar-feature-list", + "occurrences": 4, + "originals": [ + "Box" + ], + "passed": true, + "solids": 1, + "status": "Valid", + "transformMode": "Features", + "typeId": "PartDesign::PolarPattern", + "volume": 3999.999999999999 + }, + { + "edges": 36, + "faces": 14, + "id": "multi-transform-feature-list", + "originals": [ + "Pad" + ], + "passed": true, + "solids": 1, + "status": "Valid", + "transformMode": "Features", + "transformations": [ + "PartDesign::Mirrored", + "PartDesign::LinearPattern", + "PartDesign::PolarPattern" + ], + "typeId": "PartDesign::MultiTransform", + "volume": 19999.999999999996 + }, + { + "diameter": 5, + "edges": 15, + "faces": 8, + "id": "iso-m6-tap-drill", + "modeled": false, + "passed": true, + "properties": [ + "AddSubShape", + "AllowMultiFace", + "BaseFeature", + "BaseProfileType", + "CustomThreadClearance", + "Depth", + "DepthType", + "Diameter", + "DrillForDepth", + "DrillPoint", + "DrillPointAngle", + "ExpressionEngine", + "HoleCutCountersinkAngle", + "HoleCutCustomValues", + "HoleCutDepth", + "HoleCutDiameter", + "HoleCutType", + "Label", + "Label2", + "Midplane", + "ModelThread", + "Placement", + "PreviewShape", + "Profile", + "Refine", + "Reversed", + "Shape", + "ShapeMaterial", + "Suppressed", + "SuppressedShape", + "Tapered", + "TaperedAngle", + "ThreadClass", + "ThreadDepth", + "ThreadDepthType", + "ThreadDiameter", + "ThreadDirection", + "ThreadFit", + "ThreadSize", + "ThreadType", + "Threaded", + "UpToFace", + "UpToFace2", + "UpToShape", + "UpToShape2", + "UseCustomThreadClearance", + "Visibility", + "_Body", + "_ElementMapVersion" + ], + "solids": 1, + "status": "Valid", + "threadClass": "4G", + "threadDepth": 6, + "threadDepthType": "Dimension", + "threadDiameter": 6, + "threadDirection": "Right", + "threadFit": "Medium", + "threadPitch": 1, + "threadSize": "M6x1.0", + "threadType": "ISOMetricProfile", + "threaded": true, + "typeId": "PartDesign::Hole", + "volume": 3842.92036732051 + }, + { + "diameter": 5.026, + "edges": 75, + "faces": 36, + "id": "iso-m6-modeled-thread", + "modeled": true, + "passed": true, + "properties": [ + "AddSubShape", + "AllowMultiFace", + "BaseFeature", + "BaseProfileType", + "CustomThreadClearance", + "Depth", + "DepthType", + "Diameter", + "DrillForDepth", + "DrillPoint", + "DrillPointAngle", + "ExpressionEngine", + "HoleCutCountersinkAngle", + "HoleCutCustomValues", + "HoleCutDepth", + "HoleCutDiameter", + "HoleCutType", + "Label", + "Label2", + "Midplane", + "ModelThread", + "Placement", + "PreviewShape", + "Profile", + "Refine", + "Reversed", + "Shape", + "ShapeMaterial", + "Suppressed", + "SuppressedShape", + "Tapered", + "TaperedAngle", + "ThreadClass", + "ThreadDepth", + "ThreadDepthType", + "ThreadDiameter", + "ThreadDirection", + "ThreadFit", + "ThreadSize", + "ThreadType", + "Threaded", + "UpToFace", + "UpToFace2", + "UpToShape", + "UpToShape2", + "UseCustomThreadClearance", + "Visibility", + "_Body", + "_ElementMapVersion" + ], + "solids": 1, + "status": "Valid", + "threadClass": "4G", + "threadDepth": 6, + "threadDepthType": "Dimension", + "threadDiameter": 6, + "threadDirection": "Left", + "threadFit": "Medium", + "threadPitch": 1, + "threadSize": "M6x1.0", + "threadType": "ISOMetricProfile", + "threaded": true, + "typeId": "PartDesign::Hole", + "volume": 3820.1907618181585 + }, + { + "expected": "rejected", + "id": "mirrored-missing-reference", + "inputClass": "valid-original-missing-transform-reference", + "observed": "rejected", + "originals": [ + "Boss" + ], + "passed": true, + "shapeNull": true, + "staleShapePreserved": false, + "state": [ + "Touched", + "Invalid" + ], + "status": "No mirror plane reference specified", + "transformations": [], + "typeId": "PartDesign::Mirrored" + }, + { + "expected": "rejected", + "id": "multitransform-missing-reference", + "inputClass": "valid-original-missing-transform-reference", + "observed": "rejected", + "originals": [ + "Boss" + ], + "passed": true, + "shapeNull": false, + "staleShapePreserved": true, + "state": [ + "Touched", + "Invalid" + ], + "status": "Shape index 999 out of bound 12", + "transformations": [ + "PartDesign::LinearPattern" + ], + "typeId": "PartDesign::MultiTransform" + }, + { + "expected": "rejected", + "id": "linearpattern-missing-reference", + "inputClass": "valid-original-missing-transform-reference", + "observed": "rejected", + "originals": [ + "Boss" + ], + "passed": true, + "shapeNull": true, + "staleShapePreserved": false, + "state": [ + "Touched", + "Invalid" + ], + "status": "Shape index 999 out of bound 12", + "transformations": [], + "typeId": "PartDesign::LinearPattern" + }, + { + "expected": "rejected", + "id": "polarpattern-missing-reference", + "inputClass": "valid-original-missing-transform-reference", + "observed": "rejected", + "originals": [ + "Boss" + ], + "passed": true, + "shapeNull": true, + "staleShapePreserved": false, + "state": [ + "Touched", + "Invalid" + ], + "status": "No axis reference specified", + "transformations": [], + "typeId": "PartDesign::PolarPattern" + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "acceptedEmpty": 0, + "cases": 10, + "failureCases": 4, + "failurePassed": 4, + "passed": 10, + "rejected": 4, + "successCases": 6, + "successPassed": 6 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-sketcher-constraint-oracle.json b/config/freecad-sketcher-constraint-oracle.json new file mode 100644 index 0000000..d224e2a --- /dev/null +++ b/config/freecad-sketcher-constraint-oracle.json @@ -0,0 +1,594 @@ +{ + "baselineId": "freecad-1.1.1-sketcher-constraint-oracle", + "classificationCases": [ + { + "conflicting": [], + "constraintTypes": [ + "Horizontal", + "Distance" + ], + "degreesOfFreedom": 3, + "driving": false, + "expected": "reference", + "fullyConstrained": false, + "id": "reference-dimension", + "inputValue": 99, + "malformed": [], + "measuredValue": 77.98445020149762, + "observed": "reference", + "partiallyRedundant": [], + "redundant": [], + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintTypes": [ + "Distance", + "Distance" + ], + "degreesOfFreedom": 3, + "expected": "redundant", + "fullyConstrained": false, + "id": "redundant-dimension", + "malformed": [], + "observed": "redundant", + "partiallyRedundant": [], + "redundant": [ + 2 + ], + "solveStatus": -2, + "values": [ + 5, + 5 + ] + }, + { + "conflicting": [ + 1, + 2 + ], + "constraintTypes": [ + "Distance", + "Distance" + ], + "degreesOfFreedom": 3, + "expected": "conflicting", + "fullyConstrained": false, + "id": "conflicting-dimension", + "malformed": [], + "observed": "conflicting", + "partiallyRedundant": [], + "redundant": [], + "solveStatus": -3, + "values": [ + 5, + 8 + ] + } + ], + "failureCases": [ + { + "addResult": null, + "constraintType": "Coincident", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "coincident-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Horizontal", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "horizontal-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Vertical", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "vertical-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Parallel", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "parallel-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Tangent", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "tangent-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Distance", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "distance-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "DistanceX", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "distance-x-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "DistanceY", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "distance-y-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Angle", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "angle-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Perpendicular", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "perpendicular-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Radius", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "radius-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Equal", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "equal-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "PointOnObject", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "point-on-object-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Symmetric", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "symmetric-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "InternalAlignment", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "internal-alignment-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "SnellsLaw", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "snells-law-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Block", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "block-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Diameter", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "diameter-invalid-reference", + "observed": "failure" + }, + { + "addResult": null, + "constraintType": "Weight", + "error": "Constraint has invalid indexes", + "errorType": "IndexError", + "expected": "failure", + "id": "weight-invalid-reference", + "observed": "failure" + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "revision": "14556 (Git)", + "schemaVersion": 1, + "status": "pass", + "successCases": [ + { + "conflicting": [], + "constraintType": "Coincident", + "constraintTypes": [ + "Coincident" + ], + "degreesOfFreedom": 6, + "expected": "success", + "fullyConstrained": false, + "id": "coincident-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Horizontal", + "constraintTypes": [ + "Horizontal" + ], + "degreesOfFreedom": 3, + "expected": "success", + "fullyConstrained": false, + "id": "horizontal-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Vertical", + "constraintTypes": [ + "Vertical" + ], + "degreesOfFreedom": 3, + "expected": "success", + "fullyConstrained": false, + "id": "vertical-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Parallel", + "constraintTypes": [ + "Parallel" + ], + "degreesOfFreedom": 7, + "expected": "success", + "fullyConstrained": false, + "id": "parallel-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Tangent", + "constraintTypes": [ + "Tangent" + ], + "degreesOfFreedom": 5, + "expected": "success", + "fullyConstrained": false, + "id": "tangent-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": -2.220446049250313e-16, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Distance", + "constraintTypes": [ + "Distance" + ], + "degreesOfFreedom": 3, + "expected": "success", + "fullyConstrained": false, + "id": "distance-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "DistanceX", + "constraintTypes": [ + "DistanceX" + ], + "degreesOfFreedom": 3, + "expected": "success", + "fullyConstrained": false, + "id": "distance-x-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "DistanceY", + "constraintTypes": [ + "DistanceY" + ], + "degreesOfFreedom": 3, + "expected": "success", + "fullyConstrained": false, + "id": "distance-y-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Angle", + "constraintTypes": [ + "Angle" + ], + "degreesOfFreedom": 3, + "expected": "success", + "fullyConstrained": false, + "id": "angle-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Perpendicular", + "constraintTypes": [ + "Perpendicular" + ], + "degreesOfFreedom": 7, + "expected": "success", + "fullyConstrained": false, + "id": "perpendicular-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Radius", + "constraintTypes": [ + "Radius" + ], + "degreesOfFreedom": 2, + "expected": "success", + "fullyConstrained": false, + "id": "radius-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Equal", + "constraintTypes": [ + "Equal" + ], + "degreesOfFreedom": 7, + "expected": "success", + "fullyConstrained": false, + "id": "equal-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "PointOnObject", + "constraintTypes": [ + "PointOnObject" + ], + "degreesOfFreedom": 5, + "expected": "success", + "fullyConstrained": false, + "id": "point-on-object-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": -1.1102230246251565e-16, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Symmetric", + "constraintTypes": [ + "Symmetric" + ], + "degreesOfFreedom": 4, + "expected": "success", + "fullyConstrained": false, + "id": "symmetric-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 1.1102230246251565e-16, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "InternalAlignment", + "constraintTypes": [ + "InternalAlignment", + "InternalAlignment", + "InternalAlignment", + "InternalAlignment" + ], + "degreesOfFreedom": 5, + "expected": "success", + "fullyConstrained": false, + "id": "internal-alignment-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "SnellsLaw", + "constraintTypes": [ + "Coincident", + "PointOnObject", + "SnellsLaw" + ], + "degreesOfFreedom": 8, + "expected": "success", + "fullyConstrained": false, + "id": "snells-law-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Block", + "constraintTypes": [ + "Block" + ], + "degreesOfFreedom": 0, + "expected": "success", + "fullyConstrained": true, + "id": "block-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Diameter", + "constraintTypes": [ + "Diameter" + ], + "degreesOfFreedom": 2, + "expected": "success", + "fullyConstrained": false, + "id": "diameter-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + }, + { + "conflicting": [], + "constraintType": "Weight", + "constraintTypes": [ + "InternalAlignment", + "Weight", + "InternalAlignment", + "InternalAlignment", + "InternalAlignment", + "Equal", + "InternalAlignment", + "InternalAlignment" + ], + "degreesOfFreedom": 10, + "expected": "success", + "fullyConstrained": false, + "id": "weight-success", + "malformed": [], + "observed": "success", + "partiallyRedundant": [], + "redundant": [], + "residual": 0, + "solveStatus": 0 + } + ], + "summary": { + "classificationCases": 3, + "classificationPassed": 3, + "constraintTypes": 19, + "failureCases": 19, + "failurePassed": 19, + "successCases": 19, + "successPassed": 19 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-sketcher-editor-oracle.json b/config/freecad-sketcher-editor-oracle.json new file mode 100644 index 0000000..b668657 --- /dev/null +++ b/config/freecad-sketcher-editor-oracle.json @@ -0,0 +1,260 @@ +{ + "baselineId": "freecad-1.1.1-sketcher-editor-oracle", + "cases": [ + { + "before": { + "constraintTypes": [ + "Horizontal" + ], + "construction": [ + false + ], + "degreesOfFreedom": 3, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 5, + 0 + ], + "start": [ + 0, + 0 + ] + } + ] + }, + "final": { + "constraintTypes": [ + "Horizontal" + ], + "construction": [ + false + ], + "degreesOfFreedom": 3, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 8, + 2 + ], + "start": [ + 0, + 2 + ] + } + ] + }, + "id": "drag-horizontal", + "passed": true, + "solveStatus": 0 + }, + { + "final": { + "constraintTypes": [ + "Coincident" + ], + "construction": [ + true, + true + ], + "degreesOfFreedom": 6, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 4, + 0 + ], + "start": [ + 0, + 0 + ] + }, + { + "end": [ + 10, + 0 + ], + "start": [ + 4, + 0 + ] + } + ] + }, + "id": "split-line", + "passed": true + }, + { + "final": { + "constraintTypes": [], + "construction": [ + false + ], + "degreesOfFreedom": 4, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 15, + 0 + ], + "start": [ + 0, + 0 + ] + } + ] + }, + "id": "extend-line", + "passed": true + }, + { + "final": { + "constraintTypes": [ + "PointOnObject" + ], + "construction": [ + false, + false + ], + "degreesOfFreedom": 7, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 7, + 0 + ], + "start": [ + 0, + 0 + ] + }, + { + "end": [ + 7, + 2 + ], + "start": [ + 7, + -2 + ] + } + ] + }, + "id": "trim-at-intersection", + "passed": true + }, + { + "final": { + "constraintTypes": [], + "construction": [ + true + ], + "degreesOfFreedom": 4, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 1, + 0 + ], + "start": [ + 0, + 0 + ] + } + ] + }, + "id": "toggle-construction", + "passed": true + }, + { + "committedEnd": [ + 8, + 0 + ], + "final": { + "constraintTypes": [], + "construction": [ + false + ], + "degreesOfFreedom": 4, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 8, + 0 + ], + "start": [ + 0, + 0 + ] + } + ] + }, + "id": "transaction-undo-redo", + "passed": true, + "redoneEnd": [ + 8, + 0 + ], + "undoneEnd": [ + 5, + 0 + ] + }, + { + "final": { + "constraintTypes": [ + "Coincident", + "Horizontal" + ], + "construction": [ + false, + false + ], + "degreesOfFreedom": 5, + "fullyConstrained": false, + "geometry": [ + { + "end": [ + 5, + 0 + ], + "start": [ + 0, + 0 + ] + }, + { + "end": [ + 5, + 4 + ], + "start": [ + 5, + 0 + ] + } + ] + }, + "id": "auto-constraint", + "passed": true, + "solveStatus": 0 + } + ], + "freecadVersion": "1.1.1", + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "schemaVersion": 1, + "status": "pass", + "summary": { + "cases": 7, + "passed": 7 + }, + "tolerance": 1e-7 +} diff --git a/config/freecad-source-inventory.json b/config/freecad-source-inventory.json new file mode 100644 index 0000000..26c6220 --- /dev/null +++ b/config/freecad-source-inventory.json @@ -0,0 +1,839 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "sourcePath": ".cache/freecad/FreeCAD" + }, + "generatedBy": "scripts/generate-freecad-source-inventory.mjs", + "moduleCount": 34, + "modules": [ + { + "name": "AddonManager", + "sourcePath": "src/Mod/AddonManager", + "cmakeOption": "BUILD_ADDONMGR", + "cmakeDefault": true, + "hasCMake": false, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 0, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Assembly", + "sourcePath": "src/Mod/Assembly", + "cmakeOption": "BUILD_ASSEMBLY", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 24, + "commandIds": [ + "Assembly_ActivateAssembly", + "Assembly_CreateAssembly", + "Assembly_CreateBom", + "Assembly_CreateJointAngle", + "Assembly_CreateJointBall", + "Assembly_CreateJointBelt", + "Assembly_CreateJointCylindrical", + "Assembly_CreateJointDistance", + "Assembly_CreateJointFixed", + "Assembly_CreateJointGearBelt", + "Assembly_CreateJointGears", + "Assembly_CreateJointParallel", + "Assembly_CreateJointPerpendicular", + "Assembly_CreateJointRackPinion", + "Assembly_CreateJointRevolute", + "Assembly_CreateJointScrew", + "Assembly_CreateJointSlider", + "Assembly_CreateSimulation", + "Assembly_CreateView", + "Assembly_ExportASMT", + "Assembly_Insert", + "Assembly_InsertLink", + "Assembly_InsertNewPart", + "Assembly_SolveAssembly", + "Assembly_ToggleGrounded" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "BIM", + "sourcePath": "src/Mod/BIM", + "cmakeOption": "BUILD_BIM", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 206, + "commandIds": [ + "Arch_Add", + "Arch_Axis", + "Arch_AxisSystem", + "Arch_AxisTools", + "Arch_Building", + "Arch_Check", + "Arch_CloneComponent", + "Arch_CloseHoles", + "Arch_Component", + "Arch_CurtainWall", + "Arch_CutPlane", + "Arch_Equipment", + "Arch_Fence", + "Arch_Floor", + "Arch_Frame", + "Arch_Grid", + "Arch_IfcSpreadsheet", + "Arch_Level", + "Arch_Material", + "Arch_MaterialTools", + "Arch_MergeWalls", + "Arch_MeshToShape", + "Arch_MultiMaterial", + "Arch_Nest", + "Arch_Panel", + "Arch_PanelTools", + "Arch_Panel_Cut", + "Arch_Panel_Sheet", + "Arch_Pipe", + "Arch_PipeConnector", + "Arch_PipeTools", + "Arch_Profile", + "Arch_Rebar", + "Arch_RebarTools", + "Arch_Reference", + "Arch_Remove", + "Arch_RemoveShape", + "Arch_Roof", + "Arch_Schedule", + "Arch_SectionPlane", + "Arch_SelectNonSolidMeshes", + "Arch_Site", + "Arch_Space", + "Arch_SplitMesh", + "Arch_Stairs", + "Arch_StructuralSystem", + "Arch_Structure", + "Arch_StructureTools", + "Arch_StructuresFromSelection", + "Arch_Survey", + "Arch_ToggleIfcBrepFlag", + "Arch_ToggleSubs", + "Arch_Truss", + "Arch_Wall", + "Arch_Window", + "BIM_Background", + "BIM_Beam", + "BIM_Box", + "BIM_Builder", + "BIM_Classification", + "BIM_Clone", + "BIM_Column", + "BIM_Common", + "BIM_Compound", + "BIM_Convert", + "BIM_Copy", + "BIM_Create2DViews", + "BIM_Cut", + "BIM_Diff", + "BIM_DimensionAligned", + "BIM_DimensionHorizontal", + "BIM_DimensionVertical", + "BIM_Door", + "BIM_DrawingView", + "BIM_EmptyTrash", + "BIM_Examples", + "BIM_Extrude", + "BIM_Fuse", + "BIM_GenericTools", + "BIM_Glue", + "BIM_Help", + "BIM_IfcElements", + "BIM_IfcExplorer", + "BIM_IfcProperties", + "BIM_IfcQuantities", + "BIM_ImagePlane", + "BIM_Layers", + "BIM_Leader", + "BIM_Library", + "BIM_Material", + "BIM_MoveView", + "BIM_Nudge_Down", + "BIM_Nudge_Extend", + "BIM_Nudge_Left", + "BIM_Nudge_Right", + "BIM_Nudge_RotateLeft", + "BIM_Nudge_RotateRight", + "BIM_Nudge_Shrink", + "BIM_Nudge_Switch", + "BIM_Nudge_Up", + "BIM_Offset2D", + "BIM_Preflight", + "BIM_Project", + "BIM_ProjectManager", + "BIM_Reextrude", + "BIM_Reorder", + "BIM_ResetCloneColors", + "BIM_Rewire", + "BIM_SetWPFront", + "BIM_SetWPSide", + "BIM_SetWPTop", + "BIM_Setup", + "BIM_Shape2DCut", + "BIM_Shape2DView", + "BIM_SimpleCopy", + "BIM_Sketch", + "BIM_Slab", + "BIM_TDPage", + "BIM_TDView", + "BIM_Text", + "BIM_TogglePanels", + "BIM_Trash", + "BIM_Tutorial", + "BIM_Unclone", + "BIM_Ungroup", + "BIM_Views", + "BIM_WPView", + "BIM_Welcome", + "BIM_Windows", + "IFC_ConvertDocument", + "IFC_Diff", + "IFC_Expand", + "IFC_MakeProject", + "IFC_Save", + "IFC_SaveAs", + "IFC_UpdateIOS" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "CAM", + "sourcePath": "src/Mod/CAM", + "cmakeOption": "BUILD_CAM", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 363, + "commandIds": [ + "CAM_%s", + "CAM_3dTools", + "CAM_Array", + "CAM_Camotics", + "CAM_Comment", + "CAM_Copy", + "CAM_DressupArray", + "CAM_DressupAxisMap", + "CAM_DressupDogbone", + "CAM_DressupDragKnife", + "CAM_DressupLeadInOut", + "CAM_DressupPathBoundary", + "CAM_DressupRampEntry", + "CAM_DressupTag", + "CAM_DressupTools", + "CAM_DressupZCorrect", + "CAM_DrillingTools", + "CAM_EngraveTools", + "CAM_ExportTemplate", + "CAM_Fixture", + "CAM_Inspect", + "CAM_Job", + "CAM_OpActiveToggle", + "CAM_OperationCopy", + "CAM_PathShapeTC", + "CAM_Post", + "CAM_PropertyBag", + "CAM_Sanity", + "CAM_SelectLoop", + "CAM_SetStartPoint", + "CAM_SimTools", + "CAM_SimpleCopy", + "CAM_Simulator", + "CAM_SimulatorGL", + "CAM_Stop", + "CAM_ToolBitCreate", + "CAM_ToolBitDock", + "CAM_ToolBitLibraryOpen", + "CAM_ToolBitLoad", + "CAM_ToolBitSave", + "CAM_ToolBitSaveAs", + "CAM_ToolController" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Cloud", + "sourcePath": "src/Mod/Cloud", + "cmakeOption": "BUILD_CLOUD", + "cmakeDefault": false, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 2, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Draft", + "sourcePath": "src/Mod/Draft", + "cmakeOption": "BUILD_DRAFT", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": false, + "pythonFileCount": 238, + "commandIds": [ + "Draft_AddConstruction", + "Draft_AddNamedGroup", + "Draft_AddToGroup", + "Draft_AddToLayer", + "Draft_AnnotationStyleEditor", + "Draft_ApplyStyle", + "Draft_Arc", + "Draft_ArcTools", + "Draft_Arc_3Points", + "Draft_ArrayTools", + "Draft_AutoGroup", + "Draft_BSpline", + "Draft_BezCurve", + "Draft_BezierTools", + "Draft_Circle", + "Draft_CircularArray", + "Draft_Clone", + "Draft_CubicBezCurve", + "Draft_Dimension", + "Draft_Downgrade", + "Draft_Draft2Sketch", + "Draft_Edit", + "Draft_Ellipse", + "Draft_Facebinder", + "Draft_Fillet", + "Draft_FlipDimension", + "Draft_Hatch", + "Draft_Heal", + "Draft_Hyperlink", + "Draft_Join", + "Draft_Label", + "Draft_Layer", + "Draft_LayerManager", + "Draft_Line", + "Draft_Mirror", + "Draft_Move", + "Draft_Offset", + "Draft_OrthoArray", + "Draft_PathArray", + "Draft_PathLinkArray", + "Draft_PathTwistedArray", + "Draft_PathTwistedLinkArray", + "Draft_Point", + "Draft_PointArray", + "Draft_PointLinkArray", + "Draft_PolarArray", + "Draft_Polygon", + "Draft_Rectangle", + "Draft_Rotate", + "Draft_Scale", + "Draft_SelectGroup", + "Draft_SelectPlane", + "Draft_SetStyle", + "Draft_Shape2DView", + "Draft_ShapeString", + "Draft_ShowSnapBar", + "Draft_Slope", + "Draft_Snap_Angle", + "Draft_Snap_Center", + "Draft_Snap_Dimensions", + "Draft_Snap_Endpoint", + "Draft_Snap_Extension", + "Draft_Snap_Grid", + "Draft_Snap_Intersection", + "Draft_Snap_Lock", + "Draft_Snap_Midpoint", + "Draft_Snap_Near", + "Draft_Snap_Ortho", + "Draft_Snap_Parallel", + "Draft_Snap_Perpendicular", + "Draft_Snap_Special", + "Draft_Snap_WorkingPlane", + "Draft_Split", + "Draft_Stretch", + "Draft_SubelementHighlight", + "Draft_Text", + "Draft_ToggleConstructionMode", + "Draft_ToggleDisplayMode", + "Draft_ToggleGrid", + "Draft_Trimex", + "Draft_Upgrade", + "Draft_Wire", + "Draft_WireToBSpline", + "Draft_WorkingPlaneProxy" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Fem", + "sourcePath": "src/Mod/Fem", + "cmakeOption": "BUILD_FEM", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 390, + "commandIds": [ + "FEM_Analysis", + "FEM_ClippingPlaneAdd", + "FEM_ClippingPlaneRemoveAll", + "FEM_ConstantVacuumPermittivity", + "FEM_ConstraintBodyHeatSource", + "FEM_ConstraintCentrif", + "FEM_ConstraintCurrentDensity", + "FEM_ConstraintElectricChargeDensity", + "FEM_ConstraintElectrostaticPotential", + "FEM_ConstraintFlowVelocity", + "FEM_ConstraintInitialFlowVelocity", + "FEM_ConstraintInitialPressure", + "FEM_ConstraintMagnetization", + "FEM_ConstraintSectionPrint", + "FEM_ConstraintSelfWeight", + "FEM_ConstraintTie", + "FEM_ElementFluid1D", + "FEM_ElementGeometry1D", + "FEM_ElementGeometry2D", + "FEM_ElementRotation1D", + "FEM_EquationDeformation", + "FEM_EquationElasticity", + "FEM_EquationElectricforce", + "FEM_EquationElectrostatic", + "FEM_EquationFlow", + "FEM_EquationFlux", + "FEM_EquationHeat", + "FEM_EquationMagnetodynamic", + "FEM_EquationMagnetodynamic2D", + "FEM_EquationStaticCurrent", + "FEM_Examples", + "FEM_FEMMesh2Mesh", + "FEM_MaterialEditor", + "FEM_MaterialFluid", + "FEM_MaterialMechanicalNonlinear", + "FEM_MaterialReinforced", + "FEM_MaterialSolid", + "FEM_MeshBoundaryLayer", + "FEM_MeshClear", + "FEM_MeshDisplayInfo", + "FEM_MeshGmshFromShape", + "FEM_MeshGroup", + "FEM_MeshNetgenFromShape", + "FEM_MeshRegion", + "FEM_PostFilterGlyph", + "FEM_PostVisualization", + "FEM_ResultShow", + "FEM_ResultsPurge", + "FEM_SolverCalculiX", + "FEM_SolverCalculiXCcxTools", + "FEM_SolverControl", + "FEM_SolverElmer", + "FEM_SolverMystran", + "FEM_SolverRun", + "FEM_SolverZ88" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Help", + "sourcePath": "src/Mod/Help", + "cmakeOption": "BUILD_HELP", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 2, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Idf", + "sourcePath": "src/Mod/Idf", + "cmakeOption": "BUILD_IDF", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 2, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Import", + "sourcePath": "src/Mod/Import", + "cmakeOption": "BUILD_IMPORT", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 24, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Inspection", + "sourcePath": "src/Mod/Inspection", + "cmakeOption": "BUILD_INSPECTION", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 2, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "JtReader", + "sourcePath": "src/Mod/JtReader", + "cmakeOption": "BUILD_JTREADER", + "cmakeDefault": false, + "hasCMake": true, + "hasApp": true, + "hasGui": false, + "pythonFileCount": 2, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Material", + "sourcePath": "src/Mod/Material", + "cmakeOption": "BUILD_MATERIAL", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 18, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Measure", + "sourcePath": "src/Mod/Measure", + "cmakeOption": "BUILD_MEASURE", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 4, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Mesh", + "sourcePath": "src/Mod/Mesh", + "cmakeOption": "BUILD_MESH", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 5, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "MeshPart", + "sourcePath": "src/Mod/MeshPart", + "cmakeOption": "BUILD_MESH_PART", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 3, + "commandIds": [ + "MeshPart_CreateFlatFace", + "MeshPart_CreateFlatMesh" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "OpenSCAD", + "sourcePath": "src/Mod/OpenSCAD", + "cmakeOption": "BUILD_OPENSCAD", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 21, + "commandIds": [ + "OpenSCAD_AddOpenSCADElement", + "OpenSCAD_ColorCodeShape", + "OpenSCAD_Edgestofaces", + "OpenSCAD_ExpandPlacements", + "OpenSCAD_ExplodeGroup", + "OpenSCAD_Hull", + "OpenSCAD_IncreaseToleranceFeature", + "OpenSCAD_MeshBoolean", + "OpenSCAD_Minkowski", + "OpenSCAD_MirrorMeshFeature", + "OpenSCAD_RefineShapeFeature", + "OpenSCAD_RemoveSubtree", + "OpenSCAD_ReplaceObject", + "OpenSCAD_ResizeMeshFeature", + "OpenSCAD_ScaleMeshFeature" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Part", + "sourcePath": "src/Mod/Part", + "cmakeOption": "BUILD_PART", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 42, + "commandIds": [ + "Part_BooleanFragments", + "Part_CompoundFilter", + "Part_EditAttachment", + "Part_ExplodeCompound", + "Part_JoinConnect", + "Part_JoinCutout", + "Part_JoinEmbed", + "Part_Slice", + "Part_SliceApart", + "Part_ToleranceSet", + "Part_Tube", + "Part_XOR" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "PartDesign", + "sourcePath": "src/Mod/PartDesign", + "cmakeOption": "BUILD_PART_DESIGN", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 55, + "commandIds": [ + "PartDesign_InvoluteGear", + "PartDesign_Sprocket", + "PartDesign_WizardShaft", + "PartDesign_WizardShaftCallBack" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Plot", + "sourcePath": "src/Mod/Plot", + "cmakeOption": "BUILD_PLOT", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 1, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Points", + "sourcePath": "src/Mod/Points", + "cmakeOption": "BUILD_POINTS", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 4, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "ReverseEngineering", + "sourcePath": "src/Mod/ReverseEngineering", + "cmakeOption": "BUILD_REVERSEENGINEERING", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 2, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Robot", + "sourcePath": "src/Mod/Robot", + "cmakeOption": "BUILD_ROBOT", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 6, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Sandbox", + "sourcePath": "src/Mod/Sandbox", + "cmakeOption": "BUILD_SANDBOX", + "cmakeDefault": false, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 3, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Show", + "sourcePath": "src/Mod/Show", + "cmakeOption": "BUILD_SHOW", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 15, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Sketcher", + "sourcePath": "src/Mod/Sketcher", + "cmakeOption": "BUILD_SKETCHER", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 15, + "commandIds": [ + "Sketcher_ProfilesHexagon1" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Spreadsheet", + "sourcePath": "src/Mod/Spreadsheet", + "cmakeOption": "BUILD_SPREADSHEET", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 6, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Start", + "sourcePath": "src/Mod/Start", + "cmakeOption": "BUILD_START", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 3, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Surface", + "sourcePath": "src/Mod/Surface", + "cmakeOption": "BUILD_SURFACE", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 5, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "TechDraw", + "sourcePath": "src/Mod/TechDraw", + "cmakeOption": "BUILD_TECHDRAW", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": true, + "pythonFileCount": 36, + "commandIds": [ + "TechDraw_AxoLengthDimension", + "TechDraw_CommandAddOffsetVertex", + "TechDraw_CommandVertexCreationGroup", + "TechDraw_ExtensionPositionSectionView", + "TechDraw_FillTemplateFields", + "TechDraw_HoleShaftFit", + "TechDraw_MoveView", + "TechDraw_ShareView" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "TemplatePyMod", + "sourcePath": "src/Mod/TemplatePyMod", + "cmakeOption": "BUILD_TEMPLATEPYMOD", + "cmakeDefault": null, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 13, + "commandIds": [ + "TemplatePyCheckable", + "TemplatePyGroup", + "TemplatePyGrp_1", + "TemplatePyGrp_2", + "TemplatePyGrp_3", + "TemplatePyMod_Cmd1", + "TemplatePyMod_Cmd2", + "TemplatePyMod_Cmd3", + "TemplatePyMod_Cmd4", + "TemplatePyMod_Cmd5", + "TemplatePyMod_Cmd6" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Test", + "sourcePath": "src/Mod/Test", + "cmakeOption": "BUILD_TEST", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": true, + "pythonFileCount": 22, + "commandIds": [ + "Test_InsertFeature", + "Test_Test", + "Test_TestAll", + "Test_TestAllText", + "Test_TestBase", + "Test_TestBaseText", + "Test_TestCreateMenu", + "Test_TestDeleteMenu", + "Test_TestDoc", + "Test_TestDocText", + "Test_TestWork" + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Tux", + "sourcePath": "src/Mod/Tux", + "cmakeOption": "BUILD_TUX", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": false, + "hasGui": false, + "pythonFileCount": 4, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Web", + "sourcePath": "src/Mod/Web", + "cmakeOption": "BUILD_WEB", + "cmakeDefault": true, + "hasCMake": true, + "hasApp": true, + "hasGui": false, + "pythonFileCount": 1, + "commandIds": [], + "runtimeStatus": "requires-freecad-reference-probe" + } + ] +} diff --git a/config/freecad-type-property-inventory.json b/config/freecad-type-property-inventory.json new file mode 100644 index 0000000..ca94d52 --- /dev/null +++ b/config/freecad-type-property-inventory.json @@ -0,0 +1,31395 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "sourcePath": ".cache/freecad/FreeCAD" + }, + "generatedBy": "scripts/generate-freecad-type-property-inventory.mjs", + "moduleCount": 34, + "totals": { + "sourceFileCount": 4308, + "objectSourceCount": 1673, + "propertyRegistrationCount": 1077, + "propertyMemberCount": 1247, + "pythonPropertyCount": 1688 + }, + "modules": [ + { + "name": "AddonManager", + "sourcePath": "src/Mod/AddonManager", + "sourceFileCount": 0, + "objectSourceCount": 0, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Assembly", + "sourcePath": "src/Mod/Assembly", + "sourceFileCount": 71, + "objectSourceCount": 25, + "propertyRegistrationCount": 6, + "propertyMemberCount": 6, + "pythonPropertyCount": 38, + "objects": [ + { + "sourceFile": "src/Mod/Assembly/App/AppAssemblyPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/AssemblyLink.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "LinkedObject", + "Rigid" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/AssemblyLink.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyXLink", + "name": "LinkedObject" + }, + { + "type": "PropertyBool", + "name": "Rigid" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/AssemblyObject.cpp", + "classes": [], + "typeIdSymbols": [ + "AssemblyLink", + "GeoFeature", + "Link", + "LocalCoordinateSystem", + "T", + "ViewGroup" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/AssemblyObject.h", + "classes": [ + "MbDPartData", + "ObjRef" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/AssemblyUtils.cpp", + "classes": [], + "typeIdSymbols": [ + "JointGroup" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/AssemblyUtils.h", + "classes": [ + "DistanceType", + "GeometryType", + "JointType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/BomObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "columnsNames", + "detailParts", + "detailSubAssemblies", + "onlyParts" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/App/BomObject.h", + "classes": [ + "BomDataElement" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyStringList", + "name": "columnsNames" + }, + { + "type": "PropertyBool", + "name": "detailSubAssemblies" + }, + { + "type": "PropertyBool", + "name": "detailParts" + }, + { + "type": "PropertyBool", + "name": "onlyParts" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandCreateAssembly.py", + "classes": [ + "ActivateAssemblyTaskPanel", + "CommandActivateAssembly", + "CommandCreateAssembly" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandCreateBom.py", + "classes": [ + "CommandCreateBom" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandCreateJoint.py", + "classes": [ + "CommandCreateJointAngle", + "CommandCreateJointBall", + "CommandCreateJointBelt", + "CommandCreateJointCylindrical", + "CommandCreateJointDistance", + "CommandCreateJointFixed", + "CommandCreateJointGears", + "CommandCreateJointParallel", + "CommandCreateJointPerpendicular", + "CommandCreateJointRackPinion", + "CommandCreateJointRevolute", + "CommandCreateJointScrew", + "CommandCreateJointSlider", + "CommandGroupGearBelt", + "CommandToggleGrounded" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandCreateSimulation.py", + "classes": [ + "CommandCreateSimulation", + "Motion", + "MotionEditDialog", + "Simulation", + "ViewProviderMotion", + "ViewProviderSimulation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyTime\"", + "name": "aTimeStart" + }, + { + "typeExpression": "\"App::PropertyTime\"", + "name": "bTimeEnd" + }, + { + "typeExpression": "\"App::PropertyTime\"", + "name": "cTimeStepOutput" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "fGlobalErrorTolerance" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "jFramesPerSecond" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Decimals" + }, + { + "typeExpression": "\"App::PropertyXLinkSubHidden\"", + "name": "Joint" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Formula" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "MotionType" + } + ] + }, + { + "sourceFile": "src/Mod/Assembly/CommandCreateView.py", + "classes": [ + "CommandCreateView", + "ExplodedView", + "ExplodedViewSelGate", + "ExplodedViewStep", + "ViewProviderExplodedView", + "ViewProviderExplodedViewStep" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyXLinkSubHidden\"", + "name": "References" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "MovementTransform" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "MoveType" + }, + { + "typeExpression": "\"App::PropertyXLinkSubHidden\"", + "name": "References" + } + ] + }, + { + "sourceFile": "src/Mod/Assembly/CommandExportASMT.py", + "classes": [ + "CommandExportASMT" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandInsertLink.py", + "classes": [ + "CommandGroupInsert", + "CommandInsertLink", + "InsertLinkObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandInsertNewPart.py", + "classes": [ + "CommandInsertNewPart" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/CommandSolveAssembly.py", + "classes": [ + "CommandSolveAssembly" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/Gui/TaskAssemblyMessages.h", + "classes": [ + "TaskAssemblyMessages" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/Gui/ViewProviderAssembly.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/Gui/ViewProviderAssembly.h", + "classes": [ + "ComponentState", + "DragMode", + "IsolateMode", + "MovingObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/InitGui.py", + "classes": [ + "AssemblyActivateWatcher", + "AssemblyBaseWatcher", + "AssemblyCommandGroup", + "AssemblyCreateWatcher" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Assembly/JointObject.py", + "classes": [ + "GroundedJoint", + "Joint", + "MakeJointSelGate", + "ViewProviderGroundedJoint", + "ViewProviderJoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "JointType" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement1" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Detach1" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Offset1" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement2" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Detach2" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Offset2" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EnableLengthMin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EnableLengthMax" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EnableAngleMin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EnableAngleMax" + }, + { + "typeExpression": "\"App::PropertyXLinkSub\"", + "name": "Reference1" + }, + { + "typeExpression": "\"App::PropertyXLinkSub\"", + "name": "Reference2" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Distance" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Distance2" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "LengthMin" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "LengthMax" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "AngleMin" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "AngleMax" + }, + { + "typeExpression": "\"App::PropertyXLinkSub\"", + "name": "Object1" + }, + { + "typeExpression": "\"App::PropertyXLinkSub\"", + "name": "Object2" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Offset1" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Offset2" + }, + { + "typeExpression": "\"App::PropertyLinkGlobal\"", + "name": "ObjectToGround" + } + ] + }, + { + "sourceFile": "src/Mod/Assembly/Preferences.py", + "classes": [ + "PreferencesPage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "BIM", + "sourcePath": "src/Mod/BIM", + "sourceFileCount": 206, + "objectSourceCount": 128, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 563, + "objects": [ + { + "sourceFile": "src/Mod/BIM/Arch.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "BuildingType" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "BuildingType" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchAxis.py", + "classes": [ + "_Axis", + "_AxisTaskPanel", + "_ViewProviderAxis" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Distances" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Angles" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Labels" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CustomNumber" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Limit" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "BubbleSize" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "NumberingStyle" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "DrawStyle" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "BubblePosition" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineWidth" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "LineColor" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "StartNumber" + }, + { + "typeExpression": "\"App::PropertyFont\"", + "name": "FontName" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FontSize" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowLabel" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "LabelOffset" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchAxisSystem.py", + "classes": [ + "AxisSystemTaskPanel", + "_AxisSystem", + "_ViewProviderAxisSystem" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Axes" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchBuilding.py", + "classes": [ + "_CommandBuilding" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "BuildingType" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchBuildingPart.py", + "classes": [ + "ViewProviderBuildingPart" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "HeightPropagate" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "LevelOffset" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Description" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Tag" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + }, + { + "typeExpression": "\"App::PropertyFileIncluded\"", + "name": "SavedInventor" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OnlySolids" + }, + { + "typeExpression": "\"App::PropertyMap\"", + "name": "MaterialsTable" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineWidth" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "OverrideUnit" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "DisplayOffset" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowLevel" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowUnit" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OriginOffset" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowLabel" + }, + { + "typeExpression": "\"App::PropertyFont\"", + "name": "FontName" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FontSize" + }, + { + "typeExpression": "\"App::PropertyColorList\"", + "name": "DiffuseColor" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SetWorkingPlane" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutoWorkingPlane" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "ViewData" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RestoreView" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DoubleClickActivates" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SaveInventor" + }, + { + "typeExpression": "\"App::PropertyFileIncluded\"", + "name": "SavedInventor" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ChildrenOverride" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "ChildrenLineWidth" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "ChildrenLineColor" + }, + { + "typeExpression": "\"App::PropertyMaterialList\"", + "name": "ChildrenShapeAppearance" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "ChildrenTransparency" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CutView" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "CutMargin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutoCutView" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "AutogroupSize" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutogroupBox" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutogroupAutosize" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "AutogroupMargin" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchCommands.py", + "classes": [ + "SurveyTaskPanel", + "_SurveyObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/ArchComponent.py", + "classes": [ + "ArchSelectionObserver", + "AreaCalculator", + "ComponentTaskPanel", + "SelectionTaskPanel", + "ViewProviderComponent" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "CloneOf" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Additions" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Subtractions" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Description" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Tag" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "StandardCode" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Material" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MoveBase" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MoveWithHost" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "VerticalArea" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "HorizontalArea" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "PerimeterLength" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "HiRes" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Axis" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseMaterialColor" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchCurtainWall.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Host" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "VerticalMullionNumber" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VerticalMullionAlignment" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "VerticalSections" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "VerticalMullionHeight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "VerticalMullionWidth" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "VerticalMullionProfile" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "HorizontalMullionNumber" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "HorizontalMullionAlignment" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "HorizontalSections" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HorizontalMullionHeight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HorizontalMullionWidth" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "HorizontalMullionProfile" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "DiagonalMullionNumber" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DiagonalMullionSize" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "DiagonalMullionProfile" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "PanelNumber" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "PanelThickness" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SwapHorizontalVertical" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Refine" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CenterProfiles" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "VerticalDirection" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "OverrideEdges" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchEquipment.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Model" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "ProductURL" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "StandardCode" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "SnapPoints" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "EquipmentPower" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchFence.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Section" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Post" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Path" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberOfSections" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberOfPosts" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseOriginalColors" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchFloor.py", + "classes": [ + "_CommandFloor", + "_ViewProviderFloor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchFrame.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Profile" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Align" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "BasePoint" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "ProfilePlacement" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Rotation" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Edges" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchGrid.py", + "classes": [ + "ArchGrid", + "ArchGridTaskPanel", + "ViewProviderArchGrid" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Rows" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Columns" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "RowSize" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "ColumnSize" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Spans" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "PointsOutput" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "AutoWidth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "AutoHeight" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Reorient" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "HiddenFaces" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchIFC.py", + "classes": [ + "IfcRoot" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyMap\"", + "name": "IfcData" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "IfcType" + }, + { + "typeExpression": "\"App::PropertyMap\"", + "name": "IfcProperties" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchIFCView.py", + "classes": [ + "IfcContextUI", + "IfcContextView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/ArchMaterial.py", + "classes": [ + "_ArchMaterial", + "_ArchMaterialContainer", + "_ArchMaterialTaskPanel", + "_ArchMultiMaterial", + "_ArchMultiMaterialTaskPanel", + "_ViewProviderArchMaterial", + "_ViewProviderArchMaterialContainer", + "_ViewProviderArchMultiMaterial" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Description" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "StandardCode" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "ProductURL" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "Transparency" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "Color" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "SectionColor" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Description" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Names" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Materials" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Thicknesses" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchNesting.py", + "classes": [ + "Nester" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/ArchPanel.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Thickness" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Sheets" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WaveLength" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WaveHeight" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "WaveOffset" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "WaveDirection" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "WaveType" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "WaveBottom" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FaceMaker" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Normal" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Source" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "TagText" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TagSize" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "TagPosition" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "TagRotation" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "FontFile" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "AllowedAngles" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "CutOffset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Margin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowMargin" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Group" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "TagText" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TagSize" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "TagPosition" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "TagRotation" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "FontFile" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "FillRatio" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "GrainDirection" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Scale" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Rotations" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Margin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowMargin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowGrain" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchPipe.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Diameter" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Profile" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "OffsetStart" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "OffsetEnd" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WallThickness" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ProfileType" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Pipes" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ConnectorType" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchPrecast.py", + "classes": [ + "_DentsTaskPanel", + "_PrecastTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Nodes" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Chamfer" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DentLength" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DentHeight" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Dents" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Chamfer" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "BeamBase" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Chamfer" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "GrooveDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "GrooveHeight" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "GrooveSpacing" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "GrooveNumber" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Dents" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Chamfer" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DentWidth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DentHeight" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SlabType" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "SlabBase" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "HoleNumber" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "HoleMajor" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "HoleMinor" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "HoleSpacing" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DownLength" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "RiserNumber" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Riser" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Tread" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchProfile.py", + "classes": [ + "ProfileTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "OutDiameter" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Thickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WebThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FlangeThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Thickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WebThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FlangeThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Thickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WebThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FlangeThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Size" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "SlotSize" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "WallThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TnutSlotWidth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TnutSlotDepth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "CoreSize" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HoleDiameter" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FilletRadius" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchRebar.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Diameter" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetStart" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetEnd" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Amount" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Spacing" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Distance" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Direction" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Rounding" + }, + { + "typeExpression": "\"App::PropertyPlacementList\"", + "name": "PlacementList" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Host" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CustomSpacing" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "TotalLength" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Mark" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "RebarShape" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchReference.py", + "classes": [ + "ArchReference", + "ArchReferenceTaskPanel", + "ViewProviderArchReference" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFile\"", + "name": "File" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Part" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ReferenceMode" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FuseArch" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "TimeStamp" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UpdateColors" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchRoof.py", + "classes": [ + "_RoofTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Angles" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Runs" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "IdRel" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Thickness" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Overhang" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Heights" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Face" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RidgeLength" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "BorderLength" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Flip" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Subvolume" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchSchedule.py", + "classes": [ + "ArchScheduleTaskPanel", + "_ArchSchedule", + "_ArchScheduleDocObserver", + "_ViewProviderArchSchedule" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Operation" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Value" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Unit" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Filter" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CreateSpreadsheet" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DetailedResults" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutoUpdate" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Schedule" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchSectionPlane.py", + "classes": [ + "SectionPlaneTaskPanel", + "_SectionPlane", + "_ViewProviderSectionPlane" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OnlySolids" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Clip" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseMaterialColorForFill" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Depth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DisplayLength" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DisplayHeight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ArrowSize" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "Transparency" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineWidth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "CutDistance" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "LineColor" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CutView" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "CutMargin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowLabel" + }, + { + "typeExpression": "\"App::PropertyFont\"", + "name": "FontName" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FontSize" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchSite.py", + "classes": [ + "_ViewProviderSite" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Terrain" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Address" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PostalCode" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "City" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Region" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Country" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Latitude" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Longitude" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Declination" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Elevation" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Url" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Additions" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Subtractions" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "ProjectedArea" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Perimeter" + }, + { + "typeExpression": "\"App::PropertyVolume\"", + "name": "AdditionVolume" + }, + { + "typeExpression": "\"App::PropertyVolume\"", + "name": "SubtractionVolume" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "ExtrusionVector" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RemoveSplitter" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "OriginOffset" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "IfcType" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "TimeZone" + }, + { + "typeExpression": "\"App::PropertyFileIncluded\"", + "name": "EPWFile" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "SunRay" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "WindRose" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SolarDiagram" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "SolarDiagramScale" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "SolarDiagramPosition" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "SolarDiagramColor" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Orientation" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Compass" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "CompassRotation" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "CompassPosition" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UpdateDeclination" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowSunPosition" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "SunDateMonth" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "SunDateDay" + }, + { + "typeExpression": "\"App::PropertyFloatConstraint\"", + "name": "SunTimeHour" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowHourLabels" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Altitude" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Azimuth" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Time" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchSketchObject.py", + "classes": [ + "ArchSketchObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Hosts" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchSpace.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkSubList\"", + "name": "Boundaries" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "FinishFloor" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "FinishWalls" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "FinishCeiling" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Group" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SpaceType" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FloorThickness" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberOfPeople" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LightingPower" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "EquipmentPower" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutoPower" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Conditioning" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Internal" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AreaCalculationType" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Text" + }, + { + "typeExpression": "\"App::PropertyFont\"", + "name": "FontName" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "TextColor" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FontSize" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FirstLine" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineSpacing" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "TextPosition" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "TextAlign" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Decimals" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowUnit" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchStairs.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Align" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "WidthOfLanding" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberOfSteps" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TreadDepth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RiserHeight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Nosing" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TreadThickness" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "BlondelRatio" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "BlondelRatio" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RiserThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "LandingDepth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TreadDepthEnforce" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RiserHeightEnforce" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Flight" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "LastSegment" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "AbsTop" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineLeft" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineRight" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineRailArcLeft" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineRailArcRight" + }, + { + "typeExpression": "\"App::PropertyLinkHidden\"", + "name": "RailingLeft" + }, + { + "typeExpression": "\"App::PropertyLinkHidden\"", + "name": "RailingRight" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineLeftAll" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineRightAll" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineRailArcLeftAll" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "OutlineRailArcRightAll" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RailingHeightLeft" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RailingHeightRight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RailingOffsetLeft" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RailingOffsetRight" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Landings" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Winders" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Structure" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StructureThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StringerWidth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StructureOffset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StringerOverlap" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DownSlabThickness" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "UpSlabThickness" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ConnectionDownStartStairs" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ConnectionEndStairsUp" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ArchSketchData" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "ArchSketchEdges" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArchSketchPropertySet" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StringerOverlap" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchStructure.py", + "classes": [ + "CommandStructuralSystem", + "CommandStructuresFromSelection", + "StructSelectionObserver", + "_ArchStructureGroupCommand", + "_CommandStructure" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkSubList\"", + "name": "Tool" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ComputedLength" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ToolOffsetFirst" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ToolOffsetLast" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "BasePerpendicularToTool" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "BaseOffsetX" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "BaseOffsetY" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "BaseMirror" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "BaseRotation" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Normal" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Nodes" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Profile" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "NodesOffset" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FaceMaker" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ArchSketchData" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "ArchSketchEdges" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "ArchSketchEdges" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArchSketchPropertySet" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowNodes" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "NodeLine" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "NodeSize" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "NodeColor" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "NodeType" + }, + { + "typeExpression": "\"App::PropertyLinkSubList\"", + "name": "Tool" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Axes" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "Exclude" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Align" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchTruss.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "TrussAngle" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SlantType" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Normal" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HeightStart" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HeightEnd" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StrutStartOffset" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StrutEndOffset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StrutHeight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StrutWidth" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "RodType" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "RodDirection" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RodSize" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "RodSections" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RodEnd" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "RodMode" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchVRM.py", + "classes": [ + "Renderer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/ArchWall.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "OverrideWidth" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "OverrideAlign" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "OverrideOffset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Align" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Normal" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Face" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Refine" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeBlocks" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "BlockLength" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "BlockHeight" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "OffsetFirst" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "OffsetSecond" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Joint" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CountEntire" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CountBroken" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ArchSketchData" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "ArchSketchEdges" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArchSketchPropertySet" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/ArchWindow.py", + "classes": [ + "_ArchWindowTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Hosts" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "WindowParts" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HoleDepth" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Subvolume" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Normal" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutoNormalReversed" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Preset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Frame" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "LouvreWidth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "LouvreSpacing" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "Opening" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "HoleWire" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SymbolPlan" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SymbolElevation" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "HoleWire" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/BimSelect.py", + "classes": [ + "CyclicObjectSelector", + "CyclicSelectionObserver", + "Setup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/InitGui.py", + "classes": [ + "BIM_Create2DViews", + "BIM_GenericTools", + "BIM_WBManipulator", + "BimWatcher", + "RebarGroupCommand" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimArchUtils.py", + "classes": [ + "Arch_Add", + "Arch_Check", + "Arch_CloneComponent", + "Arch_CloseHoles", + "Arch_Component", + "Arch_IfcSpreadsheet", + "Arch_MergeWalls", + "Arch_MeshToShape", + "Arch_Remove", + "Arch_RemoveShape", + "Arch_SelectNonSolidMeshes", + "Arch_SplitMesh", + "Arch_Survey", + "Arch_ToggleIfcBrepFlag", + "Arch_ToggleSubs" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimAxis.py", + "classes": [ + "Arch_Axis", + "Arch_AxisSystem", + "Arch_AxisTools", + "Arch_Grid" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimBackground.py", + "classes": [ + "BIM_Background" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimBox.py", + "classes": [ + "BIM_Box" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimBuilder.py", + "classes": [ + "BIM_Builder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimBuildingPart.py", + "classes": [ + "Arch_Building", + "Arch_Level" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimClassification.py", + "classes": [ + "BIM_Classification", + "Item" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Classification" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Classification" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimCommon.py", + "classes": [ + "BIM_Common" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimCompound.py", + "classes": [ + "BIM_Compound" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimConvert.py", + "classes": [ + "BIM_Convert", + "BIM_Convert_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimCurtainwall.py", + "classes": [ + "Arch_CurtainWall" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimCut.py", + "classes": [ + "BIM_Cut" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimCutPlane.py", + "classes": [ + "Arch_CutPlane", + "CutPlaneTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimDiff.py", + "classes": [ + "BIM_Diff" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimDrawingView.py", + "classes": [ + "BIM_DrawingView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimEmptyTrash.py", + "classes": [ + "BIM_EmptyTrash" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimEquipment.py", + "classes": [ + "Arch_Equipment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimExamples.py", + "classes": [ + "BIM_Examples" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimExtrude.py", + "classes": [ + "BIM_Extrude" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimFence.py", + "classes": [ + "Arch_Fence" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimFrame.py", + "classes": [ + "Arch_Frame" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimFuse.py", + "classes": [ + "BIM_Fuse" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimGlue.py", + "classes": [ + "BIM_Glue" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimHelp.py", + "classes": [ + "BIM_Help" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimIfcElements.py", + "classes": [ + "BIM_IfcElements" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimIfcExplorer.py", + "classes": [ + "BIM_IfcExplorer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimIfcProperties.py", + "classes": [ + "BIM_IfcProperties" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyMap\"", + "name": "IfcPRoperties" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimIfcQuantities.py", + "classes": [ + "BIM_IfcQuantities" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimImagePlane.py", + "classes": [ + "BIM_ImagePlane" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimLayers.py", + "classes": [ + "BIM_Layers" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "HideChildren" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimLibrary.py", + "classes": [ + "BIM_Library", + "BIM_Library_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimMaterial.py", + "classes": [ + "Arch_Material", + "Arch_MaterialToolsCommand", + "Arch_MultiMaterial", + "BIM_Material" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimMoveView.py", + "classes": [ + "BIM_MoveView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimNudge.py", + "classes": [ + "BIM_Nudge" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimOffset.py", + "classes": [ + "BIM_Offset2D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimPanel.py", + "classes": [ + "Arch_Nest", + "Arch_Panel", + "Arch_PanelCut", + "Arch_PanelGroup", + "Arch_PanelSheet", + "NestTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimPipe.py", + "classes": [ + "Arch_Pipe", + "Arch_PipeConnector", + "Arch_PipeGroupCommand" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimPreflight.py", + "classes": [ + "BIM_Preflight", + "BIM_Preflight_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimProfile.py", + "classes": [ + "Arch_Profile" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimProject.py", + "classes": [ + "BIM_Project" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimProjectManager.py", + "classes": [ + "BIM_ProjectManager" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimRebar.py", + "classes": [ + "Arch_Rebar" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimReextrude.py", + "classes": [ + "BIM_Reextrude" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimReference.py", + "classes": [ + "Arch_Reference" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimReorder.py", + "classes": [ + "BIM_Reorder", + "BIM_Reorder_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimResetCloneColors.py", + "classes": [ + "BIM_ResetCloneColors" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimRewire.py", + "classes": [ + "BIM_Rewire" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimRoof.py", + "classes": [ + "Arch_Roof" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSchedule.py", + "classes": [ + "Arch_Schedule" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSectionPlane.py", + "classes": [ + "Arch_SectionPlane" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSetup.py", + "classes": [ + "BIM_Setup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSimpleCopy.py", + "classes": [ + "BIM_SimpleCopy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSite.py", + "classes": [ + "Arch_Site" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSketch.py", + "classes": [ + "BIM_Sketch" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSlab.py", + "classes": [ + "BIM_Slab" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimSpace.py", + "classes": [ + "Arch_Space" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimStairs.py", + "classes": [ + "Arch_Stairs" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimTDPage.py", + "classes": [ + "BIM_TDPage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimTDView.py", + "classes": [ + "BIM_TDView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimText.py", + "classes": [ + "BIM_Text" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimTogglePanels.py", + "classes": [ + "BIM_TogglePanels" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimTrash.py", + "classes": [ + "BIM_EmptyTrash", + "BIM_Trash" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimTruss.py", + "classes": [ + "Arch_Truss" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimTutorial.py", + "classes": [ + "BIM_Tutorial" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimUnclone.py", + "classes": [ + "BIM_Unclone" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimUngroup.py", + "classes": [ + "BIM_Ungroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimViews.py", + "classes": [ + "BIM_Views" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimWPCommands.py", + "classes": [ + "BIM_SetWPFront", + "BIM_SetWPSide", + "BIM_SetWPTop", + "BIM_WPView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimWall.py", + "classes": [ + "Arch_Wall" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimWelcome.py", + "classes": [ + "BIM_Welcome" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimWindow.py", + "classes": [ + "Arch_Window" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/bimcommands/BimWindows.py", + "classes": [ + "BIM_Windows", + "BIM_Windows_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/ifc_objects.py", + "classes": [ + "ifc_object" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/ifc_viewproviders.py", + "classes": [ + "ifc_vp_document", + "ifc_vp_group", + "ifc_vp_material", + "ifc_vp_object" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/importers/exportIFCHelper.py", + "classes": [ + "ContextCreator", + "SIUnitCreator", + "recycler" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/importers/importDAE.py", + "classes": [ + "_TriangleSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/importers/importIFC.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "IfcProperties" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/importers/importIFCHelper.py", + "classes": [ + "ProjectImporter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/importers/importIFClegacy.py", + "classes": [ + "IfcDocument", + "IfcEntity", + "IfcFile", + "IfcSchema", + "_tempEntityHolder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/importers/importSH3DHelper.py", + "classes": [ + "BaseHandler", + "SH3DImporter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_classification.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Classification" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_commands.py", + "classes": [ + "IFC_ConvertDocument", + "IFC_Diff", + "IFC_Expand", + "IFC_MakeProject", + "IFC_Save", + "IFC_SaveAs" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_geometry.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ExtrusionDepth" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "ExtrusionDirection" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RectangleLength" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RectangleWidth" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "PolylinePoints" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "ProfileName" + }, + { + "typeExpression": "\"App::PropertyPosition\"", + "name": "AxisStart" + }, + { + "typeExpression": "\"App::PropertyPosition\"", + "name": "AxisEnd" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_materials.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Material" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_objects.py", + "classes": [ + "document_object", + "ifc_object" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Classification" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_observer.py", + "classes": [ + "ifc_observer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_openshell.py", + "classes": [ + "IFC_UpdateIOS" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_status.py", + "classes": [ + "IFC_WBManipulator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_tools.py", + "classes": [ + "value" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyPythonObject\"", + "name": "Proxy" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "IfcFilePath" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Modified" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Schema" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "HideChildren" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Group" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ShapeMode" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Type" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "IfcClass" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Classification" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Text" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Depth" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DisplayLength" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DisplayHeight" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Start" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "End" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Dimline" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Text" + } + ] + }, + { + "sourceFile": "src/Mod/BIM/nativeifc/ifc_viewproviders.py", + "classes": [ + "ifc_vp_group", + "ifc_vp_material", + "ifc_vp_object" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/BIM/utils/ifctree.py", + "classes": [ + "ViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "CAM", + "sourcePath": "src/Mod/CAM", + "sourceFileCount": 495, + "objectSourceCount": 158, + "propertyRegistrationCount": 18, + "propertyMemberCount": 16, + "pythonPropertyCount": 373, + "objects": [ + { + "sourceFile": "src/Mod/CAM/App/AppPathPy.cpp", + "classes": [ + "Module", + "VoronoiModule" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/Area.cpp", + "classes": [ + "BoxGetter", + "ClearedAreaSegmentVisitor", + "EdgeInfo", + "FindPlane", + "GetWires", + "PntGetter", + "RGetter", + "ShapeInfo", + "ShapeInfoBuilder", + "ShapeParams", + "StackInfo", + "VertexInfo", + "WireInfo", + "WireJoiner", + "WireOrienter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/Area.h", + "classes": [ + "Shape" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/AreaPyImp.cpp", + "classes": [ + "AreaPyModifier" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeatureArea.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "SectionCount", + "SectionIndex", + "Source", + "Sources", + "WorkPlane" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeatureArea.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Sources" + }, + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyInteger", + "name": "SectionIndex" + }, + { + "type": "PropertyInteger", + "name": "SectionCount" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeaturePath.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Path" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeaturePathCompound.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Group", + "UsePlacements" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeaturePathCompound.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Group" + }, + { + "type": "PropertyBool", + "name": "UsePlacements" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeaturePathShape.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Sources", + "StartPoint", + "UseStartPoint" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/FeaturePathShape.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Sources" + }, + { + "type": "PropertyVector", + "name": "StartPoint" + }, + { + "type": "PropertyBool", + "name": "UseStartPoint" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/Path.cpp", + "classes": [ + "BoundBoxSegmentVisitor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/App/Voronoi.h", + "classes": [ + "diagram_type" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathDressupArray.py", + "classes": [ + "TestEngrave", + "TestFeature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathDressupDogbone.py", + "classes": [ + "TestFeature", + "TestProfile" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathDressupDogboneII.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Name" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Label" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Proxy" + }, + { + "typeExpression": "\"Path::Path\"", + "name": "Path" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathPost.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "ToolController" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathSetupSheet.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "StepOver" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathStock.py", + "classes": [ + "FakeJobProxy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Model" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathToolBitPropertyEditorWidget.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IsEnabled" + }, + { + "typeExpression": "\"App::PropertyInt\"", + "name": "Count" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Mode" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Comment" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IsEnabled" + }, + { + "typeExpression": "\"App::PropertyInt\"", + "name": "Count" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Mode" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Comment" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestPathToolDocumentObjectEditorWidget.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Prop1" + }, + { + "typeExpression": "\"App::PropertyInt\"", + "name": "Prop2" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Prop3" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Prop4" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Prop5" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PropA" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PropA" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Prop1" + }, + { + "typeExpression": "\"App::PropertyInt\"", + "name": "Prop2" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Prop1" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Prop1" + }, + { + "typeExpression": "\"App::PropertyInt\"", + "name": "Prop2" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Prop1" + }, + { + "typeExpression": "\"App::PropertyInt\"", + "name": "Prop2" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/CAMTests/TestRefactoredTestPost.py", + "classes": [ + "MockWriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CoolantMode" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Gui/AppPathGuiPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "FeatureArea" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Gui/DlgProcessorChooser.h", + "classes": [ + "DlgProcessorChooser" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Gui/DlgSettingsPathColor.h", + "classes": [ + "DlgSettingsPathColor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Gui/TaskDlgPathCompound.h", + "classes": [ + "TaskWidgetPathCompound" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Gui/ViewProviderPath.cpp", + "classes": [ + "PathSelectionObserver", + "VisualPathSegmentVisitor" + ], + "typeIdSymbols": [ + "SoLineDetail" + ], + "propertyRegistrations": [ + "LineWidth", + "MarkerColor", + "NormalColor", + "ShowCount", + "ShowNodes", + "StartIndex", + "StartPosition" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Gui/ViewProviderPath.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyInteger", + "name": "LineWidth" + }, + { + "type": "PropertyColor", + "name": "NormalColor" + }, + { + "type": "PropertyColor", + "name": "MarkerColor" + }, + { + "type": "PropertyBool", + "name": "ShowNodes" + }, + { + "type": "PropertyVector", + "name": "StartPosition" + }, + { + "type": "PropertyIntegerConstraint", + "name": "StartIndex" + }, + { + "type": "PropertyIntegerConstraint", + "name": "ShowCount" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/InitGui.py", + "classes": [ + "PathCommandGroup", + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Base/Gui/GetPoint.py", + "classes": [ + "TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Base/Gui/PreferencesAdvanced.py", + "classes": [ + "AdvancedPreferencesPage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Base/Gui/SetupSheet.py", + "classes": [ + "OpTaskPanel", + "OpsDefaultEditor", + "TaskPanel", + "ViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Base/MachineState.py", + "classes": [ + "MachineState" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Base/SetupSheet.py", + "classes": [ + "SetupSheet", + "Template" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "VertRapid" + }, + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "HorizRapid" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "CoolantModes" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CoolantMode" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "SafeHeightOffset" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "SafeHeightExpression" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ClearanceHeightOffset" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "ClearanceHeightExpression" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "StartDepthExpression" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "FinalDepthExpression" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "StepDownExpression" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "CoolantModes" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CoolantMode" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Array.py", + "classes": [ + "DressupArray", + "PathArray" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Type" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CopiesX" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CopiesY" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Copies" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Centre" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SwapDirection" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "JitterPercent" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "JitterMagnitude" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "JitterSeed" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Boundary.py", + "classes": [ + "PathBoundary" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Stock" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Inside" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepToolDown" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepToolDown" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/DogboneII.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Side" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Style" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Incision" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Custom" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "BoneBlacklist" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OnlyClosedProfiles" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/Array.py", + "classes": [ + "CommandPathDressupArray" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/AxisMap.py", + "classes": [ + "CommandPathDressup", + "ObjectDressup", + "TaskPanel", + "ViewProviderDressup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AxisMap" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Radius" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/Boundary.py", + "classes": [ + "CommandPathDressupPathBoundary" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/Dogbone.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Side" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Style" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "BoneBlacklist" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Incision" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Custom" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/Dragknife.py", + "classes": [ + "CommandDressupDragknife", + "ObjectDressup", + "TaskPanel", + "ViewProviderDressup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "filterAngle" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "offset" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "pivotheight" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py", + "classes": [ + "CommandPathDressupLeadInOut", + "ObjectDressup", + "ViewProviderDressup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LeadIn" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LeadOut" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RetractThreshold" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StyleIn" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StyleOut" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RapidPlunge" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "AngleIn" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "AngleOut" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RadiusIn" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RadiusOut" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InvertIn" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InvertOut" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetIn" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetOut" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ExtendLeadIn" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ExtendLeadOut" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StyleIn" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StyleOut" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "AngleIn" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "AngleOut" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RadiusIn" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RadiusOut" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InvertIn" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InvertOut" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetIn" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetOut" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "RetractThreshold" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ExtendLeadIn" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ExtendLeadOut" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/Preferences.py", + "classes": [ + "DressupPreferencesPage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/RampEntry.py", + "classes": [ + "AnnotatedGCode", + "CommandPathDressupRampEntry", + "ObjectDressup", + "ViewProviderDressup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Method" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "RampFeedRate" + }, + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "CustomFeedRate" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseStartDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DressupStartDepth" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/TagPreferences.py", + "classes": [ + "HoldingTagPreferences" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/Tags.py", + "classes": [ + "CommandPathDressupTag", + "HoldingTagMarker", + "PathDressupTagTaskPanel", + "PathDressupTagViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "'App::PropertyLink'", + "name": "Debug" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Gui/ZCorrect.py", + "classes": [ + "CommandPathDressup", + "ObjectDressup", + "TaskPanel", + "ViewProviderDressup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "probefile" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "interpSurface" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ArcInterpolate" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "SegInterpolate" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Dressup/Tags.py", + "classes": [ + "MapWireToTag", + "ObjectTagDressup", + "PathData", + "Tag", + "_RapidEdges" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Positions" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "Disabled" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "SegmentationFactor" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Geom.py", + "classes": [ + "Side" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Log.py", + "classes": [ + "Level" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/Camotics.py", + "classes": [ + "CAMoticsUI", + "CommandCamoticsSimulate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/Fixture.py", + "classes": [ + "CommandPathFixture", + "Fixture", + "_ViewProviderFixture" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Fixture" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Active" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "SomePropertyName" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/Inspect.py", + "classes": [ + "CommandPathInspect" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/Job.py", + "classes": [ + "TaskPanel", + "ViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/JobCmd.py", + "classes": [ + "CommandJobCreate", + "CommandJobTemplateExport" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/JobDlg.py", + "classes": [ + "JobCreate", + "JobTemplateExport" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/PreferencesJob.py", + "classes": [ + "JobPreferencesPage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/SanityCmd.py", + "classes": [ + "CommandCAMSanity" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/Simulator.py", + "classes": [ + "CAMSimTaskUi", + "CommandPathSimulate", + "PathSimulation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Gui/SimulatorGL.py", + "classes": [ + "CAMSimTaskUi", + "CAMSimulation", + "CommandCAMSimulate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Job.py", + "classes": [ + "JobTemplate", + "ObjectJob" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "PathResource" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "PostProcessorOutputFile" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "PostProcessor" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PostProcessorArgs" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "LastPostProcessDate" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "LastPostProcessOutput" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Description" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "GeometryTolerance" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Stock" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Operations" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "JobType" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SplitOutput" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "OrderOutputBy" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Fixtures" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "SetupSheet" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Model" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Tools" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Fixtures" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "OrderOutputBy" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SplitOutput" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "JobType" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Sanity/ImageBuilder.py", + "classes": [ + "ImageBuilder", + "ImageBuilderFactory" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Sanity/ReportGenerator.py", + "classes": [ + "ReportGenerator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Sanity/Sanity.py", + "classes": [ + "CAMSanity" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Main/Stock.py", + "classes": [ + "StockType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtXneg" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtXpos" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtYneg" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtYpos" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtZneg" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtZpos" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "StockType" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Adaptive.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Side" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "OperationType" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Tolerance" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "StepOver" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "LiftDistance" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "KeepToolDownRatio" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StockToLeave" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ZStockToLeave" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ForceInsideOut" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FinishingProfile" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Stopped" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "StopProcessing" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseHelixArcs" + }, + { + "typeExpression": "\"App::PropertyPythonObject\"", + "name": "AdaptiveInputState" + }, + { + "typeExpression": "\"App::PropertyPythonObject\"", + "name": "AdaptiveOutputState" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "HelixAngle" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "HelixConeAngle" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "HelixDiameterLimit" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseOutline" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OrderCutsByRegion" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "removalshape" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ModelAwareExperiment" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "HelixConeAngle" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseOutline" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OrderCutsByRegion" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ZStockToLeave" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ModelAwareExperiment" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "removalshape" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Area.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "AreaParams" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PathParams" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "removalshape" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SplitArcs" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SplitArcs" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Base.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkSubListGlobal\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OpStartDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OpFinalDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OpToolDiameter" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OpStockZMax" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OpStockZMin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Active" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Comment" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "UserLabel" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Locations" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "ToolController" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CoolantMode" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StartDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "FinalDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StartDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StepDown" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "FinishDepth" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ClearanceHeight" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "SafeHeight" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "StartPoint" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseStartPoint" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "MinDiameter" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "MaxDiameter" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CoolantMode" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StepDown" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/CircularHoleBase.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Disabled" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Custom.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Source" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "GcodeFile" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Gcode" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Source" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "GcodeFile" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Deburr.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtraDepth" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Join" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Direction" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Side" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "EntryPoint" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Drilling.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "chipBreakEnabled" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "feedRetractEnabled" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "PeckDepth" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PeckEnabled" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "chipBreakEnabled" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "DwellTime" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DwellEnabled" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AddTipLength" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "RetractMode" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "RetractHeight" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ExtraOffset" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepToolDown" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "feedRetractEnabled" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepToolDown" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "RetractMode" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Engrave.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "BaseShapes" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "BaseObject" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "StartVertex" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/FeatureExtension.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtensionLengthDefault" + }, + { + "typeExpression": "\"App::PropertyLinkSubListGlobal\"", + "name": "ExtensionFeature" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExtensionCorners" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Array.py", + "classes": [ + "CommandPathArray", + "ObjectArray", + "PathArray", + "ViewProviderArray" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Type" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CopiesX" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CopiesY" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Copies" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Centre" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SwapDirection" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "JitterPercent" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "JitterMagnitude" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "JitterSeed" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "ToolController" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Active" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Active" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "JitterSeed" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Base.py", + "classes": [ + "CommandPathOp", + "CommandResources", + "CommandSetStartPoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Comment.py", + "classes": [ + "CommandPathComment", + "Comment", + "_ViewProviderComment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Comment" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Copy.py", + "classes": [ + "CommandPathCopy", + "ObjectPathCopy", + "ViewProviderPathCopy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "ToolController" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Drilling.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepToolDown" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/PathShapeTC.py", + "classes": [ + "CommandPathShapeTC", + "ObjectPartShape" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Active" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Comment" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "UserLabel" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "CycleTime" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "ToolController" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OpToolDiameter" + }, + { + "typeExpression": "\"App::PropertyLinkSubListGlobal\"", + "name": "Base" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Selection.py", + "classes": [ + "PROBEGate", + "VCARVEGate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/SimpleCopy.py", + "classes": [ + "CommandPathSimpleCopy", + "ViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Gui/Stop.py", + "classes": [ + "CommandPathStop", + "Stop", + "_ViewProviderStop" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Stop" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Helix.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Direction" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StartSide" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CutMode" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "StepOver" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StartRadius" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetExtra" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StartRadius" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "OffsetExtra" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CutMode" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/MillFace.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "BoundaryShape" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ClearEdges" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExcludeRaisedAreas" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Pocket.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "HandleMultipleFeatures" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AdaptivePocketStart" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AdaptivePocketFinish" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ProcessStockArea" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/PocketBase.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "CutMode" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtraOffset" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StartAt" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "StepOver" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "ZigZagAngle" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ClearingPattern" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MinTravel" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepToolDown" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "PocketLastStepOver" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseRestMachining" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "PocketLastStepOver" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseRestMachining" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/PocketShape.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseOutline" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Probe.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Xoffset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Yoffset" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "PointCountX" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "PointCountY" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "OutputFileName" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Profile.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumPasses" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Stepover" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/SurfaceSupport.py", + "classes": [ + "FindUnifiedRegions", + "OCL_Tool", + "PathGeometryGenerator", + "ProcessSelectedFaces" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Tapping.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "DwellTime" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DwellEnabled" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AddTipLength" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ReturnLevel" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "RetractHeight" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ExtraOffset" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/ThreadMilling.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ThreadOrientation" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ThreadType" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "ThreadName" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "MajorDiameter" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "MinorDiameter" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Pitch" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "TPI" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "ThreadFit" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Passes" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Direction" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LeadInOut" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "ClearanceOp" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Op/Vcarve.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "BaseShapes" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OptimizeMovements" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FinishingPass" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "FinishingPassZOffset" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Discretize" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Colinear" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Tolerance" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Post/Command.py", + "classes": [ + "CommandPathPost", + "DlgSelectPostProcessor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Post/Processor.py", + "classes": [ + "PostProcessor", + "PostProcessorFactory", + "_TempObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Post/Utils.py", + "classes": [ + "FilenameGenerator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Post/scripts/marlin_post.py", + "classes": [ + "Drill" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Post/scripts/opensbp_post.py", + "classes": [ + "ToOpenSBP" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Post/scripts/rrf_post.py", + "classes": [ + "Drill" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/Controller.py", + "classes": [ + "ToolController", + "ToolControllerTemplate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "ToolNumber" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "SpindleSpeed" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SpindleDir" + }, + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "VertFeed" + }, + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "HorizFeed" + }, + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "VertRapid" + }, + { + "typeExpression": "\"App::PropertySpeed\"", + "name": "HorizRapid" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Tool" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/Gui/Controller.py", + "classes": [ + "DlgToolControllerEdit", + "TaskPanel", + "ViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/assets/cache.py", + "classes": [ + "AssetCache" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/assets/manager.py", + "classes": [ + "AssetManager", + "_AssetConstructionData" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/assets/ui/preferences.py", + "classes": [ + "AssetPreferencesPage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/assets/uri.py", + "classes": [ + "AssetUri" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/docobject/models/docobject.py", + "classes": [ + "DetachedDocumentObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/library/ui/cmd.py", + "classes": [ + "CommandLibraryEditorOpen", + "CommandToolBitLibraryDockOpen" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/migration/migration.py", + "classes": [ + "CAMAssetMigrator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/shape/doc.py", + "classes": [ + "ShapeDocFromBytes" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/shape/ui/shapeselector.py", + "classes": [ + "ShapeSelector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/migration.py", + "classes": [ + "ParameterAccessor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/mixins/cutting.py", + "classes": [ + "CuttingToolMixin" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Chipload" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/mixins/rotary.py", + "classes": [ + "RotaryToolBitMixin" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/models/base.py", + "classes": [ + "ToolBitRecomputeObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "ShapeID" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ShapeType" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "BitBody" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "ToolBitID" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SpindleDirection" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Material" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SpindleDirection" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Material" + } + ] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/serializers/camotics.py", + "classes": [ + "attrs" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/ui/cmd.py", + "classes": [ + "CommandToolBitCreate", + "CommandToolBitLoad", + "CommandToolBitSave" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/Path/Tool/toolbit/ui/panel.py", + "classes": [ + "TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathCommands.py", + "classes": [ + "_CommandSelectLoop", + "_CopyOperation", + "_ToggleOperation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathPythonGui/simple_edit_panel.py", + "classes": [ + "SimpleEditPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/App/AppPathSimulator.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/App/VolSim.h", + "classes": [ + "Array2D", + "Point3D", + "Triangle3D", + "cLineSegment", + "cSimTool", + "cStock", + "cVolSim", + "less_than", + "toolShapePoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/AppCAMSimulator.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h", + "classes": [ + "DlgCAMSimulator", + "SimStock" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/EndMill.h", + "classes": [ + "EndMill" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/GCodeParser.h", + "classes": [ + "GCToken", + "GCodeParser" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/GlUtils.cpp", + "classes": [ + "Vertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.h", + "classes": [ + "GuiDisplay", + "GuiItem", + "Vertex2D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/MillMotion.h", + "classes": [ + "MillMotion" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/MillPathLine.h", + "classes": [ + "MillPathLine", + "MillPathPosition" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/MillPathSegment.h", + "classes": [ + "MillPathSegment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/MillSimulation.h", + "classes": [ + "MillSimulation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/Shader.h", + "classes": [ + "Shader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/SimDisplay.h", + "classes": [ + "Point3D", + "SimDisplay" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/SimShapes.h", + "classes": [ + "Shape", + "Vertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/SolidObject.h", + "classes": [ + "SolidObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/StockObject.h", + "classes": [ + "StockObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/Texture.h", + "classes": [ + "Texture" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/PathSimulator/AppGL/TextureLoader.h", + "classes": [ + "TextureItem", + "TextureLoader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Adaptive.cpp", + "classes": [ + "BoundBox", + "ClearedArea", + "EngagePoint", + "EngageState", + "Interpolation", + "PerfCounter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Adaptive.hpp", + "classes": [ + "Adaptive2d", + "AdaptiveOutput" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Arc.h", + "classes": [ + "CArc" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Area.cpp", + "classes": [ + "ThickLine", + "ZigZag" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Area.h", + "classes": [ + "CArea", + "CAreaPocketParams" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/AreaClipper.cpp", + "classes": [ + "DoubleAreaPoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/AreaDxf.h", + "classes": [ + "AreaDxfRead" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/AreaOrderer.h", + "classes": [ + "CAreaOrderer", + "CInnerCurves" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/AreaPocket.cpp", + "classes": [ + "CurveTree", + "GetCurveItem", + "IslandAndOffset", + "IslandAndOffsetLink" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Box2D.h", + "classes": [ + "CBox2D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Circle.h", + "classes": [ + "Circle" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Curve.h", + "classes": [ + "CCurve", + "CVertex", + "Line", + "Span" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/Point.h", + "classes": [ + "Point" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/clipper.cpp", + "classes": [ + "Int128", + "IntersectNode", + "Join", + "LocMinSorter", + "LocalMinimum", + "OutPt", + "OutRec", + "TEdge" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/clipper.hpp", + "classes": [ + "Clipper", + "ClipperBase", + "ClipperOffset", + "DoublePoint", + "IntPoint", + "IntRect", + "PolyNode", + "PolyTree", + "clipperException" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/kurve/geometry.h", + "classes": [ + "Box", + "Box3d", + "CLine", + "Circle", + "Kurve", + "Line", + "Matrix", + "Plane", + "Point", + "Point3d", + "Span", + "SpanDataObject", + "SpanVertex", + "Triangle3d", + "Vector2d", + "Vector3d", + "spVertex", + "spanCompare" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/CAM/libarea/kurve/offset.cpp", + "classes": [ + "iso" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Cloud", + "sourcePath": "src/Mod/Cloud", + "sourceFileCount": 11, + "objectSourceCount": 4, + "propertyRegistrationCount": 0, + "propertyMemberCount": 6, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Cloud/App/AppCloud.cpp", + "classes": [ + "Cloud", + "CloudReader", + "data_buffer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Cloud/App/AppCloud.h", + "classes": [ + "AmzData", + "AmzDatav4", + "CloudReader", + "FileEntry", + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "URL" + }, + { + "type": "PropertyString", + "name": "TCPPort" + }, + { + "type": "PropertyString", + "name": "TokenAuth" + }, + { + "type": "PropertyString", + "name": "TokenSecret" + }, + { + "type": "PropertyString", + "name": "ProtocolVersion" + }, + { + "type": "PropertyString", + "name": "Region" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Cloud/Gui/AppCloudGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Cloud/Gui/Workbench.h", + "classes": [ + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Draft", + "sourcePath": "src/Mod/Draft", + "sourceFileCount": 242, + "objectSourceCount": 68, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 246, + "objects": [ + { + "sourceFile": "src/Mod/Draft/App/AppDraftUtilsPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/DraftGui.py", + "classes": [ + "DraftCreateWatcher", + "DraftModifyWatcher", + "DraftTaskPanel", + "DraftToolBar", + "FacebinderTaskPanel", + "TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/DxfImportDialog.py", + "classes": [ + "DxfImportDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/SVGPath.py", + "classes": [ + "FaceTreeNode", + "SvgPathElement", + "SvgPathParser" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/WorkingPlane.py", + "classes": [ + "PlaneBase" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_arcs.py", + "classes": [ + "ArcGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_arrays.py", + "classes": [ + "ArrayGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_base.py", + "classes": [ + "GuiCommandBase", + "GuiCommandSimplest" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_base_original.py", + "classes": [ + "DraftTool" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_beziers.py", + "classes": [ + "BezierGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_edit.py", + "classes": [ + "GuiToolsRepository" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_edit_base_object.py", + "classes": [ + "GuiTools" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_hatch.py", + "classes": [ + "Draft_Hatch_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_hyperlink.py", + "classes": [ + "Draft_Hyperlink" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_layers.py", + "classes": [ + "LayerManager" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_planeproxy.py", + "classes": [ + "Draft_WorkingPlaneProxy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_selectplane.py", + "classes": [ + "Draft_SelectPlane" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_setstyle.py", + "classes": [ + "Draft_SetStyle", + "Draft_SetStyle_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_snapper.py", + "classes": [ + "Snapper" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_snaps.py", + "classes": [ + "Draft_Snap_Base" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftguitools/gui_trackers.py", + "classes": [ + "Tracker" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/array.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArrayType" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Count" + }, + { + "typeExpression": "\"App::PropertyPlacementList\"", + "name": "PlacementList" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberX" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberY" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberZ" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "IntervalX" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "IntervalY" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "IntervalZ" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Axis" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Center" + }, + { + "typeExpression": "\"App::PropertyLinkGlobal\"", + "name": "AxisReference" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberPolar" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "IntervalAxis" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "RadialDistance" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "TangentialDistance" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberCircles" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Symmetry" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExpandArray" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/bezcurve.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Points" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Degree" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "Continuity" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Closed" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/block.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Components" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/bspline.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Points" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Closed" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Parameterization" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/circle.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "FirstAngle" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "LastAngle" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/clone.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkListGlobal\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Scale" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ForceCompound" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/dimension.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Normal" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Support" + }, + { + "typeExpression": "\"App::PropertyLinkSubList\"", + "name": "LinkedGeometry" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Dimline" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Start" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "End" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Direction" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Distance" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Diameter" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "FirstAngle" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "LastAngle" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Center" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/draftlink.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AlwaysSyncPlacement" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExpandArray" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LinkTransform" + }, + { + "typeExpression": "\"App::PropertyLinkSubHidden\"", + "name": "ColoredElements" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LinkCopyOnChange" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/ellipse.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "FirstAngle" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "LastAngle" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "MinorRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "MajorRadius" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/facebinder.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkSubList\"", + "name": "Faces" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RemoveSplitter" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Extrusion" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Sew" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/fillet.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Start" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "End" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FilletRadius" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/hatch.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "File" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Pattern" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Scale" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Rotation" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Translate" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/label.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVector\"", + "name": "TargetPoint" + }, + { + "typeExpression": "\"App::PropertyLinkSub\"", + "name": "Target" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Points" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "StraightDirection" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "StraightDistance" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "CustomText" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Text" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LabelType" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/layer.py", + "classes": [ + "Layer", + "LayerContainer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkListHidden\"", + "name": "Group" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/patharray.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkGlobal\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLinkGlobal\"", + "name": "PathObject" + }, + { + "typeExpression": "\"App::PropertyLinkSubListGlobal\"", + "name": "PathSubelements" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExpandArray" + }, + { + "typeExpression": "\"App::PropertyPlacementList\"", + "name": "PlacementList" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "ExtraTranslation" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "TangentVector" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ForceVertical" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "VerticalVector" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AlignMode" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ReversePath" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Align" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Count" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SpacingMode" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "SpacingUnit" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseSpacingPattern" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "SpacingPattern" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "StartOffset" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "EndOffset" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/pathtwistedarray.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "PathObject" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Count" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "RotationFactor" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExpandArray" + }, + { + "typeExpression": "\"App::PropertyPlacementList\"", + "name": "PlacementList" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/point.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "X" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Y" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Z" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/pointarray.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "PointObject" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Count" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "ExtraPlacement" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExpandArray" + }, + { + "typeExpression": "\"App::PropertyPlacementList\"", + "name": "PlacementList" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/polygon.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "FacesNumber" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "DrawMode" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FilletRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ChamferSize" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/rectangle.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FilletRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ChamferSize" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Rows" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Columns" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/shape2dview.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Projection" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ProjectionMode" + }, + { + "typeExpression": "\"App::PropertyIntegerList\"", + "name": "FaceNumbers" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "HiddenLines" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FuseArch" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Tessellation" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InPlace" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "SegmentLength" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VisibleOnly" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "ExclusionPoints" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "ExclusionNames" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OnlySolids" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Clip" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutoUpdate" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/shapestring.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "String" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "FontFile" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Size" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Justification" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "JustificationReference" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "KeepLeftMargin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ScaleToSize" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Tracking" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "ObliqueAngle" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Fuse" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/text.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "Text" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/wire.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "Points" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Closed" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Tool" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "Start" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "End" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FilletRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ChamferSize" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MakeFace" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Subdivisions" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "Area" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftobjects/wpproxy.py", + "classes": [ + "WorkingPlaneProxy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/__init__.py", + "classes": [ + "CommandTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/task_circulararray.py", + "classes": [ + "TaskPanelCircularArray" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/task_orthoarray.py", + "classes": [ + "TaskPanelOrthoArray" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/task_polararray.py", + "classes": [ + "TaskPanelPolarArray" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/task_scale.py", + "classes": [ + "ScaleTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/task_selectplane.py", + "classes": [ + "SelectPlaneTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/drafttaskpanels/task_shapestring.py", + "classes": [ + "ShapeStringTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftutils/gui_utils.py", + "classes": [ + "DelayEnder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftutils/params.py", + "classes": [ + "ParamObserverDraft", + "ParamObserverView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftutils/todo.py", + "classes": [ + "ToDo" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_base.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Pattern" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "PatternSize" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_clone.py", + "classes": [ + "ViewProviderClone" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_dimension.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "TextSpacing" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FlipText" + }, + { + "typeExpression": "\"App::PropertyVectorDistance\"", + "name": "TextPosition" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Override" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Decimals" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowUnit" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "UnitOverride" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FlipArrows" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "DimOvershoot" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtLines" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "ExtOvershoot" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ShowLine" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_draft_annotation.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "ScaleMultiplier" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AnnotationStyle" + }, + { + "typeExpression": "\"App::PropertyFont\"", + "name": "FontName" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "FontSize" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "TextColor" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ArrowSizeStart" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArrowTypeStart" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ArrowSizeEnd" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArrowTypeEnd" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineWidth" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "LineColor" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_hatch.py", + "classes": [ + "ViewProviderDraftHatch" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_label.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "TextAlignment" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "MaxChars" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Justification" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineSpacing" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Frame" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Line" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_layer.py", + "classes": [ + "ViewProviderLayer", + "ViewProviderLayerContainer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OverrideLineColorChildren" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OverrideShapeAppearanceChildren" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UsePrintColor" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "LineColor" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "ShapeColor" + }, + { + "typeExpression": "\"App::PropertyMaterialList\"", + "name": "ShapeAppearance" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineWidth" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "DrawStyle" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "Transparency" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "LinePrintColor" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_rectangle.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFile\"", + "name": "TextureImage" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_text.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Justification" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineSpacing" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_wire.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ArrowSizeStart" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArrowTypeStart" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ArrowSizeEnd" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ArrowTypeEnd" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/draftviewproviders/view_wpproxy.py", + "classes": [ + "ViewProviderWorkingPlaneProxy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "DisplaySize" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ArrowSize" + }, + { + "typeExpression": "\"App::PropertyPercent\"", + "name": "Transparency" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LineWidth" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "LineColor" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "ViewData" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RestoreView" + }, + { + "typeExpression": "\"App::PropertyMap\"", + "name": "VisibilityMap" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "RestoreState" + } + ] + }, + { + "sourceFile": "src/Mod/Draft/importDXF.py", + "classes": [ + "DxfDraftPostProcessor", + "DxfImportReporter", + "dxfcounter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "DxfTextHeight" + } + ] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Fem", + "sourcePath": "src/Mod/Fem", + "sourceFileCount": 651, + "objectSourceCount": 208, + "propertyRegistrationCount": 204, + "propertyMemberCount": 249, + "pythonPropertyCount": 307, + "objects": [ + { + "sourceFile": "src/Mod/Fem/App/AppFemPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemAnalysis.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Uid" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemAnalysis.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyUUID", + "name": "Uid" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraint.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "NormalDirection", + "Normals", + "Points", + "References", + "Scale" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraint.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "References" + }, + { + "type": "PropertyVector", + "name": "NormalDirection" + }, + { + "type": "PropertyFloatConstraint", + "name": "Scale" + }, + { + "type": "PropertyVectorList", + "name": "Points" + }, + { + "type": "PropertyVectorList", + "name": "Normals" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintBearing.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AxialFree", + "Axis", + "BasePoint", + "Dist", + "Height", + "Location", + "Radius" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintBearing.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Location" + }, + { + "type": "PropertyFloat", + "name": "Dist" + }, + { + "type": "PropertyBool", + "name": "AxialFree" + }, + { + "type": "PropertyFloat", + "name": "Radius" + }, + { + "type": "PropertyFloat", + "name": "Height" + }, + { + "type": "PropertyVector", + "name": "BasePoint" + }, + { + "type": "PropertyVector", + "name": "Axis" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintContact.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Adjust", + "EnableThermalContact", + "Friction", + "FrictionCoefficient", + "Slope", + "StickSlope", + "SurfaceBehavior", + "ThermalContactConductance" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "oldSlope" + }, + { + "type": "PropertyFloat", + "name": "oldFriction" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintContact.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyStiffnessDensity", + "name": "Slope" + }, + { + "type": "PropertyLength", + "name": "Adjust" + }, + { + "type": "PropertyBool", + "name": "Friction" + }, + { + "type": "PropertyFloat", + "name": "FrictionCoefficient" + }, + { + "type": "PropertyStiffnessDensity", + "name": "StickSlope" + }, + { + "type": "PropertyBool", + "name": "EnableThermalContact" + }, + { + "type": "PropertyStringList", + "name": "ThermalContactConductance" + }, + { + "type": "PropertyEnumeration", + "name": "SurfaceBehavior" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintDisplacement.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmplitudeValues", + "EnableAmplitude", + "hasXFormula", + "hasYFormula", + "hasZFormula", + "rotxFree", + "rotyFree", + "rotzFree", + "useFlowSurfaceForce", + "xDisplacement", + "xDisplacementFormula", + "xFree", + "xRotation", + "yDisplacement", + "yDisplacementFormula", + "yFree", + "yRotation", + "zDisplacement", + "zDisplacementFormula", + "zFree", + "zRotation" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "xDisplacementProperty" + }, + { + "type": "PropertyFloat", + "name": "yDisplacementProperty" + }, + { + "type": "PropertyFloat", + "name": "zDisplacementProperty" + }, + { + "type": "PropertyFloat", + "name": "xRotationProperty" + }, + { + "type": "PropertyFloat", + "name": "yRotationProperty" + }, + { + "type": "PropertyFloat", + "name": "zRotationProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintDisplacement.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + }, + { + "type": "PropertyDistance", + "name": "xDisplacement" + }, + { + "type": "PropertyDistance", + "name": "yDisplacement" + }, + { + "type": "PropertyDistance", + "name": "zDisplacement" + }, + { + "type": "PropertyAngle", + "name": "xRotation" + }, + { + "type": "PropertyAngle", + "name": "yRotation" + }, + { + "type": "PropertyAngle", + "name": "zRotation" + }, + { + "type": "PropertyString", + "name": "xDisplacementFormula" + }, + { + "type": "PropertyString", + "name": "yDisplacementFormula" + }, + { + "type": "PropertyString", + "name": "zDisplacementFormula" + }, + { + "type": "PropertyBool", + "name": "xFree" + }, + { + "type": "PropertyBool", + "name": "yFree" + }, + { + "type": "PropertyBool", + "name": "zFree" + }, + { + "type": "PropertyBool", + "name": "rotxFree" + }, + { + "type": "PropertyBool", + "name": "rotyFree" + }, + { + "type": "PropertyBool", + "name": "rotzFree" + }, + { + "type": "PropertyBool", + "name": "hasXFormula" + }, + { + "type": "PropertyBool", + "name": "hasYFormula" + }, + { + "type": "PropertyBool", + "name": "hasZFormula" + }, + { + "type": "PropertyBool", + "name": "useFlowSurfaceForce" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintFluidBoundary.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BoundaryType", + "BoundaryValue", + "Direction", + "DirectionVector", + "HTCoeffValue", + "HeatFluxValue", + "Reversed", + "Subtype", + "TemperatureValue", + "ThermalBoundaryType", + "TurbulenceSpecification", + "TurbulentIntensityValue", + "TurbulentLengthValue" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintFluidBoundary.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "BoundaryType" + }, + { + "type": "PropertyEnumeration", + "name": "Subtype" + }, + { + "type": "PropertyFloat", + "name": "BoundaryValue" + }, + { + "type": "PropertyLinkSub", + "name": "Direction" + }, + { + "type": "PropertyEnumeration", + "name": "TurbulenceSpecification" + }, + { + "type": "PropertyFloat", + "name": "TurbulentIntensityValue" + }, + { + "type": "PropertyFloat", + "name": "TurbulentLengthValue" + }, + { + "type": "PropertyEnumeration", + "name": "ThermalBoundaryType" + }, + { + "type": "PropertyFloat", + "name": "TemperatureValue" + }, + { + "type": "PropertyFloat", + "name": "HeatFluxValue" + }, + { + "type": "PropertyFloat", + "name": "HTCoeffValue" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyVector", + "name": "DirectionVector" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintForce.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmplitudeValues", + "Direction", + "DirectionVector", + "EnableAmplitude", + "Force", + "Reversed" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "ForceProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintForce.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + }, + { + "type": "PropertyForce", + "name": "Force" + }, + { + "type": "PropertyLinkSub", + "name": "Direction" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyVector", + "name": "DirectionVector" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintGear.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Diameter", + "Direction", + "DirectionVector", + "Force", + "ForceAngle", + "Reversed" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintGear.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "Diameter" + }, + { + "type": "PropertyFloat", + "name": "Force" + }, + { + "type": "PropertyFloat", + "name": "ForceAngle" + }, + { + "type": "PropertyLinkSub", + "name": "Direction" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyVector", + "name": "DirectionVector" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintHeatflux.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmbientTemp", + "AmplitudeValues", + "CavityName", + "CavityRadiation", + "ConstraintType", + "DFlux", + "Emissivity", + "EnableAmplitude", + "FaceTemp", + "FilmCoef" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "filmCoefProperty" + }, + { + "type": "PropertyFloat", + "name": "dFluxProperty" + }, + { + "type": "PropertyFloat", + "name": "tempProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintHeatflux.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + }, + { + "type": "PropertyTemperature", + "name": "AmbientTemp" + }, + { + "type": "PropertyFloat", + "name": "FaceTemp" + }, + { + "type": "PropertyThermalTransferCoefficient", + "name": "FilmCoef" + }, + { + "type": "PropertyFloat", + "name": "Emissivity" + }, + { + "type": "PropertyHeatFlux", + "name": "DFlux" + }, + { + "type": "PropertyEnumeration", + "name": "ConstraintType" + }, + { + "type": "PropertyBool", + "name": "CavityRadiation" + }, + { + "type": "PropertyString", + "name": "CavityName" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintInitialTemperature.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmplitudeValues", + "EnableAmplitude", + "EnableFinalTemperature", + "FinalTemperature", + "initialTemperature" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "initialTemperatureProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintInitialTemperature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyTemperature", + "name": "initialTemperature" + }, + { + "type": "PropertyBool", + "name": "EnableFinalTemperature" + }, + { + "type": "PropertyTemperature", + "name": "FinalTemperature" + }, + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintPressure.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmplitudeValues", + "EnableAmplitude", + "Pressure", + "Reversed" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "PressureProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintPressure.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + }, + { + "type": "PropertyPressure", + "name": "Pressure" + }, + { + "type": "PropertyBool", + "name": "Reversed" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintPulley.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BeltAngle", + "BeltForce1", + "BeltForce2", + "CenterDistance", + "IsDriven", + "OtherDiameter", + "TensionForce" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintPulley.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "OtherDiameter" + }, + { + "type": "PropertyFloat", + "name": "CenterDistance" + }, + { + "type": "PropertyBool", + "name": "IsDriven" + }, + { + "type": "PropertyFloat", + "name": "TensionForce" + }, + { + "type": "PropertyFloat", + "name": "BeltAngle" + }, + { + "type": "PropertyFloat", + "name": "BeltForce1" + }, + { + "type": "PropertyFloat", + "name": "BeltForce2" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintRigidBody.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmplitudeValues", + "Displacement", + "EnableAmplitude", + "ForceX", + "ForceY", + "ForceZ", + "MomentX", + "MomentY", + "MomentZ", + "ReferenceNode", + "Rotation", + "RotationalModeX", + "RotationalModeY", + "RotationalModeZ", + "TranslationalModeX", + "TranslationalModeY", + "TranslationalModeZ" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintRigidBody.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + }, + { + "type": "PropertyPosition", + "name": "ReferenceNode" + }, + { + "type": "PropertyPosition", + "name": "Displacement" + }, + { + "type": "PropertyRotation", + "name": "Rotation" + }, + { + "type": "PropertyForce", + "name": "ForceX" + }, + { + "type": "PropertyForce", + "name": "ForceY" + }, + { + "type": "PropertyForce", + "name": "ForceZ" + }, + { + "type": "PropertyMoment", + "name": "MomentX" + }, + { + "type": "PropertyMoment", + "name": "MomentY" + }, + { + "type": "PropertyMoment", + "name": "MomentZ" + }, + { + "type": "PropertyEnumeration", + "name": "TranslationalModeX" + }, + { + "type": "PropertyEnumeration", + "name": "TranslationalModeY" + }, + { + "type": "PropertyEnumeration", + "name": "TranslationalModeZ" + }, + { + "type": "PropertyEnumeration", + "name": "RotationalModeX" + }, + { + "type": "PropertyEnumeration", + "name": "RotationalModeY" + }, + { + "type": "PropertyEnumeration", + "name": "RotationalModeZ" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintSpring.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ElmerStiffness", + "NormalStiffness", + "TangentialStiffness" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintSpring.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyStiffness", + "name": "NormalStiffness" + }, + { + "type": "PropertyStiffness", + "name": "TangentialStiffness" + }, + { + "type": "PropertyEnumeration", + "name": "ElmerStiffness" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintTemperature.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AmplitudeValues", + "CFlux", + "ConstraintType", + "EnableAmplitude", + "Temperature" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "TemperatureProperty" + }, + { + "type": "PropertyFloat", + "name": "CFluxProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintTemperature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "EnableAmplitude" + }, + { + "type": "PropertyStringList", + "name": "AmplitudeValues" + }, + { + "type": "PropertyTemperature", + "name": "Temperature" + }, + { + "type": "PropertyPower", + "name": "CFlux" + }, + { + "type": "PropertyEnumeration", + "name": "ConstraintType" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintTransform.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Axis", + "BasePoint", + "NameDispl", + "RefDispl", + "Rotation", + "TransformType" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "X_rotProperty" + }, + { + "type": "PropertyAngle", + "name": "X_rotProperty" + }, + { + "type": "PropertyFloat", + "name": "Y_rotProperty" + }, + { + "type": "PropertyAngle", + "name": "Y_rotProperty" + }, + { + "type": "PropertyFloat", + "name": "Z_rotProperty" + }, + { + "type": "PropertyAngle", + "name": "Z_rotProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemConstraintTransform.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "RefDispl" + }, + { + "type": "PropertyLinkList", + "name": "NameDispl" + }, + { + "type": "PropertyVector", + "name": "BasePoint" + }, + { + "type": "PropertyVector", + "name": "Axis" + }, + { + "type": "PropertyRotation", + "name": "Rotation" + }, + { + "type": "PropertyEnumeration", + "name": "TransformType" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMesh.cpp", + "classes": [ + "CBARElement", + "CHEXA1Element", + "CHEXA2Element", + "CQUAD1Element", + "CTETRAElement", + "CTETRAFreeFieldElement", + "CTETRALongFieldElement", + "CTETRANastran95Element", + "CTETRASmallFieldElement", + "CTRIA1Element", + "CTRIA3Element", + "CTRIA3FreeFieldElement", + "CTRIA3LongFieldElement", + "CTRIA3SmallFieldElement", + "CTRMEMElement", + "CWEDGEElement", + "FemMesh", + "GRIDElement", + "GRIDFreeFieldElement", + "GRIDLongFieldElement", + "GRIDNastran95Element", + "GRIDSmallFieldElement", + "NastranElement" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMesh.h", + "classes": [ + "ABAQUS_EdgeVariant", + "ABAQUS_FaceVariant", + "ABAQUS_VolumeVariant", + "FemMeshInfo" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMeshObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FemMesh" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Fineness", + "GrowthRate", + "MaxSize", + "MinSize", + "NbSegsPerEdge", + "NbSegsPerRadius", + "Optimize", + "SecondOrder" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMeshShapeNetgenObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "MaxSize" + }, + { + "type": "PropertyFloat", + "name": "MinSize" + }, + { + "type": "PropertyBool", + "name": "SecondOrder" + }, + { + "type": "PropertyEnumeration", + "name": "Fineness" + }, + { + "type": "PropertyFloat", + "name": "GrowthRate" + }, + { + "type": "PropertyInteger", + "name": "NbSegsPerEdge" + }, + { + "type": "PropertyInteger", + "name": "NbSegsPerRadius" + }, + { + "type": "PropertyBool", + "name": "Optimize" + }, + { + "type": "PropertyLink", + "name": "Shape" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMeshShapeObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Shape", + "Tool", + "WorkingDirectory" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemMeshShapeObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Shape" + }, + { + "type": "PropertyPythonObject", + "name": "Tool" + }, + { + "type": "PropertyPath", + "name": "WorkingDirectory" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostBranchFilter.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Output" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostBranchFilter.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Output" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostFilter.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Center", + "CutCells", + "Factor", + "Field", + "FieldName", + "Frame", + "Function", + "InsideOut", + "NoColor", + "NumberOfContours", + "PlotData", + "PlotDataComponent", + "Point1", + "Point2", + "PointData", + "ReplaceInvalid", + "ReplacementValue", + "Resolution", + "Scalars", + "Unit", + "Value", + "Vector", + "VectorMode", + "XAxisData", + "YAxisData" + ], + "propertyMembers": [ + { + "type": "PropertyVector", + "name": "Point1Property" + }, + { + "type": "PropertyVector", + "name": "Point2Property" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostFilter.h", + "classes": [ + "FilterPipeline", + "TransformLocation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "Frame" + }, + { + "type": "PropertyBool", + "name": "BoundarySmoothing" + }, + { + "type": "PropertyAngle", + "name": "EdgeAngle" + }, + { + "type": "PropertyBool", + "name": "EdgeSmoothing" + }, + { + "type": "PropertyBool", + "name": "EnableSmoothing" + }, + { + "type": "PropertyAngle", + "name": "FeatureAngle" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Iterations" + }, + { + "type": "PropertyFloatConstraint", + "name": "RelaxationFactor" + }, + { + "type": "PropertyVectorDistance", + "name": "Point1" + }, + { + "type": "PropertyVectorDistance", + "name": "Point2" + }, + { + "type": "PropertyInteger", + "name": "Resolution" + }, + { + "type": "PropertyFloatList", + "name": "XAxisData" + }, + { + "type": "PropertyFloatList", + "name": "YAxisData" + }, + { + "type": "PropertyString", + "name": "PlotData" + }, + { + "type": "PropertyEnumeration", + "name": "PlotDataComponent" + }, + { + "type": "PropertyVectorDistance", + "name": "Center" + }, + { + "type": "PropertyString", + "name": "FieldName" + }, + { + "type": "PropertyFloatList", + "name": "PointData" + }, + { + "type": "PropertyString", + "name": "Unit" + }, + { + "type": "PropertyLink", + "name": "Function" + }, + { + "type": "PropertyBool", + "name": "InsideOut" + }, + { + "type": "PropertyBool", + "name": "CutCells" + }, + { + "type": "PropertyEnumeration", + "name": "Field" + }, + { + "type": "PropertyIntegerConstraint", + "name": "NumberOfContours" + }, + { + "type": "PropertyEnumeration", + "name": "VectorMode" + }, + { + "type": "PropertyBool", + "name": "NoColor" + }, + { + "type": "PropertyLink", + "name": "Function" + }, + { + "type": "PropertyBool", + "name": "InsideOut" + }, + { + "type": "PropertyFloatConstraint", + "name": "Value" + }, + { + "type": "PropertyEnumeration", + "name": "Scalars" + }, + { + "type": "PropertyFloat", + "name": "Factor" + }, + { + "type": "PropertyEnumeration", + "name": "Vector" + }, + { + "type": "PropertyString", + "name": "FieldName" + }, + { + "type": "PropertyString", + "name": "Function" + }, + { + "type": "PropertyFloat", + "name": "ReplacementValue" + }, + { + "type": "PropertyBool", + "name": "ReplaceInvalid" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostFunction.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyLinkList" + ], + "propertyRegistrations": [ + "Axis", + "Center", + "Height", + "Length", + "Normal", + "Origin", + "Radius", + "Width" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostFunction.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyVectorDistance", + "name": "Center" + }, + { + "type": "PropertyDistance", + "name": "Length" + }, + { + "type": "PropertyDistance", + "name": "Width" + }, + { + "type": "PropertyDistance", + "name": "Height" + }, + { + "type": "PropertyVector", + "name": "Axis" + }, + { + "type": "PropertyVectorDistance", + "name": "Center" + }, + { + "type": "PropertyDistance", + "name": "Radius" + }, + { + "type": "PropertyVector", + "name": "Normal" + }, + { + "type": "PropertyVectorDistance", + "name": "Origin" + }, + { + "type": "PropertyDistance", + "name": "Radius" + }, + { + "type": "PropertyVectorDistance", + "name": "Center" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostGroupExtension.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Mode" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Data" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostPipeline.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyLink", + "PropertyLinkList" + ], + "propertyRegistrations": [ + "Frame", + "MergeDuplicate" + ], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "filter" + }, + { + "type": "PropertyLink", + "name": "functions" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemPostPipeline.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Frame" + }, + { + "type": "PropertyBool", + "name": "MergeDuplicate" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemResultObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Mesh", + "NodeNumbers", + "Stats", + "Time" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemResultObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyIntegerList", + "name": "NodeNumbers" + }, + { + "type": "PropertyLink", + "name": "Mesh" + }, + { + "type": "PropertyFloat", + "name": "Time" + }, + { + "type": "PropertyFloatList", + "name": "Stats" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSetElementNodesObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Elements" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSetElementNodesObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyIntegerSet", + "name": "Elements" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSetNodesObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Nodes" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSetNodesObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyIntegerSet", + "name": "Nodes" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSetObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FemMesh" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSetObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "FemMesh" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSolverObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Results", + "Tool", + "WorkingDirectory" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemSolverObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Results" + }, + { + "type": "PropertyPythonObject", + "name": "Tool" + }, + { + "type": "PropertyPath", + "name": "WorkingDirectory" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/FemVTKTools.cpp", + "classes": [ + "AnalysisType", + "ElementType", + "FRDResultInfo", + "Indicator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/HypothesisPy.h", + "classes": [ + "HypothesisPy", + "SMESH_HypothesisPy", + "StdMeshers_Arithmetic1DPy", + "StdMeshers_AutomaticLengthPy", + "StdMeshers_CompositeSegment_1DPy", + "StdMeshers_Deflection1DPy", + "StdMeshers_Hexa_3DPy", + "StdMeshers_LayerDistributionPy", + "StdMeshers_LengthFromEdgesPy", + "StdMeshers_LocalLengthPy", + "StdMeshers_MEFISTO_2DPy", + "StdMeshers_MaxElementAreaPy", + "StdMeshers_MaxElementVolumePy", + "StdMeshers_MaxLengthPy", + "StdMeshers_NotConformAllowedPy", + "StdMeshers_NumberOfLayersPy", + "StdMeshers_NumberOfSegmentsPy", + "StdMeshers_Prism_3DPy", + "StdMeshers_ProjectionSource1DPy", + "StdMeshers_ProjectionSource2DPy", + "StdMeshers_ProjectionSource3DPy", + "StdMeshers_Projection_1DPy", + "StdMeshers_Projection_2DPy", + "StdMeshers_Projection_3DPy", + "StdMeshers_QuadranglePreferencePy", + "StdMeshers_Quadrangle_2DPy", + "StdMeshers_QuadraticMeshPy", + "StdMeshers_RadialPrism_3DPy", + "StdMeshers_Regular_1DPy", + "StdMeshers_SegmentAroundVertex_0DPy", + "StdMeshers_SegmentLengthAroundVertexPy", + "StdMeshers_StartEndLengthPy", + "StdMeshers_TrianglePreferencePy", + "StdMeshers_UseExisting_1DPy", + "StdMeshers_UseExisting_2DPy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/VTKExtensions/vtkFemFrameSourceAlgorithm.h", + "classes": [ + "vtkFemFrameSourceAlgorithm" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/App/VTKExtensions/vtkSMPTools.h", + "classes": [ + "Config", + "V", + "vtkSMPTools_Has_Initialize", + "vtkSMPTools_Has_Initialize_const", + "vtkSMPTools_Lookup_For", + "vtkSMPTools_Lookup_RangeFor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/CreateLabels.py", + "classes": [ + "createLabel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/AbaqusHighlighter.h", + "classes": [ + "AbaqusHighlighter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ActiveAnalysisObserver.h", + "classes": [ + "ActiveAnalysisObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/AppFemGuiPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject", + "Feature", + "FemMeshObject", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemCcxImp.h", + "classes": [ + "DlgSettingsFemCcxImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemElmerImp.h", + "classes": [ + "DlgSettingsFemElmerImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemExportAbaqusImp.h", + "classes": [ + "DlgSettingsFemExportAbaqusImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemGeneralImp.h", + "classes": [ + "DlgSettingsFemGeneralImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemGmshImp.h", + "classes": [ + "DlgSettingsFemGmshImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.h", + "classes": [ + "DlgSettingsFemInOutVtkImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemMystranImp.h", + "classes": [ + "DlgSettingsFemMystranImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/DlgSettingsFemZ88Imp.h", + "classes": [ + "DlgSettingsFemZ88Imp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/FemSelectionGate.h", + "classes": [ + "FemSelectionGate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/FemSettings.h", + "classes": [ + "FemSettings" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/PropertyFemMeshItem.h", + "classes": [ + "PropertyFemMeshItem" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskAnalysisInfo.h", + "classes": [ + "TaskAnalysisInfo" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskCreateElementSet.cpp", + "classes": [], + "typeIdSymbols": [ + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskCreateElementSet.h", + "classes": [ + "TaskCreateElementSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskCreateNodeSet.cpp", + "classes": [], + "typeIdSymbols": [ + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskCreateNodeSet.h", + "classes": [ + "TaskCreateNodeSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskDlgAnalysis.h", + "classes": [ + "TaskDlgAnalysis" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskDlgCreateElementSet.h", + "classes": [ + "TaskDlgCreateElementSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskDlgCreateNodeSet.h", + "classes": [ + "TaskDlgCreateNodeSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.h", + "classes": [ + "TaskDlgMeshShapeNetgen" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskDriver.h", + "classes": [ + "TaskDriver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraint.h", + "classes": [ + "TaskDlgFemConstraint", + "TaskFemConstraint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintBearing.h", + "classes": [ + "TaskDlgFemConstraintBearing", + "TaskFemConstraintBearing" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintContact.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintContact.h", + "classes": [ + "TaskDlgFemConstraintContact", + "TaskFemConstraintContact" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintDisplacement.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintDisplacement.h", + "classes": [ + "TaskDlgFemConstraintDisplacement", + "TaskFemConstraintDisplacement" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintFixed.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintFixed.h", + "classes": [ + "TaskDlgFemConstraintFixed", + "TaskFemConstraintFixed" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "FemAnalysis" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.h", + "classes": [ + "TaskDlgFemConstraintFluidBoundary", + "TaskFemConstraintFluidBoundary" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintForce.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "Line", + "Plane" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintForce.h", + "classes": [ + "TaskDlgFemConstraintForce", + "TaskFemConstraintForce" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintGear.h", + "classes": [ + "TaskDlgFemConstraintGear", + "TaskFemConstraintGear" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintHeatflux.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintHeatflux.h", + "classes": [ + "TaskDlgFemConstraintHeatflux", + "TaskFemConstraintHeatflux" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintInitialTemperature.h", + "classes": [ + "TaskDlgFemConstraintInitialTemperature", + "TaskFemConstraintInitialTemperature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintOnBoundary.h", + "classes": [ + "SelectionChangeModes", + "TaskFemConstraintOnBoundary" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintPlaneRotation.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintPlaneRotation.h", + "classes": [ + "TaskDlgFemConstraintPlaneRotation", + "TaskFemConstraintPlaneRotation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintPressure.h", + "classes": [ + "TaskDlgFemConstraintPressure", + "TaskFemConstraintPressure" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintPulley.h", + "classes": [ + "TaskDlgFemConstraintPulley", + "TaskFemConstraintPulley" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintRigidBody.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintRigidBody.h", + "classes": [ + "TaskDlgFemConstraintRigidBody", + "TaskFemConstraintRigidBody" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintSpring.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintSpring.h", + "classes": [ + "TaskDlgFemConstraintSpring", + "TaskFemConstraintSpring" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintTemperature.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintTemperature.h", + "classes": [ + "TaskDlgFemConstraintTemperature", + "TaskFemConstraintTemperature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintTransform.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskFemConstraintTransform.h", + "classes": [ + "TaskDlgFemConstraintTransform", + "TaskFemConstraintTransform" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskObjectName.h", + "classes": [ + "TaskObjectName" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskPostBoxes.cpp", + "classes": [], + "typeIdSymbols": [ + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskPostBoxes.h", + "classes": [ + "DataAlongLineMarker", + "PointMarker", + "TaskDlgPost", + "TaskPostBranch", + "TaskPostCalculator", + "TaskPostClip", + "TaskPostContours", + "TaskPostCut", + "TaskPostDataAlongLine", + "TaskPostDataAtPoint", + "TaskPostDisplay", + "TaskPostFrames", + "TaskPostFunction", + "TaskPostScalarClip", + "TaskPostWarpVector", + "TaskPostWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskPostExtraction.h", + "classes": [ + "TaskPostExtraction" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/TaskTetParameter.h", + "classes": [ + "TaskTetParameter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderAnalysis.h", + "classes": [ + "ViewProviderFemHighlighter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemConstraint.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyColor", + "PropertyMaterial" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColor", + "name": "color" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemMesh.cpp", + "classes": [ + "FemFace", + "FemFaceGridItem", + "Private" + ], + "typeIdSymbols": [ + "SoCoordinate3", + "SoFaceDetail", + "SoIndexedFaceSet", + "SoLineDetail", + "SoPointDetail" + ], + "propertyRegistrations": [ + "BackfaceCulling", + "ColorMode", + "ElementColorArray", + "LineWidth", + "MaxFacesShowInner", + "NodeColorArray", + "PointColor", + "PointSize", + "ShowInner" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemMesh.h", + "classes": [ + "ViewProviderFEMMeshBuilder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColor", + "name": "PointColor" + }, + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + }, + { + "type": "PropertyFloatConstraint", + "name": "LineWidth" + }, + { + "type": "PropertyBool", + "name": "BackfaceCulling" + }, + { + "type": "PropertyBool", + "name": "ShowInner" + }, + { + "type": "PropertyInteger", + "name": "MaxFacesShowInner" + }, + { + "type": "PropertyEnumeration", + "name": "ColorMode" + }, + { + "type": "PropertyColorList", + "name": "NodeColorArray" + }, + { + "type": "PropertyColorList", + "name": "ElementColorArray" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "PointSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemPostFilter.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AutoScaleFactorX", + "AutoScaleFactorY", + "AutoScaleFactorZ", + "Scale" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemPostFunction.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "SizeX" + }, + { + "type": "PropertyFloat", + "name": "SizeY" + }, + { + "type": "PropertyFloat", + "name": "SizeZ" + }, + { + "type": "PropertyFloat", + "name": "AutoScaleFactorX" + }, + { + "type": "PropertyFloat", + "name": "AutoScaleFactorY" + }, + { + "type": "PropertyFloat", + "name": "AutoScaleFactorZ" + }, + { + "type": "PropertyFloatConstraint", + "name": "Scale" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp", + "classes": [ + "FemPostObjectSelectionObserver" + ], + "typeIdSymbols": [ + "SoFCColorBar" + ], + "propertyRegistrations": [ + "Component", + "EdgeColor", + "Field", + "LineWidth", + "PlainColorEdgeOnSurface", + "PointSize", + "Transparency" + ], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "field" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderFemPostObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Field" + }, + { + "type": "PropertyEnumeration", + "name": "Component" + }, + { + "type": "PropertyPercent", + "name": "Transparency" + }, + { + "type": "PropertyBool", + "name": "PlainColorEdgeOnSurface" + }, + { + "type": "PropertyColor", + "name": "EdgeColor" + }, + { + "type": "PropertyFloatConstraint", + "name": "LineWidth" + }, + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderSetElementNodes.h", + "classes": [ + "ViewProviderSetElementNodes" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderSetElements.h", + "classes": [ + "ViewProviderSetElements" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderSetFaces.h", + "classes": [ + "ViewProviderSetFaces" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderSetGeometry.h", + "classes": [ + "ViewProviderSetGeometry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/Gui/ViewProviderSetNodes.h", + "classes": [ + "ViewProviderSetNodes" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femcommands/commands.py", + "classes": [ + "_SolverCalculixContextManager" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femcommands/manager.py", + "classes": [ + "CommandManager" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femguiutils/disambiguate_solid_selection.py", + "classes": [ + "HighlightContext" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femguiutils/migrate_gui.py", + "classes": [ + "FemMigrateGui" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femguiutils/post_visualization.py", + "classes": [ + "_Extraction", + "_Visualization", + "_VisualizationCommand", + "_VisualizationGroupCommand" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femguiutils/selection_widgets.py", + "classes": [ + "FemSelectionObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/feminout/importFenicsMesh.py", + "classes": [ + "WriteXDMFTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/feminout/importInpMesh.py", + "classes": [ + "elements" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femmesh/meshsetsgetter.py", + "classes": [ + "MeshSetsGetter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/base_fempythonobject.py", + "classes": [ + "BaseFemPythonObject", + "_PropHelper" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/constant_vacuumpermittivity.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVacuumPermittivity\"", + "name": "VacuumPermittivity" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/constraint_flowvelocity.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVelocity\"", + "name": "VelocityX" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "VelocityXFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityXUnspecified" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityXHasFormula" + }, + { + "typeExpression": "\"App::PropertyVelocity\"", + "name": "VelocityY" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "VelocityYFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityYUnspecified" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityYHasFormula" + }, + { + "typeExpression": "\"App::PropertyVelocity\"", + "name": "VelocityZ" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "VelocityZFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityZUnspecified" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityZHasFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "NormalToBoundary" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/constraint_initialflowvelocity.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVelocity\"", + "name": "VelocityX" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "VelocityXFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityXUnspecified" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityXHasFormula" + }, + { + "typeExpression": "\"App::PropertyVelocity\"", + "name": "VelocityY" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "VelocityYFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityYUnspecified" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityYHasFormula" + }, + { + "typeExpression": "\"App::PropertyVelocity\"", + "name": "VelocityZ" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "VelocityZFormula" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityZUnspecified" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "VelocityZHasFormula" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/constraint_initialpressure.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyPressure\"", + "name": "Pressure" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/constraint_selfweight.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyAcceleration\"", + "name": "GravityAcceleration" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "GravityDirection" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/element_fluid1D.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SectionType" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LiquidSectionType" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "ManningArea" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ManningRadius" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "ManningCoefficient" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "EnlargeArea1" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "EnlargeArea2" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "ContractArea1" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "ContractArea2" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "InletPressure" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "OutletPressure" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "InletFlowRate" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "OutletFlowRate" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InletPressureActive" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OutletPressureActive" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InletFlowRateActive" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "OutletFlowRateActive" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "EntrancePipeArea" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "EntranceArea" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "DiaphragmPipeArea" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "DiaphragmArea" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "BendPipeArea" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "BendRadiusDiameter" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "BendAngle" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "BendLossCoefficient" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "GateValvePipeArea" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "GateValveClosingCoeff" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "PumpFlowRate" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "PumpHeadLoss" + }, + { + "typeExpression": "\"App::PropertyArea\"", + "name": "ColebrookeArea" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ColebrookeRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "ColebrookeGrainDiameter" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "ColebrookeFormFactor" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "GasSectionType" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ChannelSectionType" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/element_rotation1D.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Rotation" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/material_mechanicalnonlinear.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "LinearBaseMaterial" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "MaterialModelNonlinearity" + }, + { + "typeExpression": "\"App::PropertyStringList\"", + "name": "YieldPoints" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/mesh_boundarylayer.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "NumberOfLayers" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "MinimumThickness" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "GrowthRate" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/mesh_group.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseLabel" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/mesh_region.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "CharacteristicLength" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femobjects/result_mechanical.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "ResultType" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Eigenmode" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "EigenmodeFrequency" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "DisplacementVectors" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Peeq" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "MohrCoulomb" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "ReinforcementRatio_x" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "ReinforcementRatio_y" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "ReinforcementRatio_z" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "PS1Vector" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "PS2Vector" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "PS3Vector" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "DisplacementLengths" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "vonMises" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "PrincipalMax" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "PrincipalMed" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "PrincipalMin" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "MaxShear" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "MassFlowRate" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NetworkPressure" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "UserDefined" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Temperature" + }, + { + "typeExpression": "\"App::PropertyVectorList\"", + "name": "HeatFlux" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStressXX" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStressYY" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStressZZ" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStressXY" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStressXZ" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStressYZ" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStrainXX" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStrainYY" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStrainZZ" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStrainXY" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStrainXZ" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "NodeStrainYZ" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "CriticalStrainRatio" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "vonMises" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/calculix/solver.py", + "classes": [ + "_BaseSolverCalculix" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AnalysisType" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "GeometricalNonlinearity" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "MaterialNonlinearity" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "EigenmodesCount" + }, + { + "typeExpression": "\"App::PropertyFrequency\"", + "name": "EigenmodeLowLimit" + }, + { + "typeExpression": "\"App::PropertyFrequency\"", + "name": "EigenmodeHighLimit" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "IterationsMaximum" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "BucklingFactors" + }, + { + "typeExpression": "\"App::PropertyTime\"", + "name": "TimeInitialStep" + }, + { + "typeExpression": "\"App::PropertyTime\"", + "name": "TimeEnd" + }, + { + "typeExpression": "\"App::PropertyTime\"", + "name": "TimeMinimumStep" + }, + { + "typeExpression": "\"App::PropertyTime\"", + "name": "TimeMaximumStep" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ThermoMechSteadyState" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IterationsControlParameterTimeUse" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "SplitInputWriter" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "IterationsControlParameterIter" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "IterationsControlParameterCutb" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IterationsUserDefinedIncrementations" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IterationsUserDefinedTimeStepLength" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "MatrixSolverType" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "BeamShellResultOutput3D" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "BeamReducedIntegration" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "OutputFrequency" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ModelSpace" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ThermoMechType" + }, + { + "typeExpression": "\"App::PropertyFloatConstraint\"", + "name": "BucklingAccuracy" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ExcludeBendingStiffness" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PastixMixedPrecision" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/deformation.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculatePangle" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculatePrincipal" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateStrains" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateStresses" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "InitializeStateVariables" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MixedFormulation" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "NeoHookeanMaterial" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PlaneStress" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Variable" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/deformation_writer.py", + "classes": [ + "DeformationWriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/elasticity.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculatePangle" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculatePrincipal" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateStrains" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateStresses" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ConstantBulkSystem" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DisplaceMesh" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenAnalysis" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenSystemComplex" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenSystemComputeResiduals" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenSystemDamped" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "EigenSystemMaxIterations" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "EigenSystemSelect" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "EigenSystemTolerance" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "EigenSystemValues" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FixDisplacement" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "GeometricStiffness" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Incompressible" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MaxwellMaterial" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ModelLumping" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "ModelLumpingFilename" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "StabilityAnalysis" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UpdateTransientSystem" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Variable" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PlaneStress" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/elasticity_writer.py", + "classes": [ + "ElasticityWriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyString\"", + "name": "Variable" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ConstantBulkSystem" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DisplaceMesh" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenAnalysis" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenSystemComplex" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenSystemComputeResiduals" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EigenSystemDamped" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "EigenSystemMaxIterations" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "EigenSystemSelect" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "EigenSystemTolerance" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "EigenSystemValues" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FixDisplacement" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "GeometricStiffness" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Incompressible" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MaxwellMaterial" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ModelLumping" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "ModelLumpingFilename" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PlaneStress" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "StabilityAnalysis" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UpdateTransientSystem" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/electricforce.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ExecSolver" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/electricforce_writer.py", + "classes": [ + "EFwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "ExecSolver" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/electrostatic.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateCapacitanceMatrix" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElectricEnergy" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElectricField" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElectricFlux" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateSurfaceCharge" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "CapacitanceBodies" + }, + { + "typeExpression": "\"App::PropertyFile\"", + "name": "CapacitanceMatrixFilename" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ConstantWeights" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "PotentialDifference" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/electrostatic_writer.py", + "classes": [ + "ESwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyFile\"", + "name": "CapacitanceMatrixFilename" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ConstantWeights" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "PotentialDifference" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/equation.py", + "classes": [ + "_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Priority" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/flow.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DivDiscretization" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FlowModel" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "GradpDiscretization" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Variable" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Convection" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MagneticInduction" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/flow_writer.py", + "classes": [ + "Flowwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Convection" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DivDiscretization" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FlowModel" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "GradpDiscretization" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "MagneticInduction" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Variable" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/flux.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AverageWithinMaterials" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateFlux" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateFluxAbs" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateFluxMagnitude" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateGrad" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateGradAbs" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateGradMagnitude" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DiscontinuousGalerkin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EnforcePositiveMagnitude" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FluxCoefficient" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FluxVariable" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/flux_writer.py", + "classes": [ + "Fluxwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AverageWithinMaterials" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateFluxAbs" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateFluxMagnitude" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateGradAbs" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateGradMagnitude" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DiscontinuousGalerkin" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "EnforcePositiveMagnitude" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FluxCoefficient" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FluxVariable" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/heat.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Bubbles" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Convection" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "PhaseChangeModel" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/heat_writer.py", + "classes": [ + "Heatwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Convection" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "PhaseChangeModel" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/linear.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "BiCGstablDegree" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "IdrsParameter" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LinearDirectMethod" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "LinearIterations" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LinearIterativeMethod" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LinearPreconditioning" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "LinearSolverType" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LinearSystemSolverDisabled" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LinearTolerance" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Stabilize" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "SteadyStateTolerance" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/magnetodynamic.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IsHarmonic" + }, + { + "typeExpression": "\"App::PropertyFrequency\"", + "name": "AngularFrequency" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UsePiolaTransform" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "QuadraticApproximation" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "StaticConductivity" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "FixInputCurrentDensity" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "AutomatedSourceProjectionBCs" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseLagrangeGauge" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "LagrangeGaugePenalizationCoefficient" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "UseTreeGauge" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LinearSystemRefactorize" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateCurrentDensity" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElectricField" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElementalFields" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateHarmonicLoss" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateJouleHeating" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateMagneticFieldStrength" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateMaxwellStress" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalFields" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalForces" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalHeating" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DiscontinuousBodies" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "IsHarmonic" + }, + { + "typeExpression": "\"App::PropertyFrequency\"", + "name": "AngularFrequency" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateCurrentDensity" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElectricField" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateElementalFields" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateHarmonicLoss" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateJouleHeating" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateMagneticFieldStrength" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateMaxwellStress" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalFields" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalForces" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalHeating" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py", + "classes": [ + "MgDyn2Dwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py", + "classes": [ + "MgDynwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/nonlinear.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "NonlinearIterations" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "NonlinearNewtonAfterIterations" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "NonlinearNewtonAfterTolerance" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "NonlinearTolerance" + }, + { + "typeExpression": "\"App::PropertyFloatConstraint\"", + "name": "RelaxationFactor" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/staticcurrent.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateVolumeCurrent" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateJouleHeating" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "ConstantWeights" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CalculateNodalHeating" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "HeatSource" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PowerControl" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "CurrentControl" + }, + { + "typeExpression": "\"App::PropertyElectricCurrent\"", + "name": "Current" + }, + { + "typeExpression": "\"App::PropertyPower\"", + "name": "Power" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/equations/staticcurrent_writer.py", + "classes": [ + "SCwriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/sifio.py", + "classes": [ + "Builder", + "Section", + "Sif", + "_IdManager", + "_Writer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/elmer/writer.py", + "classes": [ + "Writer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyBool\"", + "name": "LinearSystemSolverDisabled" + }, + { + "typeExpression": "\"App::PropertyIntegerConstraint\"", + "name": "IdrsParameter" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/equationbase.py", + "classes": [ + "BaseProxy", + "BaseViewProxy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkSubList\"", + "name": "References" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/fenics/fenics_tools.py", + "classes": [ + "CellExpressionFromXDMF", + "FacetFunctionFromXDMF", + "XDMFReader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/mystran/solver.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AnalysisType" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/report.py", + "classes": [ + "Report" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/run.py", + "classes": [ + "_DocObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/settings.py", + "classes": [ + "DirSetting", + "_SolverDlg" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/solverbase.py", + "classes": [ + "Proxy", + "ViewProxy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/task.py", + "classes": [ + "Task" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/writerbase.py", + "classes": [ + "FemInputWriter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femsolver/z88/solver.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "AnalysisType" + } + ] + }, + { + "sourceFile": "src/Mod/Fem/femtaskpanels/base_femtaskpanel.py", + "classes": [ + "_BaseTaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femtaskpanels/task_result_mechanical.py", + "classes": [ + "_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py", + "classes": [ + "_TaskPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femtools/membertools.py", + "classes": [ + "AnalysisMember" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femtools/migrate_app.py", + "classes": [ + "FemMigrateApp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femviewprovider/view_base_femobject.py", + "classes": [ + "VPBaseFemObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femviewprovider/view_base_fempostextractors.py", + "classes": [ + "VPPostExtractor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femviewprovider/view_base_fempostvisualization.py", + "classes": [ + "VPPostVisualization" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femviewprovider/view_mesh_gmsh.py", + "classes": [ + "VPMeshGmsh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Fem/femviewprovider/view_post_glyphfilter.py", + "classes": [ + "VPPostGlyphFilter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Help", + "sourcePath": "src/Mod/Help", + "sourceFileCount": 2, + "objectSourceCount": 0, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Idf", + "sourcePath": "src/Mod/Idf", + "sourceFileCount": 2, + "objectSourceCount": 0, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Import", + "sourcePath": "src/Mod/Import", + "sourceFileCount": 75, + "objectSourceCount": 19, + "propertyRegistrationCount": 0, + "propertyMemberCount": 2, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Import/App/AppImportPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColorList", + "name": "colors" + }, + { + "type": "PropertyColorList", + "name": "colors" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/ImportOCAF.h", + "classes": [ + "ImportXCAF" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/ImportOCAF2.cpp", + "classes": [ + "ChildInfo" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/ImportOCAF2.h", + "classes": [ + "ImportLegacy", + "Info" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/SCL/BaseType.py", + "classes": [ + "Aggregate", + "line" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/SCL/Part21.py", + "classes": [ + "Model", + "Part21EntityInstance", + "Part21Parser" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/SCL/SCLBase.py", + "classes": [ + "description" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/SCL/SimpleDataTypes.py", + "classes": [ + "LOGICAL", + "NUMBER" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/SCL/SimpleReader.py", + "classes": [ + "SimpleParser" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/Tools.h", + "classes": [ + "LabelHasher", + "ShapeHasher", + "Tools" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/dxf/ImpExpDxf.h", + "classes": [ + "Block", + "BlockDefinitionCollector", + "DrawingEntityCollector", + "EntityCollector", + "GeometryBuilder", + "ImportMode", + "Insert", + "Layer", + "PolylineEntityCollector", + "PrimitiveType", + "ShapeSavingEntityCollector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/App/dxf/dxf.h", + "classes": [ + "CommonEntityAttributes", + "DxfImportStats", + "DxfUnits", + "LWPolyDataOut", + "Layer", + "SplineData", + "SplineDataOut", + "VertexInfo", + "point3D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/AppImportGuiPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/ExportOCAFGui.h", + "classes": [ + "ExportOCAFGui" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/ImportOCAFGui.h", + "classes": [ + "ImportOCAFGui" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/OCAFBrowser.h", + "classes": [ + "OCAFBrowser" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/Workbench.h", + "classes": [ + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/dxf/ImpExpDxfGui.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyColor" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Import/Gui/dxf/ImpExpDxfGui.h", + "classes": [ + "ImpExpDxfReadGui" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Inspection", + "sourcePath": "src/Mod/Inspection", + "sourceFileCount": 16, + "objectSourceCount": 10, + "propertyRegistrationCount": 7, + "propertyMemberCount": 6, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Inspection/App/AppInspection.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/App/InspectionFeature.cpp", + "classes": [ + "DistanceInspection", + "DistanceInspectionRMS", + "MeshInspectGrid" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Actual", + "Distances", + "Nominals", + "SearchRadius", + "Thickness" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/App/InspectionFeature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "SearchRadius" + }, + { + "type": "PropertyFloat", + "name": "Thickness" + }, + { + "type": "PropertyLink", + "name": "Actual" + }, + { + "type": "PropertyLinkList", + "name": "Nominals" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/AppInspectionGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "SoButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/ViewProviderInspection.cpp", + "classes": [ + "ViewProviderProxyObject" + ], + "typeIdSymbols": [ + "GLFlagWindow", + "SoButtonEvent", + "SoCoordinate3", + "SoFCColorBar", + "SoFaceDetail", + "SoKeyboardEvent", + "SoMouseButtonEvent", + "SoPointDetail" + ], + "propertyRegistrations": [ + "OutsideGrayed", + "PointSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/ViewProviderInspection.h", + "classes": [ + "ViewProviderInspection", + "ViewProviderInspectionGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "OutsideGrayed" + }, + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/VisualInspection.cpp", + "classes": [ + "SingleSelectionItem" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/VisualInspection.h", + "classes": [ + "VisualInspection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Inspection/Gui/Workbench.h", + "classes": [ + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "JtReader", + "sourcePath": "src/Mod/JtReader", + "sourceFileCount": 26, + "objectSourceCount": 17, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/JtReader/App/AppJtReaderPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/FcLodHandler.h", + "classes": [ + "FcLodHandler" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/Context.h", + "classes": [ + "Context" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/Element_Header.h", + "classes": [ + "Element_Header" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/GUID.h", + "classes": [ + "GUID" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/I32.h", + "classes": [ + "I32" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/JtReader.h", + "classes": [ + "JtReader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/LodHandler.h", + "classes": [ + "LodHandler" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/Segment_Header.h", + "classes": [ + "Segment_Header" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/TOC_Entry.h", + "classes": [ + "TOC_Entry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/U16.h", + "classes": [ + "U16" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/U32.h", + "classes": [ + "U32" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/U8.h", + "classes": [ + "U8" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JrJt/UChar.h", + "classes": [ + "UChar" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/JtReader.h", + "classes": [ + "SimpleMeshFacet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/TKJtReader.h", + "classes": [ + "TKJtReader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/JtReader/App/TestJtReader.h", + "classes": [ + "TestJtReader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Material", + "sourcePath": "src/Mod/Material", + "sourceFileCount": 133, + "objectSourceCount": 37, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Material/App/AppMaterial.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/App/Exceptions.h", + "classes": [ + "ConnectionError", + "CreationError", + "DeleteError", + "InvalidIndex", + "InvalidLibrary", + "InvalidMaterial", + "InvalidMaterialType", + "InvalidModel", + "InvalidProperty", + "LibraryNotFound", + "MaterialExists", + "MaterialNotFound", + "MaterialReadError", + "ModelNotFound", + "MoveError", + "PropertyNotFound", + "RenameError", + "ReplacementError", + "Uninitialized", + "UnknownValueType", + "UpdateError" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/App/FolderTree.h", + "classes": [ + "FolderTreeNode", + "NodeType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/App/MaterialAPI/MaterialManagerExternal.py", + "classes": [ + "MaterialLibraryObjectType", + "MaterialLibraryType", + "MaterialObjectType", + "ModelObjectType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/App/MaterialConfigLoader.h", + "classes": [ + "MaterialConfigLoader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/App/MaterialLoader.h", + "classes": [ + "MaterialEntry", + "MaterialLoader", + "MaterialYamlEntry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/App/ModelLoader.h", + "classes": [ + "ModelEntry", + "ModelLoader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/AppMatGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/AppearancePreview.cpp", + "classes": [], + "typeIdSymbols": [ + "SoOrthographicCamera" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/AppearancePreview.h", + "classes": [ + "AppearancePreview", + "AppearanceSettings" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/Array2D.h", + "classes": [ + "Array2D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/Array3D.h", + "classes": [ + "Array3D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ArrayDelegate.h", + "classes": [ + "ArrayDelegate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ArrayModel.h", + "classes": [ + "AbstractArrayModel", + "Array2DModel", + "Array3DDepthModel", + "Array3DModel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/BaseDelegate.h", + "classes": [ + "BaseDelegate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgDisplayPropertiesImp.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgDisplayPropertiesImp.h", + "classes": [ + "DlgDisplayPropertiesImp", + "TaskDisplayProperties" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgInspectAppearance.h", + "classes": [ + "ColorWidget", + "DlgInspectAppearance", + "TaskInspectAppearance" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgInspectMaterial.h", + "classes": [ + "DlgInspectMaterial", + "TaskInspectMaterial" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgMaterialImp.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgMaterialImp.h", + "classes": [ + "DlgMaterialImp", + "TaskMaterial" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgSettingsDefaultMaterial.h", + "classes": [ + "DlgSettingsDefaultMaterial" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgSettingsExternal.h", + "classes": [ + "DlgSettingsExternal" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/DlgSettingsMaterial.h", + "classes": [ + "DlgSettingsMaterial" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ImageEdit.h", + "classes": [ + "ImageEdit", + "ImageLabel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ListDelegate.h", + "classes": [ + "ListDelegate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ListEdit.h", + "classes": [ + "ListEdit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ListModel.h", + "classes": [ + "ListModel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/MaterialDelegate.h", + "classes": [ + "MaterialDelegate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/MaterialSave.h", + "classes": [ + "MaterialSave" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/MaterialTreeWidget.h", + "classes": [ + "Gui" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/MaterialsEditor.h", + "classes": [ + "MaterialsEditor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/ModelSelect.h", + "classes": [ + "ModelSelect" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/TaskMigrateExternal.h", + "classes": [ + "DlgMigrateExternal", + "TaskMigrateExternal" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/TextEdit.h", + "classes": [ + "TextEdit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/Gui/WorkbenchManipulator.h", + "classes": [ + "WorkbenchManipulator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Material/MaterialEditor.py", + "classes": [ + "MaterialEditor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Measure", + "sourcePath": "src/Mod/Measure", + "sourceFileCount": 48, + "objectSourceCount": 27, + "propertyRegistrationCount": 25, + "propertyMemberCount": 32, + "pythonPropertyCount": 2, + "objects": [ + { + "sourceFile": "src/Mod/Measure/App/AppMeasure.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/AppMeasurePy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureAngle.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Element1", + "Element2" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureAngle.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Element1" + }, + { + "type": "PropertyLinkSub", + "name": "Element2" + }, + { + "type": "PropertyAngle", + "name": "Angle" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureArea.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Area", + "Elements" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureArea.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "Elements" + }, + { + "type": "PropertyArea", + "name": "Area" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureBase.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Placement" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureBase.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyPlacement", + "name": "Placement" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureDistance.cpp", + "classes": [], + "typeIdSymbols": [ + "MeasureDistanceType" + ], + "propertyRegistrations": [ + "Distance", + "DistanceX", + "DistanceY", + "DistanceZ", + "Element1", + "Element2", + "Position1", + "Position2" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureDistance.h", + "classes": [ + "MeasureDistanceType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Element1" + }, + { + "type": "PropertyLinkSub", + "name": "Element2" + }, + { + "type": "PropertyDistance", + "name": "Distance" + }, + { + "type": "PropertyDistance", + "name": "DistanceX" + }, + { + "type": "PropertyDistance", + "name": "DistanceY" + }, + { + "type": "PropertyDistance", + "name": "DistanceZ" + }, + { + "type": "PropertyVector", + "name": "Position1" + }, + { + "type": "PropertyVector", + "name": "Position2" + }, + { + "type": "PropertyDistance", + "name": "Distance" + }, + { + "type": "PropertyDistance", + "name": "DistanceX" + }, + { + "type": "PropertyDistance", + "name": "DistanceY" + }, + { + "type": "PropertyDistance", + "name": "DistanceZ" + }, + { + "type": "PropertyVector", + "name": "Position1" + }, + { + "type": "PropertyVector", + "name": "Position2" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureLength.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Elements", + "Length" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureLength.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "Elements" + }, + { + "type": "PropertyDistance", + "name": "Length" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasurePosition.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Element", + "Position" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasurePosition.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Element" + }, + { + "type": "PropertyPosition", + "name": "Position" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureRadius.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Element", + "Radius" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/MeasureRadius.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Element" + }, + { + "type": "PropertyDistance", + "name": "Radius" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/App/Measurement.h", + "classes": [ + "MeasureType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "References3D" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/AppMeasureGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/DlgPrefsMeasureAppearanceImp.h", + "classes": [ + "DlgPrefsMeasureAppearanceImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/QuickMeasure.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/QuickMeasure.h", + "classes": [ + "QuickMeasure" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/TaskMeasure.h", + "classes": [ + "TaskMeasure" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp", + "classes": [], + "typeIdSymbols": [ + "SoMFVec3f" + ], + "propertyRegistrations": [ + "FontSize", + "LineColor", + "TextBackgroundColor", + "TextColor" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/ViewProviderMeasureBase.h", + "classes": [ + "ViewProviderMeasureArea", + "ViewProviderMeasureCOM", + "ViewProviderMeasureLength", + "ViewProviderMeasurePosition", + "ViewProviderMeasureRadius" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColor", + "name": "TextColor" + }, + { + "type": "PropertyColor", + "name": "TextBackgroundColor" + }, + { + "type": "PropertyColor", + "name": "LineColor" + }, + { + "type": "PropertyInteger", + "name": "FontSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp", + "classes": [], + "typeIdSymbols": [ + "SoMFVec3f" + ], + "propertyRegistrations": [ + "ShowDelta" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/Gui/ViewProviderMeasureDistance.h", + "classes": [ + "DimensionLinear" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ShowDelta" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Measure/MeasureCOM.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkSubGlobal\"", + "name": "Element" + }, + { + "typeExpression": "\"App::PropertyPosition\"", + "name": "Result" + } + ] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Mesh", + "sourcePath": "src/Mod/Mesh", + "sourceFileCount": 348, + "objectSourceCount": 139, + "propertyRegistrationCount": 44, + "propertyMemberCount": 64, + "pythonPropertyCount": 1, + "objects": [ + { + "sourceFile": "src/Mod/Mesh/App/AppMeshPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Algorithm.h", + "classes": [ + "EdgeOrder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Approximation.cpp", + "classes": [ + "LMCylinderFunctor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Approximation.h", + "classes": [ + "FunctionContainer", + "PolynomialSurface" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Builder.cpp", + "classes": [ + "Private", + "Vertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Builder.h", + "classes": [ + "Edge" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Curvature.cpp", + "classes": [ + "FitPointCollector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Definitions.h", + "classes": [ + "Math" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Degeneration.cpp", + "classes": [ + "MeshFacet_EqualTo", + "MeshFacet_Less", + "Vertex_EqualTo", + "Vertex_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Elements.h", + "classes": [ + "MeshFacet", + "MeshIsFlag", + "MeshIsNotFlag", + "MeshResetFlag", + "MeshSetFlag" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Evaluation.cpp", + "classes": [ + "Edge_Index", + "Edge_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Grid.h", + "classes": [ + "GridElement" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Helpers.h", + "classes": [ + "MeshEdgeBuilder", + "MeshPointBuilder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/IO/Reader3MF.h", + "classes": [ + "Component" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/IO/ReaderOBJ.cpp", + "classes": [ + "ReaderOBJImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/IO/ReaderPLY.h", + "classes": [ + "PropertyComp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/IO/Writer3MF.h", + "classes": [ + "Resource3MF" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/IO/WriterInventor.cpp", + "classes": [ + "WriterInventorImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/IO/WriterOBJ.cpp", + "classes": [ + "Color_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Iterator.h", + "classes": [ + "MeshFacetIterator", + "MeshFastFacetIterator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/KDTree.cpp", + "classes": [ + "Point3d", + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/MeshIO.cpp", + "classes": [ + "NODE", + "QUAD", + "TRIA", + "ZipFixer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/MeshIO.h", + "classes": [ + "MeshCleanup", + "MeshPointFacetAdjacency" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/SetOperations.h", + "classes": [ + "CollectFacetVisitor", + "Edge", + "EdgeInfo", + "Pair", + "Triple", + "Tuple" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Simplify.h", + "classes": [ + "Ref", + "Simplify", + "SymmetricMatrix", + "Triangle", + "Vertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Tools.h", + "classes": [ + "CDistRad", + "MeshFaceIterator", + "MeshNearestIndexToPlane", + "MeshSearchNeighbours", + "MeshVertexIterator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/TopoAlgorithm.h", + "classes": [ + "CNofFacetsCompare", + "Vertex_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Triangulation.cpp", + "classes": [ + "Vertex2d_EqualTo", + "Vertex2d_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Triangulation.h", + "classes": [ + "Triangulate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Core/Visitor.h", + "classes": [ + "MeshPlaneVisitor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Exporter.cpp", + "classes": [ + "Private", + "VertLess" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FacetPyImp.cpp", + "classes": [ + "Index" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshCurvature.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CurvInfo", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshCurvature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshDefects.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Epsilon", + "FillupHolesOfLength", + "MaxAngle", + "MaxArea", + "RemoveCompOfSize", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshDefects.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyFloat", + "name": "Epsilon" + }, + { + "type": "PropertyFloat", + "name": "MaxAngle" + }, + { + "type": "PropertyInteger", + "name": "FillupHolesOfLength" + }, + { + "type": "PropertyFloat", + "name": "MaxArea" + }, + { + "type": "PropertyInteger", + "name": "RemoveCompOfSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshExport.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FileName", + "Format", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshExport.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyString", + "name": "FileName" + }, + { + "type": "PropertyString", + "name": "Format" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshImport.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FileName" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshImport.h", + "classes": [ + "Import" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFile", + "name": "FileName" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshSegmentByMesh.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "Normal", + "Source", + "Tool" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshSegmentByMesh.h", + "classes": [ + "SegmentByMesh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyLink", + "name": "Tool" + }, + { + "type": "PropertyVector", + "name": "Base" + }, + { + "type": "PropertyVector", + "name": "Normal" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshSetOperations.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "OperationType", + "Source1", + "Source2" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshSetOperations.h", + "classes": [ + "SetOperations" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source1" + }, + { + "type": "PropertyLink", + "name": "Source2" + }, + { + "type": "PropertyString", + "name": "OperationType" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshSolid.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Closed", + "EdgeLength", + "Height", + "Length", + "Radius", + "Radius1", + "Radius2", + "Sampling", + "Width" + ], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "r" + }, + { + "type": "PropertyFloatConstraint", + "name": "r" + }, + { + "type": "PropertyFloatConstraint", + "name": "r" + }, + { + "type": "PropertyFloatConstraint", + "name": "r" + }, + { + "type": "PropertyFloatConstraint", + "name": "r" + }, + { + "type": "PropertyFloatConstraint", + "name": "r" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshSolid.h", + "classes": [ + "Cone", + "Cube", + "Cylinder", + "Ellipsoid", + "Sphere", + "Torus" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Sampling" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Sampling" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "EdgeLength" + }, + { + "type": "PropertyBool", + "name": "Closed" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Sampling" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "EdgeLength" + }, + { + "type": "PropertyBool", + "name": "Closed" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Sampling" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Sampling" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Width" + }, + { + "type": "PropertyLength", + "name": "Height" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshTransform.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Position", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshTransform.h", + "classes": [ + "Transform" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyMatrix", + "name": "Position" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshTransformDemolding.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Axis", + "Rotation", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/FeatureMeshTransformDemolding.h", + "classes": [ + "TransformDemolding" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyFloat", + "name": "Rotation" + }, + { + "type": "PropertyVector", + "name": "Axis" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/Importer.h", + "classes": [ + "Importer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/MeshFeature.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Mesh" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/MeshProperties.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyVector", + "name": "val" + }, + { + "type": "PropertyVector", + "name": "val" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/MeshPyImp.cpp", + "classes": [ + "MeshPropertyLock" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/MeshTestsApp.py", + "classes": [ + "FilterAngle" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"Mesh::PropertyMaterial\"", + "name": "Material" + } + ] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4BandedMatrix.h", + "classes": [ + "BandedMatrix" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Box2.h", + "classes": [ + "Box2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Box3.h", + "classes": [ + "Box3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4GMatrix.h", + "classes": [ + "GMatrix" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4GVector.h", + "classes": [ + "GVector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4IntrTriangle2Triangle2.h", + "classes": [ + "Configuration" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4LinComp.h", + "classes": [ + "LinComp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Line3.h", + "classes": [ + "Line3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Mapper2.h", + "classes": [ + "Mapper2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Mapper3.h", + "classes": [ + "Mapper3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Math.h", + "classes": [ + "Math" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Matrix2.h", + "classes": [ + "Matrix2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Matrix3.h", + "classes": [ + "Matrix3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Matrix4.h", + "classes": [ + "Matrix4" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Memory.h", + "classes": [ + "Block" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Plane3.h", + "classes": [ + "Plane3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Platforms.h", + "classes": [ + "Binary2D", + "Binary3D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Polynomial1.h", + "classes": [ + "Polynomial1" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4QuadricSurface.h", + "classes": [ + "RReps" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Quaternion.h", + "classes": [ + "Constraints", + "Quaternion" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query.h", + "classes": [ + "Query" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query2.h", + "classes": [ + "Query2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query2Filtered.h", + "classes": [ + "Query2Filtered" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query2Int64.h", + "classes": [ + "Query2Int64" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query2TInteger.h", + "classes": [ + "Query2TInteger" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query2TRational.h", + "classes": [ + "Query2TRational" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query3.h", + "classes": [ + "Query3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query3Filtered.h", + "classes": [ + "Query3Filtered" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query3Int64.h", + "classes": [ + "Query3Int64" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query3TInteger.h", + "classes": [ + "Query3TInteger" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Query3TRational.h", + "classes": [ + "Query3TRational" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4RVector2.h", + "classes": [ + "RVector2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4RVector3.h", + "classes": [ + "RVector3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Segment3.h", + "classes": [ + "Segment3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Sphere3.h", + "classes": [ + "Sphere3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4THashSet.h", + "classes": [ + "HashItem", + "THashSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4THashTable.h", + "classes": [ + "HashItem", + "THashTable" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TInteger.h", + "classes": [ + "TInteger" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TMinHeap.h", + "classes": [ + "TMinHeap", + "TMinHeapRecord" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TRVector.h", + "classes": [ + "TRVector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TRational.h", + "classes": [ + "TRational" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TSmallUnorderedSet.h", + "classes": [ + "TSmallUnorderedSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TStringHashTable.h", + "classes": [ + "HashItem", + "TStringHashTable" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4TTuple.h", + "classes": [ + "TTuple" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Triangle2.h", + "classes": [ + "Triangle2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Triangle3.h", + "classes": [ + "Triangle3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4UniqueVerticesTriangles.h", + "classes": [ + "UniqueVerticesTriangles" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Vector2.h", + "classes": [ + "Vector2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Vector3.h", + "classes": [ + "Vector3" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/App/WildMagic4/Wm4Vector4.h", + "classes": [ + "Vector4" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/AppMeshGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [ + "PropertyMeshKernel", + "ViewProviderMeshFaceSet" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "GeoFeature", + "SoEvent", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgDecimating.h", + "classes": [ + "DlgDecimating", + "TaskDecimating" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgEvaluateMeshImp.h", + "classes": [ + "CleanupHandler", + "DlgEvaluateMeshImp", + "DockEvaluateMeshImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgEvaluateSettings.h", + "classes": [ + "DlgEvaluateSettings" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgRegularSolidImp.h", + "classes": [ + "DlgRegularSolidImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgSettingsImportExportImp.h", + "classes": [ + "DlgSettingsImportExport" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgSettingsMeshView.h", + "classes": [ + "DlgSettingsMeshView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgSmoothing.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/DlgSmoothing.h", + "classes": [ + "DlgSmoothing", + "TaskSmoothing" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/MeshEditor.cpp", + "classes": [ + "NofFacetsCompare" + ], + "typeIdSymbols": [ + "SoEvent", + "SoFaceDetail", + "SoKeyboardEvent", + "SoLocation2Event", + "SoMouseButtonEvent", + "SoPolygon" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/MeshSelection.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "SoFaceDetail", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/RemeshGmsh.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/RemeshGmsh.h", + "classes": [ + "TaskRemeshGmsh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/RemoveComponents.h", + "classes": [ + "TaskRemoveComponents" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/Segmentation.h", + "classes": [ + "TaskSegmentation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/SegmentationBestFit.cpp", + "classes": [ + "CylinderFitParameter", + "PlaneFitParameter", + "SphereFitParameter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/SegmentationBestFit.h", + "classes": [ + "FitParameter", + "ParametersDialog", + "Points", + "TaskSegmentationBestFit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/Selection.h", + "classes": [ + "Selection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/SoFCIndexedFaceSet.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [ + "SoCoordinate3", + "SoFCIndexedFaceSet", + "SoGLSelectAction", + "SoVisibleFaceAction" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/SoFCIndexedFaceSet.h", + "classes": [ + "MeshRenderer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/SoFCMeshObject.cpp", + "classes": [ + "SoInputStream", + "SoInputStreambuf", + "SoOutputStream", + "SoOutputStreambuf" + ], + "typeIdSymbols": [ + "SoFCMeshObjectNode", + "SoFCMeshObjectShape", + "SoGLSelectAction" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ThumbnailExtension.h", + "classes": [ + "ThumbnailExtension3MF", + "ThumbnailExtensionProducer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProvider.cpp", + "classes": [ + "MeshSplit", + "Vertex" + ], + "typeIdSymbols": [ + "GLFlagWindow", + "PropertyColorList", + "PropertyMaterial", + "SoCoordinate3", + "SoFaceDetail", + "SoGLRenderAction", + "SoIndexedFaceSet", + "SoMouseButtonEvent", + "SoOrthographicCamera", + "SoPerspectiveCamera", + "ViewProviderMesh" + ], + "propertyRegistrations": [ + "Coloring", + "CreaseAngle", + "Lighting", + "LineColor", + "LineTransparency", + "LineWidth", + "OpenEdges", + "PointSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProvider.h", + "classes": [ + "HighlighMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyPercent", + "name": "LineTransparency" + }, + { + "type": "PropertyFloatConstraint", + "name": "LineWidth" + }, + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + }, + { + "type": "PropertyFloatConstraint", + "name": "CreaseAngle" + }, + { + "type": "PropertyBool", + "name": "OpenEdges" + }, + { + "type": "PropertyBool", + "name": "Coloring" + }, + { + "type": "PropertyEnumeration", + "name": "Lighting" + }, + { + "type": "PropertyColor", + "name": "LineColor" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderCurvature.cpp", + "classes": [ + "Annotation" + ], + "typeIdSymbols": [ + "PropertyCurvatureList", + "SoEvent", + "SoFCColorBar", + "SoFaceDetail", + "SoIndexedFaceSet", + "SoLocation2Event", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [ + "TextureMaterial" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderCurvature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyMaterial", + "name": "TextureMaterial" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderDefects.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "LineWidth" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderDefects.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "LineWidth" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderMeshPyImp.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColorList", + "name": "colors" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderTransform.h", + "classes": [ + "ViewProviderMeshTransform" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/ViewProviderTransformDemolding.h", + "classes": [ + "ViewProviderMeshTransformDemolding" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Mesh/Gui/Workbench.cpp", + "classes": [ + "MeshInfoWatcher" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "MeshPart", + "sourcePath": "src/Mod/MeshPart", + "sourceFileCount": 33, + "objectSourceCount": 18, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/MeshPart/App/AppMeshPartPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/CurveProjector.h", + "classes": [ + "Edge", + "FaceSplitEdge", + "LineSeg", + "PolyLine", + "SplitEdge", + "TopoDSLess" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/MeshAlgos.cpp", + "classes": [ + "_VertexCompare" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/MeshFlattening.h", + "classes": [ + "FaceUnwrapper" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/MeshFlatteningLscmRelax.h", + "classes": [ + "LscmRelax", + "NullSpaceProjector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/MeshFlatteningNurbs.h", + "classes": [ + "NurbsBase1D", + "NurbsBase2D" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/Mesher.cpp", + "classes": [ + "BrepMesh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/App/Mesher.h", + "classes": [ + "Mesher", + "MeshingOutput" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/AppMeshPartGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "View3DInventor" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/CrossSections.cpp", + "classes": [ + "MeshCrossSection", + "ViewProviderCrossSections" + ], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/CrossSections.h", + "classes": [ + "CrossSections", + "TaskCrossSections" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/CurveOnMesh.cpp", + "classes": [ + "ApproxPar", + "PickedPoint", + "Private" + ], + "typeIdSymbols": [ + "SoEvent", + "SoFaceDetail", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/CurveOnMesh.h", + "classes": [ + "CurveOnMeshHandler", + "ViewProviderCurveOnMesh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/TaskCurveOnMesh.h", + "classes": [ + "CurveOnMeshWidget", + "TaskCurveOnMesh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/Tessellation.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [ + "PropertyColorList" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/Tessellation.h", + "classes": [ + "Mesh2ShapeGmsh", + "TaskTessellation", + "Tessellation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/MeshPart/Gui/Workbench.h", + "classes": [ + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "OpenSCAD", + "sourcePath": "src/Mod/OpenSCAD", + "sourceFileCount": 21, + "objectSourceCount": 3, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 30, + "objects": [ + { + "sourceFile": "src/Mod/OpenSCAD/OpenSCADCommands.py", + "classes": [ + "AddOpenSCADElement", + "AddSCADTask", + "ColorCodeShape", + "Edgestofaces", + "ExpandPlacements", + "ExplodeGroup", + "Hull", + "IncreaseToleranceFeature", + "Minkowski", + "MirrorMeshFeature", + "OpenSCADMeshBoolean", + "OpenSCADMeshBooleanTask", + "RefineShapeFeature", + "RemoveSubtree", + "ReplaceObject", + "ResizeMeshFeature", + "ScaleMeshFeature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/OpenSCAD/OpenSCADFeatures.py", + "classes": [ + "CGALFeature", + "Frustum", + "GetWire", + "ImportObject", + "IncreaseTolerance", + "MatrixTransform", + "OffsetShape", + "OpenSCADPlaceholder", + "PrismaticToroid", + "RefineShape", + "Resize", + "Twist", + "ViewProviderTree" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Children" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Arguments" + }, + { + "typeExpression": "\"App::PropertyPythonObject\"", + "name": "Object" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "Vector" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyMatrix\"", + "name": "Matrix" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Vertex" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Edge" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Face" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "FacesNumber" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Radius1" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Radius2" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyQuantity\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyFloatList\"", + "name": "Scale" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyAngle\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Segments" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyDistance\"", + "name": "Offset" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Children" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Arguments" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Operation" + } + ] + }, + { + "sourceFile": "src/Mod/OpenSCAD/prototype.py", + "classes": [ + "Node" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Part", + "sourcePath": "src/Mod/Part", + "sourceFileCount": 465, + "objectSourceCount": 176, + "propertyRegistrationCount": 170, + "propertyMemberCount": 231, + "pythonPropertyCount": 42, + "objects": [ + { + "sourceFile": "src/Mod/Part/App/AppPartPy.cpp", + "classes": [ + "BRepFeatModule", + "BRepOffsetAPIModule", + "ChFi2dModule", + "EdgePoints", + "Geom2dModule", + "GeomPlateModule", + "HLRBRepModule", + "Module", + "ShapeFixModule", + "ShapeUpgradeModule" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/AttachEnginePyImp.cpp", + "classes": [], + "typeIdSymbols": [ + "AttachEngine" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "references" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/AttachExtension.cpp", + "classes": [], + "typeIdSymbols": [ + "AttachEngine", + "PropertyLinkSubListHidden", + "T" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "tmp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/AttachExtension.h", + "classes": [ + "Properties", + "_Properties" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "AttacherType" + }, + { + "type": "PropertyEnumeration", + "name": "AttacherEngine" + }, + { + "type": "PropertyLinkSubList", + "name": "AttachmentSupport" + }, + { + "type": "PropertyEnumeration", + "name": "MapMode" + }, + { + "type": "PropertyBool", + "name": "MapReversed" + }, + { + "type": "PropertyPlacement", + "name": "AttachmentOffset" + }, + { + "type": "PropertyFloat", + "name": "MapPathParameter" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/Attacher.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "tmpLink" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/Attacher.h", + "classes": [ + "ExceptionCancel", + "SuggestResult" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/BRepMesh.cpp", + "classes": [ + "MergeVertex", + "MeshVertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/BSplineCurveBiArcs.cpp", + "classes": [ + "TangentialArc" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/BSplineCurveBiArcs.h", + "classes": [ + "Type" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/BodyBase.cpp", + "classes": [], + "typeIdSymbols": [ + "BodyBase" + ], + "propertyRegistrations": [ + "BaseFeature", + "Tip" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/BodyBase.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Tip" + }, + { + "type": "PropertyLink", + "name": "BaseFeature" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/ExtrusionHelper.h", + "classes": [ + "ExtrusionParameters", + "InnerWireTaper" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h", + "classes": [ + "FCBRepAlgoAPIHelper", + "FCBRepAlgoAPI_BooleanOperation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FCBRepAlgoAPI_Common.h", + "classes": [ + "FCBRepAlgoAPI_Common" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FCBRepAlgoAPI_Cut.h", + "classes": [ + "FCBRepAlgoAPI_Cut" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FCBRepAlgoAPI_Fuse.h", + "classes": [ + "FCBRepAlgoAPI_Fuse" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FCBRepAlgoAPI_Section.h", + "classes": [ + "FCBRepAlgoAPI_Section" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FT2FC.cpp", + "classes": [ + "FTDC_Ctx" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FaceMaker.cpp", + "classes": [ + "ElementName" + ], + "typeIdSymbols": [ + "FaceMaker" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FaceMakerBullseye.h", + "classes": [ + "FaceDriller", + "HitTest", + "WireInfo" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FaceMakerCheese.h", + "classes": [ + "Wire_Compare" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureCompound.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Links" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureCompound.h", + "classes": [ + "Compound2" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Links" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureExtrusion.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "Dir", + "DirLink", + "DirMode", + "FaceMakerClass", + "FaceMakerMode", + "InnerWireTaper", + "LengthFwd", + "LengthRev", + "Reversed", + "Solid", + "Symmetric", + "TaperAngle", + "TaperAngleRev" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureExtrusion.h", + "classes": [ + "FaceMakerExtrusion" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Base" + }, + { + "type": "PropertyVector", + "name": "Dir" + }, + { + "type": "PropertyEnumeration", + "name": "DirMode" + }, + { + "type": "PropertyLinkSub", + "name": "DirLink" + }, + { + "type": "PropertyDistance", + "name": "LengthFwd" + }, + { + "type": "PropertyDistance", + "name": "LengthRev" + }, + { + "type": "PropertyBool", + "name": "Solid" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyBool", + "name": "Symmetric" + }, + { + "type": "PropertyAngle", + "name": "TaperAngle" + }, + { + "type": "PropertyAngle", + "name": "TaperAngleRev" + }, + { + "type": "PropertyString", + "name": "FaceMakerClass" + }, + { + "type": "PropertyEnumeration", + "name": "FaceMakerMode" + }, + { + "type": "PropertyEnumeration", + "name": "InnerWireTaper" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureFace.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FaceMakerClass", + "Sources" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureFace.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Sources" + }, + { + "type": "PropertyString", + "name": "FaceMakerClass" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureGeometrySet.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "GeometrySet" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureMirroring.cpp", + "classes": [], + "typeIdSymbols": [ + "GeoFeature" + ], + "propertyRegistrations": [ + "Base", + "MirrorPlane", + "Normal", + "Source" + ], + "propertyMembers": [ + { + "type": "PropertyVector", + "name": "v" + }, + { + "type": "PropertyVector", + "name": "v" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureMirroring.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyPosition", + "name": "Base" + }, + { + "type": "PropertyDirection", + "name": "Normal" + }, + { + "type": "PropertyLinkSub", + "name": "MirrorPlane" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureOffset.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Fill", + "Intersection", + "Join", + "Mode", + "SelfIntersection", + "Source", + "Value" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureOffset.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyFloat", + "name": "Value" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyEnumeration", + "name": "Join" + }, + { + "type": "PropertyBool", + "name": "Intersection" + }, + { + "type": "PropertyBool", + "name": "SelfIntersection" + }, + { + "type": "PropertyBool", + "name": "Fill" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartBoolean.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "History", + "Refine", + "Tool" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartBoolean.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Base" + }, + { + "type": "PropertyLink", + "name": "Tool" + }, + { + "type": "PropertyBool", + "name": "Refine" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartBox.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Height", + "Length", + "Width" + ], + "propertyMembers": [ + { + "type": "PropertyDistance", + "name": "x" + }, + { + "type": "PropertyDistance", + "name": "l" + }, + { + "type": "PropertyVector", + "name": "Axis" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartBox.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Length" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCircle.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle1", + "Angle2", + "Radius" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCircle.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCommon.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Behavior", + "History", + "Refine", + "Shapes" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCommon.h", + "classes": [ + "Common" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Shapes" + }, + { + "type": "PropertyBool", + "name": "Refine" + }, + { + "type": "PropertyEnumeration", + "name": "Behavior" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCurveNet.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FileName" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCurveNet.h", + "classes": [ + "CurveNet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "FileName" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartCut.h", + "classes": [ + "Cut" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartFuse.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "History", + "Refine", + "Shapes" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartFuse.h", + "classes": [ + "Fuse" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Shapes" + }, + { + "type": "PropertyBool", + "name": "Refine" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartImportBrep.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FileName" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartImportBrep.h", + "classes": [ + "ImportBrep" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "FileName" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartImportIges.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FileName" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartImportIges.h", + "classes": [ + "ImportIges" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "FileName" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartImportStep.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FileName" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartImportStep.h", + "classes": [ + "ImportStep" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "FileName" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartPolygon.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Close", + "Nodes" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartPolygon.h", + "classes": [ + "Polygon" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyVectorList", + "name": "Nodes" + }, + { + "type": "PropertyBool", + "name": "Close" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartSection.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Approximation" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeaturePartSection.h", + "classes": [ + "Section" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "Approximation" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureProjectOnSurface.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Direction", + "Height", + "Mode", + "Offset", + "Projection", + "SupportFace" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureProjectOnSurface.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyDistance", + "name": "Offset" + }, + { + "type": "PropertyDirection", + "name": "Direction" + }, + { + "type": "PropertyLinkSub", + "name": "SupportFace" + }, + { + "type": "PropertyLinkSubList", + "name": "Projection" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureRevolution.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Axis", + "AxisLink", + "Base", + "FaceMakerClass", + "Solid", + "Source", + "Symmetric" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureRevolution.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyVector", + "name": "Base" + }, + { + "type": "PropertyVector", + "name": "Axis" + }, + { + "type": "PropertyLinkSub", + "name": "AxisLink" + }, + { + "type": "PropertyFloatConstraint", + "name": "Angle" + }, + { + "type": "PropertyBool", + "name": "Symmetric" + }, + { + "type": "PropertyBool", + "name": "Solid" + }, + { + "type": "PropertyString", + "name": "FaceMakerClass" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureScale.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "Uniform", + "UniformScale", + "XScale", + "YScale", + "ZScale" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/FeatureScale.h", + "classes": [ + "ScaleParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Base" + }, + { + "type": "PropertyBool", + "name": "Uniform" + }, + { + "type": "PropertyFloat", + "name": "UniformScale" + }, + { + "type": "PropertyFloat", + "name": "XScale" + }, + { + "type": "PropertyFloat", + "name": "YScale" + }, + { + "type": "PropertyFloat", + "name": "ZScale" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/Geometry.cpp", + "classes": [ + "GeomCurve", + "Geometry" + ], + "typeIdSymbols": [ + "GeometryMigrationExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/Geometry2d.cpp", + "classes": [ + "Geom2dCurve", + "Geometry2d" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/GizmoHelper.h", + "classes": [ + "State" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/Interface.h", + "classes": [ + "Assembly", + "Unit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/OCAF/ImportExportSettings.h", + "classes": [ + "CodePage", + "ImportMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/OCCTProgressIndicator.h", + "classes": [ + "Message_ProgressRange" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PartFeature.cpp", + "classes": [ + "ElementCache" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "EdgeLinks", + "Edges", + "Shape", + "ShapeMaterial" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PartFeature.h", + "classes": [ + "ShapeOption", + "cutFaces", + "cutTopoShapeFaces" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Base" + }, + { + "type": "PropertyLinkSub", + "name": "EdgeLinks" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PartFeatureReference.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Reference" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PartFeatureReference.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Reference" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PartFeatures.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Closed", + "Curve1", + "Curve2", + "Faces", + "Frenet", + "Intersection", + "Join", + "Linearize", + "MaxDegree", + "Mode", + "Orientation", + "Ruled", + "Sections", + "SelfIntersection", + "Solid", + "Source", + "Spine", + "Transition", + "Value" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "v" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PartFeatures.h", + "classes": [ + "Refine", + "Reverse" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Orientation" + }, + { + "type": "PropertyLinkSub", + "name": "Curve1" + }, + { + "type": "PropertyLinkSub", + "name": "Curve2" + }, + { + "type": "PropertyLinkList", + "name": "Sections" + }, + { + "type": "PropertyBool", + "name": "Solid" + }, + { + "type": "PropertyBool", + "name": "Ruled" + }, + { + "type": "PropertyBool", + "name": "Closed" + }, + { + "type": "PropertyBool", + "name": "Linearize" + }, + { + "type": "PropertyIntegerConstraint", + "name": "MaxDegree" + }, + { + "type": "PropertyLinkList", + "name": "Sections" + }, + { + "type": "PropertyLinkSub", + "name": "Spine" + }, + { + "type": "PropertyBool", + "name": "Solid" + }, + { + "type": "PropertyBool", + "name": "Frenet" + }, + { + "type": "PropertyBool", + "name": "Linearize" + }, + { + "type": "PropertyEnumeration", + "name": "Transition" + }, + { + "type": "PropertyLinkSub", + "name": "Faces" + }, + { + "type": "PropertyQuantity", + "name": "Value" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyEnumeration", + "name": "Join" + }, + { + "type": "PropertyBool", + "name": "Intersection" + }, + { + "type": "PropertyBool", + "name": "SelfIntersection" + }, + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyLink", + "name": "Source" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PreviewExtension.h", + "classes": [ + "PreviewExtensionPythonT" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PrimitiveFeature.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyFloat" + ], + "propertyRegistrations": [ + "Angle", + "Angle1", + "Angle2", + "Angle3", + "Circumradius", + "Growth", + "Height", + "Length", + "LocalCoord", + "MajorRadius", + "MinorRadius", + "Pitch", + "Polygon", + "Radius", + "Radius1", + "Radius2", + "Radius3", + "Rotations", + "SegmentLength", + "Style", + "Width", + "X", + "X1", + "X2", + "X2max", + "X2min", + "Xmax", + "Xmin", + "Y", + "Y1", + "Y2", + "Ymax", + "Ymin", + "Z", + "Z1", + "Z2", + "Z2max", + "Z2min", + "Zmax", + "Zmin" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "floatProp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PrimitiveFeature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyDistance", + "name": "X" + }, + { + "type": "PropertyDistance", + "name": "Y" + }, + { + "type": "PropertyDistance", + "name": "Z" + }, + { + "type": "PropertyDistance", + "name": "X1" + }, + { + "type": "PropertyDistance", + "name": "Y1" + }, + { + "type": "PropertyDistance", + "name": "Z1" + }, + { + "type": "PropertyDistance", + "name": "X2" + }, + { + "type": "PropertyDistance", + "name": "Y2" + }, + { + "type": "PropertyDistance", + "name": "Z2" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Width" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyAngle", + "name": "Angle3" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyLength", + "name": "Radius3" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyAngle", + "name": "Angle3" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Polygon" + }, + { + "type": "PropertyLength", + "name": "Circumradius" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Polygon" + }, + { + "type": "PropertyLength", + "name": "Circumradius" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyAngle", + "name": "Angle3" + }, + { + "type": "PropertyLength", + "name": "Pitch" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyQuantityConstraint", + "name": "SegmentLength" + }, + { + "type": "PropertyEnumeration", + "name": "LocalCoord" + }, + { + "type": "PropertyEnumeration", + "name": "Style" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Growth" + }, + { + "type": "PropertyQuantityConstraint", + "name": "Rotations" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyQuantityConstraint", + "name": "SegmentLength" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyDistance", + "name": "Xmin" + }, + { + "type": "PropertyDistance", + "name": "Ymin" + }, + { + "type": "PropertyDistance", + "name": "Zmin" + }, + { + "type": "PropertyDistance", + "name": "Z2min" + }, + { + "type": "PropertyDistance", + "name": "X2min" + }, + { + "type": "PropertyDistance", + "name": "Xmax" + }, + { + "type": "PropertyDistance", + "name": "Ymax" + }, + { + "type": "PropertyDistance", + "name": "Zmax" + }, + { + "type": "PropertyDistance", + "name": "Z2max" + }, + { + "type": "PropertyDistance", + "name": "X2max" + }, + { + "type": "PropertyLength", + "name": "MajorRadius" + }, + { + "type": "PropertyLength", + "name": "MinorRadius" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PrismExtension.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyAngle", + "name": "FirstAngle" + }, + { + "type": "PropertyAngle", + "name": "SecondAngle" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/PropertyTopoShape.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyStringList", + "name": "prop" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/ShapeMapHasher.h", + "classes": [ + "ShapeMapHasher" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/TopoShape.h", + "classes": [ + "ChamferType", + "CheckGeometry", + "CheckScale", + "ConnectionPolicy", + "Continuity", + "CoordinateSystem", + "CopyType", + "FillType", + "Flip", + "HistoryTraceType", + "IsClosed", + "IsRuled", + "IsSolid", + "JoinType", + "LinearizeEdge", + "LinearizeFace", + "MakeSolid", + "MapElement", + "OpenResult", + "RefineFail", + "RevolMode", + "ShapeProtector", + "SingleShapeCompoundCreationPolicy", + "Spine", + "TransitionMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/TopoShapeExpansion.cpp", + "classes": [ + "EdgePoints", + "MapperFill", + "MapperPrism", + "MapperThruSections", + "MyRefineMaker", + "NameInfo", + "NameKey", + "ShapeInfo" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/TopoShapeMapper.cpp", + "classes": [ + "TopoDS_ShapeHasher" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/TopoShapeMapper.h", + "classes": [ + "MappingStatus", + "ShapeHasher", + "ShapeValue" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/TopoShapePyImp.cpp", + "classes": [ + "PyShapeMapper", + "TopoShapePyInit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColorList", + "name": "prop" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/VectorAdapter.h", + "classes": [ + "VectorAdapter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/WireJoiner.cpp", + "classes": [ + "BoxGetter", + "EdgeInfo", + "EdgeSet", + "IntersectInfo", + "PntGetter", + "SplitInfo", + "StackInfo", + "VectorSet", + "VertexInfo", + "WireInfo", + "WireJoinerP", + "WireSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/edgecluster.h", + "classes": [ + "Edgesort_gp_Pnt_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/modelRefine.cpp", + "classes": [ + "WireSort" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/App/modelRefine.h", + "classes": [ + "FaceAdjacencySplitter", + "FaceEqualitySplitter", + "FaceTypeSplitter", + "FaceTypedBSpline", + "FaceTypedBase", + "FaceTypedCylinder", + "FaceTypedPlane", + "FaceUniter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/AttachmentEditor/Commands.py", + "classes": [ + "CommandEditAttachment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/BOPTools/BOPFeatures.py", + "classes": [ + "BOPFeatures" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/BOPTools/GeneralFuseResult.py", + "classes": [ + "GeneralFuseResult" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/BOPTools/JoinFeatures.py", + "classes": [ + "CommandConnect", + "CommandCutout", + "CommandEmbed", + "FeatureConnect", + "FeatureCutout", + "FeatureEmbed", + "ViewProviderConnect", + "ViewProviderCutout", + "ViewProviderEmbed" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Refine" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Tolerance" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Tool" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Refine" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Tolerance" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Tool" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Refine" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Tolerance" + } + ] + }, + { + "sourceFile": "src/Mod/Part/BOPTools/SplitFeatures.py", + "classes": [ + "CommandBooleanFragments", + "CommandSlice", + "CommandSliceApart", + "CommandXOR", + "FeatureBooleanFragments", + "FeatureSlice", + "FeatureXOR", + "ViewProviderBooleanFragments", + "ViewProviderSlice", + "ViewProviderXOR" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Mode" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Tolerance" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Tools" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Mode" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Tolerance" + }, + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Tolerance" + } + ] + }, + { + "sourceFile": "src/Mod/Part/BOPTools/ToleranceFeatures.py", + "classes": [ + "CommandToleranceSet", + "FeatureToleranceSet", + "ViewProviderToleranceSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "Objects" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Refine" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "minTolerance" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "maxTolerance" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "maxTolerance" + } + ] + }, + { + "sourceFile": "src/Mod/Part/BasicShapes/CommandShapes.py", + "classes": [ + "CommandTube" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/BasicShapes/Shapes.py", + "classes": [ + "TubeFeature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "OuterRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "InnerRadius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + } + ] + }, + { + "sourceFile": "src/Mod/Part/BasicShapes/ViewProviderShapes.py", + "classes": [ + "TaskTubeUI", + "ViewProviderTube" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/CompoundTools/CompoundFilter.py", + "classes": [ + "_CompoundFilter", + "_ViewProviderCompoundFilter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "FilterType" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "items" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Stencil" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "WindowFrom" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "WindowTo" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "OverrideMaxVal" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Invert" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "DontUnhideOnDelete" + } + ] + }, + { + "sourceFile": "src/Mod/Part/CompoundTools/_CommandCompoundFilter.py", + "classes": [ + "_CommandCompoundFilter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/CompoundTools/_CommandExplodeCompound.py", + "classes": [ + "_CommandExplodeCompound" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/AppPartGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [ + "PropertyPartShape", + "ViewProviderPart" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/AttacherTexts.cpp", + "classes": [], + "typeIdSymbols": [ + "AttachEngine", + "AttachEngine3D", + "AttachEngineLine", + "AttachEnginePlane", + "AttachEnginePoint" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/BoxSelection.cpp", + "classes": [ + "FaceSelectionGate" + ], + "typeIdSymbols": [ + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/BoxSelection.h", + "classes": [ + "BoxSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/Command.cpp", + "classes": [ + "CmdPartDatums" + ], + "typeIdSymbols": [ + "DocumentObject", + "Feature", + "View3DInventor" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/CommandSimple.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/CrossSections.cpp", + "classes": [ + "ViewProviderCrossSections" + ], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/CrossSections.h", + "classes": [ + "CrossSections", + "TaskCrossSections" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgBooleanOperation.cpp", + "classes": [ + "BooleanOperationItem" + ], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgBooleanOperation.h", + "classes": [ + "DlgBooleanOperation", + "TaskBooleanOperation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgExportStep.h", + "classes": [ + "DlgExportHeaderStep", + "DlgExportStep", + "StepSettings" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgExtrusion.cpp", + "classes": [ + "EdgeSelection" + ], + "typeIdSymbols": [ + "Feature", + "Link", + "Part" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "lnk" + }, + { + "type": "PropertyLink", + "name": "lnk" + }, + { + "type": "PropertyLinkSub", + "name": "lnk" + }, + { + "type": "PropertyLink", + "name": "lnk" + }, + { + "type": "PropertyLinkSub", + "name": "lnk" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgExtrusion.h", + "classes": [ + "DlgExtrusion", + "TaskExtrusion" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgFilletEdges.cpp", + "classes": [ + "EdgeFaceSelection", + "Private", + "SelectionObjectCompare" + ], + "typeIdSymbols": [ + "Feature", + "SoBrepEdgeSet", + "SoBrepFaceSet", + "SoBrepPointSet" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgFilletEdges.h", + "classes": [ + "DlgChamferEdges", + "DlgFilletEdges", + "FilletEdgesDialog", + "FilletRadiusDelegate", + "FilletRadiusModel", + "TaskChamferEdges", + "TaskFilletEdges" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgImportStep.h", + "classes": [ + "DlgImportStep", + "StepImportSettings" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgPartBoxImp.h", + "classes": [ + "DlgPartBoxImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgPartCylinderImp.h", + "classes": [ + "DlgPartCylinderImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgPartImportIgesImp.h", + "classes": [ + "DlgPartImportIgesImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgPartImportStepImp.h", + "classes": [ + "DlgPartImportStepImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgPrimitives.cpp", + "classes": [ + "CircleFromThreePoints" + ], + "typeIdSymbols": [ + "SoFCUnifiedSelection", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgPrimitives.h", + "classes": [ + "AbstractPrimitive", + "BoxPrimitive", + "CirclePrimitive", + "ConePrimitive", + "CylinderPrimitive", + "DlgPrimitives", + "EllipsePrimitive", + "EllipsoidPrimitive", + "HelixPrimitive", + "LinePrimitive", + "Location", + "Picker", + "PlanePrimitive", + "PolygonPrimitive", + "PrismPrimitive", + "SpherePrimitive", + "SpiralPrimitive", + "TaskPrimitives", + "TaskPrimitivesEdit", + "TorusPrimitive", + "VertexPrimitive", + "WedgePrimitive" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgProjectionOnSurface.cpp", + "classes": [ + "EdgeSelection", + "FaceSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgProjectionOnSurface.h", + "classes": [ + "DlgProjectOnSurface", + "DlgProjectionOnSurface", + "SShapeStore", + "TaskProjectOnSurface", + "TaskProjectionOnSurface" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgRevolution.cpp", + "classes": [ + "EdgeSelection" + ], + "typeIdSymbols": [ + "Feature", + "Link", + "Part" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "lnk" + }, + { + "type": "PropertyLinkSub", + "name": "axisLink" + }, + { + "type": "PropertyLinkSub", + "name": "lnk" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgRevolution.h", + "classes": [ + "DlgRevolution", + "TaskRevolution" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgScale.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "Link", + "Part" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgScale.h", + "classes": [ + "DlgScale", + "TaskScale" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgSettings3DViewPartImp.cpp", + "classes": [], + "typeIdSymbols": [ + "ViewProviderPart" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgSettings3DViewPartImp.h", + "classes": [ + "DlgSettings3DViewPart" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgSettingsGeneral.h", + "classes": [ + "DlgImportExportIges", + "DlgImportExportStep", + "DlgSettingsGeneral" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/DlgSettingsObjectColor.h", + "classes": [ + "DlgSettingsObjectColor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/Mirroring.cpp", + "classes": [ + "MirrorPlaneSelection" + ], + "typeIdSymbols": [ + "Feature", + "Link", + "Part" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/Mirroring.h", + "classes": [ + "Mirroring", + "TaskMirroring" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/PatternParametersWidget.h", + "classes": [ + "PatternMode", + "PatternType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/SectionCutting.cpp", + "classes": [ + "Refresh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/SectionCutting.h", + "classes": [ + "Args", + "SectionCut" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ShapeFromMesh.h", + "classes": [ + "ShapeFromMesh" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/SoBrepEdgeSet.cpp", + "classes": [ + "HighlightSegment", + "SelContext" + ], + "typeIdSymbols": [ + "SoHighlightElementAction", + "SoLineDetail", + "SoSelectionElementAction" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/SoBrepFaceSet.cpp", + "classes": [ + "Buffer", + "VBO" + ], + "typeIdSymbols": [ + "SoFaceDetail", + "SoHighlightElementAction", + "SoSelectionElementAction", + "SoUpdateVBOAction", + "SoVRMLAction" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/SoBrepPointSet.cpp", + "classes": [], + "typeIdSymbols": [ + "SoHighlightElementAction", + "SoPointDetail", + "SoSelectionElementAction" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskAttacher.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject", + "Plane" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskAttacher.h", + "classes": [ + "SubAndObjName" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyOverrideContext", + "name": "overrides" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskCheckGeometry.h", + "classes": [ + "BOPProgressIndicator", + "ResultEntry", + "ResultModel", + "TaskCheckGeometryDialog", + "TaskCheckGeometryResults" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskFaceAppearances.cpp", + "classes": [ + "FaceSelection", + "Private" + ], + "typeIdSymbols": [ + "SoBrepFaceSet", + "SoFaceDetail", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskFaceAppearances.h", + "classes": [ + "FaceAppearances", + "TaskFaceAppearances" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskLoft.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskLoft.h", + "classes": [ + "LoftWidget", + "TaskLoft" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskOffset.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskOffset.h", + "classes": [ + "OffsetWidget", + "TaskOffset" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskShapeBuilder.cpp", + "classes": [ + "Private", + "ShapeSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskShapeBuilder.h", + "classes": [ + "ShapeBuilderWidget", + "TaskShapeBuilder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskSweep.cpp", + "classes": [ + "EdgeSelection", + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskSweep.h", + "classes": [ + "SweepWidget", + "TaskSweep" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskThickness.cpp", + "classes": [ + "FaceSelection", + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/TaskThickness.h", + "classes": [ + "TaskThickness", + "ThicknessWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProvider.h", + "classes": [ + "ViewProviderShapeBuilder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProvider2DObject.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyFloat" + ], + "propertyRegistrations": [ + "GridAutoSize", + "GridSize", + "GridSnap", + "GridStyle", + "ShowGrid", + "ShowOnlyInEditMode", + "ShowPlane", + "TightGrid", + "maxNumberOfLines" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "floatProp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProvider2DObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ShowPlane" + }, + { + "type": "PropertyBool", + "name": "ShowGrid" + }, + { + "type": "PropertyBool", + "name": "ShowOnlyInEditMode" + }, + { + "type": "PropertyLength", + "name": "GridSize" + }, + { + "type": "PropertyEnumeration", + "name": "GridStyle" + }, + { + "type": "PropertyBool", + "name": "TightGrid" + }, + { + "type": "PropertyBool", + "name": "GridSnap" + }, + { + "type": "PropertyBool", + "name": "GridAutoSize" + }, + { + "type": "PropertyInteger", + "name": "maxNumberOfLines" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderCurveNet.cpp", + "classes": [], + "typeIdSymbols": [ + "SoKeyboardEvent", + "SoLocation2Event", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderCurveNet.h", + "classes": [ + "Node" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderExt.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyColorList", + "SoFaceDetail", + "SoLineDetail", + "SoPointDetail" + ], + "propertyRegistrations": [ + "AngularDeflection", + "Deviation", + "DrawStyle", + "Lighting", + "LineColor", + "LineColorArray", + "LineMaterial", + "LineWidth", + "PointColor", + "PointColorArray", + "PointMaterial", + "PointSize", + "ShowPlacement" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderExt.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "Deviation" + }, + { + "type": "PropertyBool", + "name": "ControlPoints" + }, + { + "type": "PropertyAngle", + "name": "AngularDeflection" + }, + { + "type": "PropertyEnumeration", + "name": "Lighting" + }, + { + "type": "PropertyEnumeration", + "name": "DrawStyle" + }, + { + "type": "PropertyBool", + "name": "ShowPlacement" + }, + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + }, + { + "type": "PropertyColor", + "name": "PointColor" + }, + { + "type": "PropertyMaterial", + "name": "PointMaterial" + }, + { + "type": "PropertyColorList", + "name": "PointColorArray" + }, + { + "type": "PropertyFloatConstraint", + "name": "LineWidth" + }, + { + "type": "PropertyColor", + "name": "LineColor" + }, + { + "type": "PropertyMaterial", + "name": "LineMaterial" + }, + { + "type": "PropertyColorList", + "name": "LineColorArray" + }, + { + "type": "PropertyColorList", + "name": "_diffuseColor" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderGridExtension.cpp", + "classes": [ + "GridExtensionP" + ], + "typeIdSymbols": [ + "PropertyFloat" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "floatProp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderGridExtension.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ShowGrid" + }, + { + "type": "PropertyLength", + "name": "GridSize" + }, + { + "type": "PropertyBool", + "name": "GridAuto" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderMirror.h", + "classes": [ + "ViewProviderChamfer", + "ViewProviderLoft", + "ViewProviderOffset", + "ViewProviderOffset2D", + "ViewProviderRefine", + "ViewProviderReverse", + "ViewProviderRevolution", + "ViewProviderSweep", + "ViewProviderThickness" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderPartExtPyImp.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColorList", + "name": "prop" + }, + { + "type": "PropertyColorList", + "name": "prop" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderPreviewExtension.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColor", + "name": "PreviewColor" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderReference.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ControlPoints", + "Lighting", + "LineColor", + "LineMaterial", + "LineWidth", + "PointColor", + "PointMaterial", + "PointSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderReference.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "LineWidth" + }, + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + }, + { + "type": "PropertyColor", + "name": "LineColor" + }, + { + "type": "PropertyColor", + "name": "PointColor" + }, + { + "type": "PropertyMaterial", + "name": "LineMaterial" + }, + { + "type": "PropertyMaterial", + "name": "PointMaterial" + }, + { + "type": "PropertyBool", + "name": "ControlPoints" + }, + { + "type": "PropertyEnumeration", + "name": "Lighting" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/ViewProviderSpline.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ControlPoints" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/Gui/WorkbenchManipulator.h", + "classes": [ + "WorkbenchManipulator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Part/JoinFeatures.py", + "classes": [ + "_PartJoinFeature", + "_ViewProviderPartJoinFeature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Mode" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Base" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Tool" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "Refine" + } + ] + }, + { + "sourceFile": "src/Mod/Part/parttests/TopoShapeListTest.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"Part::PropertyTopoShapeList\"", + "name": "Shapes" + } + ] + }, + { + "sourceFile": "src/Mod/Part/parttests/TopoShapeTest.py", + "classes": [ + "TopoShapeAssertions" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "PartDesign", + "sourcePath": "src/Mod/PartDesign", + "sourceFileCount": 269, + "objectSourceCount": 123, + "propertyRegistrationCount": 218, + "propertyMemberCount": 219, + "pythonPropertyCount": 22, + "objects": [ + { + "sourceFile": "src/Mod/PartDesign/App/AppPartDesignPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/Body.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [ + "AllowCompound" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/Body.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "AllowCompound" + }, + { + "type": "PropertyBool", + "name": "IsActive" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/DatumLine.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Length", + "ResizeMode" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/DatumLine.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "ResizeMode" + }, + { + "type": "PropertyLength", + "name": "Length" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/DatumPlane.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Length", + "ResizeMode", + "Width" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/DatumPlane.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "ResizeMode" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Width" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/Feature.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BaseFeature", + "SuppressedShape", + "_Body" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/Feature.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "BaseFeature" + }, + { + "type": "PropertyLinkHidden", + "name": "_Body" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureAddSub.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AddSubShape" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureAddSub.h", + "classes": [ + "FeatureAdditivePython", + "FeatureSubtractivePython" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureBoolean.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Type" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureBoolean.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Type" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureChamfer.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "ChamferType", + "FlipDirection", + "Size", + "Size2", + "UseAllEdges" + ], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "p" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureChamfer.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "ChamferType" + }, + { + "type": "PropertyQuantityConstraint", + "name": "Size" + }, + { + "type": "PropertyQuantityConstraint", + "name": "Size2" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyBool", + "name": "FlipDirection" + }, + { + "type": "PropertyBool", + "name": "UseAllEdges" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureDraft.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyFloatConstraint" + ], + "propertyRegistrations": [ + "Angle", + "NeutralPlane", + "PullDirection", + "Reversed" + ], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "v" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureDraft.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyLinkSub", + "name": "NeutralPlane" + }, + { + "type": "PropertyLinkSub", + "name": "PullDirection" + }, + { + "type": "PropertyBool", + "name": "Reversed" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureDressUp.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "SupportTransform" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureDressUp.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Base" + }, + { + "type": "PropertyBool", + "name": "SupportTransform" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureExtrude.cpp", + "classes": [ + "Part" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureExtrude.h", + "classes": [ + "ExtrudeOption" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "SideType" + }, + { + "type": "PropertyEnumeration", + "name": "Type" + }, + { + "type": "PropertyEnumeration", + "name": "Type2" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Length2" + }, + { + "type": "PropertyAngle", + "name": "TaperAngle" + }, + { + "type": "PropertyAngle", + "name": "TaperAngle2" + }, + { + "type": "PropertyBool", + "name": "UseCustomVector" + }, + { + "type": "PropertyVector", + "name": "Direction" + }, + { + "type": "PropertyBool", + "name": "AlongSketchNormal" + }, + { + "type": "PropertyLength", + "name": "Offset" + }, + { + "type": "PropertyLength", + "name": "Offset2" + }, + { + "type": "PropertyLinkSub", + "name": "ReferenceAxis" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureFillet.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Radius", + "UseAllEdges" + ], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "p" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureFillet.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyQuantityConstraint", + "name": "Radius" + }, + { + "type": "PropertyBool", + "name": "UseAllEdges" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureGroove.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Angle2", + "Axis", + "Base", + "ReferenceAxis", + "Type", + "UpToFace" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureGroove.h", + "classes": [ + "RevolMethod" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Type" + }, + { + "type": "PropertyVector", + "name": "Base" + }, + { + "type": "PropertyVector", + "name": "Axis" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyLinkSub", + "name": "ReferenceAxis" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureHelix.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Axis", + "Base", + "Growth", + "HasBeenEdited", + "Height", + "LeftHanded", + "Mode", + "Outside", + "Pitch", + "ReferenceAxis", + "Reversed", + "Tolerance", + "Turns" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "TurnsProperty" + }, + { + "type": "PropertyLength", + "name": "GrowthProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureHelix.h", + "classes": [ + "HelixMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyVector", + "name": "Base" + }, + { + "type": "PropertyVector", + "name": "Axis" + }, + { + "type": "PropertyLength", + "name": "Pitch" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyFloatConstraint", + "name": "Turns" + }, + { + "type": "PropertyBool", + "name": "LeftHanded" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyDistance", + "name": "Growth" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyBool", + "name": "Outside" + }, + { + "type": "PropertyBool", + "name": "HasBeenEdited" + }, + { + "type": "PropertyFloatConstraint", + "name": "Tolerance" + }, + { + "type": "PropertyLinkSub", + "name": "ReferenceAxis" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureHole.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BaseProfileType", + "CustomThreadClearance", + "Depth", + "DepthType", + "Diameter", + "DrillForDepth", + "DrillPoint", + "DrillPointAngle", + "HoleCutCountersinkAngle", + "HoleCutCustomValues", + "HoleCutDepth", + "HoleCutDiameter", + "HoleCutType", + "ModelThread", + "Tapered", + "TaperedAngle", + "ThreadClass", + "ThreadDepth", + "ThreadDepthType", + "ThreadDiameter", + "ThreadDirection", + "ThreadFit", + "ThreadSize", + "ThreadType", + "Threaded", + "UseCustomThreadClearance" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureHole.h", + "classes": [ + "CounterBoreDimension", + "CounterSinkDimension", + "CutDimensionKey", + "CutDimensionSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "Threaded" + }, + { + "type": "PropertyBool", + "name": "ModelThread" + }, + { + "type": "PropertyLength", + "name": "ThreadPitch" + }, + { + "type": "PropertyEnumeration", + "name": "ThreadType" + }, + { + "type": "PropertyEnumeration", + "name": "ThreadSize" + }, + { + "type": "PropertyEnumeration", + "name": "ThreadClass" + }, + { + "type": "PropertyEnumeration", + "name": "ThreadFit" + }, + { + "type": "PropertyLength", + "name": "Diameter" + }, + { + "type": "PropertyLength", + "name": "ThreadDiameter" + }, + { + "type": "PropertyEnumeration", + "name": "ThreadDirection" + }, + { + "type": "PropertyEnumeration", + "name": "HoleCutType" + }, + { + "type": "PropertyBool", + "name": "HoleCutCustomValues" + }, + { + "type": "PropertyLength", + "name": "HoleCutDiameter" + }, + { + "type": "PropertyLength", + "name": "HoleCutDepth" + }, + { + "type": "PropertyAngle", + "name": "HoleCutCountersinkAngle" + }, + { + "type": "PropertyEnumeration", + "name": "DepthType" + }, + { + "type": "PropertyLength", + "name": "Depth" + }, + { + "type": "PropertyEnumeration", + "name": "ThreadDepthType" + }, + { + "type": "PropertyLength", + "name": "ThreadDepth" + }, + { + "type": "PropertyEnumeration", + "name": "DrillPoint" + }, + { + "type": "PropertyAngle", + "name": "DrillPointAngle" + }, + { + "type": "PropertyBool", + "name": "DrillForDepth" + }, + { + "type": "PropertyBool", + "name": "Tapered" + }, + { + "type": "PropertyAngle", + "name": "TaperedAngle" + }, + { + "type": "PropertyBool", + "name": "UseCustomThreadClearance" + }, + { + "type": "PropertyLength", + "name": "CustomThreadClearance" + }, + { + "type": "PropertyInteger", + "name": "BaseProfileType" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureLinearPattern.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Direction", + "Direction2", + "Length", + "Length2", + "Mode", + "Mode2", + "Occurrences", + "Occurrences2", + "Offset", + "Offset2", + "Reversed", + "Reversed2", + "SpacingPattern", + "SpacingPattern2", + "Spacings", + "Spacings2" + ], + "propertyMembers": [ + { + "type": "PropertyInteger", + "name": "OccurrencesProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureLinearPattern.h", + "classes": [ + "LinearPatternDirection", + "LinearPatternMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Direction" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Offset" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Occurrences" + }, + { + "type": "PropertyFloatList", + "name": "Spacings" + }, + { + "type": "PropertyFloatList", + "name": "SpacingPattern" + }, + { + "type": "PropertyLinkSub", + "name": "Direction2" + }, + { + "type": "PropertyBool", + "name": "Reversed2" + }, + { + "type": "PropertyEnumeration", + "name": "Mode2" + }, + { + "type": "PropertyLength", + "name": "Length2" + }, + { + "type": "PropertyLength", + "name": "Offset2" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Occurrences2" + }, + { + "type": "PropertyFloatList", + "name": "Spacings2" + }, + { + "type": "PropertyFloatList", + "name": "SpacingPattern2" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureLoft.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Closed", + "Ruled", + "Sections" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureLoft.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "Sections" + }, + { + "type": "PropertyBool", + "name": "Ruled" + }, + { + "type": "PropertyBool", + "name": "Closed" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureMirrored.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "MirrorPlane" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureMirrored.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "MirrorPlane" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureMultiTransform.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Transformations" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureMultiTransform.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Transformations" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePad.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AlongSketchNormal", + "Direction", + "Length", + "Length2", + "Offset", + "Offset2", + "ReferenceAxis", + "SideType", + "TaperAngle", + "TaperAngle2", + "Type", + "Type2", + "UpToFace", + "UpToFace2", + "UpToShape", + "UpToShape2", + "UseCustomVector" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePipe.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AuxiliaryCurvilinear", + "AuxiliarySpine", + "AuxiliarySpineTangent", + "Binormal", + "Mode", + "Sections", + "Spine", + "SpineTangent", + "Transformation", + "Transition" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePipe.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Spine" + }, + { + "type": "PropertyBool", + "name": "SpineTangent" + }, + { + "type": "PropertyLinkSub", + "name": "AuxiliarySpine" + }, + { + "type": "PropertyBool", + "name": "AuxiliarySpineTangent" + }, + { + "type": "PropertyBool", + "name": "AuxiliaryCurvilinear" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyVector", + "name": "Binormal" + }, + { + "type": "PropertyEnumeration", + "name": "Transition" + }, + { + "type": "PropertyEnumeration", + "name": "Transformation" + }, + { + "type": "PropertyLinkSubList", + "name": "Sections" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePocket.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AlongSketchNormal", + "Direction", + "Length", + "Length2", + "Offset", + "Offset2", + "ReferenceAxis", + "SideType", + "TaperAngle", + "TaperAngle2", + "Type", + "Type2", + "UpToFace", + "UpToFace2", + "UpToShape", + "UpToShape2", + "UseCustomVector" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePolarPattern.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Axis", + "Mode", + "Occurrences", + "Offset", + "Reversed", + "SpacingPattern", + "Spacings" + ], + "propertyMembers": [ + { + "type": "PropertyInteger", + "name": "OccurrencesProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePolarPattern.h", + "classes": [ + "PolarPatternMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Axis" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyAngle", + "name": "Offset" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Occurrences" + }, + { + "type": "PropertyFloatList", + "name": "Spacings" + }, + { + "type": "PropertyFloatList", + "name": "SpacingPattern" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePrimitive.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Angle1", + "Angle2", + "Angle3", + "Circumradius", + "Height", + "Length", + "Polygon", + "Radius", + "Radius1", + "Radius2", + "Radius3", + "Width", + "X2max", + "X2min", + "Xmax", + "Xmin", + "Ymax", + "Ymin", + "Z2max", + "Z2min", + "Zmax", + "Zmin" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeaturePrimitive.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Length" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyLength", + "name": "Radius" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyAngle", + "name": "Angle3" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyLength", + "name": "Radius3" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyAngle", + "name": "Angle3" + }, + { + "type": "PropertyLength", + "name": "Radius1" + }, + { + "type": "PropertyLength", + "name": "Radius2" + }, + { + "type": "PropertyAngle", + "name": "Angle1" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyAngle", + "name": "Angle3" + }, + { + "type": "PropertyIntegerConstraint", + "name": "Polygon" + }, + { + "type": "PropertyLength", + "name": "Circumradius" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyDistance", + "name": "Xmin" + }, + { + "type": "PropertyDistance", + "name": "Ymin" + }, + { + "type": "PropertyDistance", + "name": "Zmin" + }, + { + "type": "PropertyDistance", + "name": "Z2min" + }, + { + "type": "PropertyDistance", + "name": "X2min" + }, + { + "type": "PropertyDistance", + "name": "Xmax" + }, + { + "type": "PropertyDistance", + "name": "Ymax" + }, + { + "type": "PropertyDistance", + "name": "Zmax" + }, + { + "type": "PropertyDistance", + "name": "Z2max" + }, + { + "type": "PropertyDistance", + "name": "X2max" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureRefine.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Refine" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureRefine.h", + "classes": [ + "RefineErrorPolicy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "Refine" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureRevolution.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Angle", + "Angle2", + "Axis", + "Base", + "FuseOrder", + "ReferenceAxis", + "Type", + "UpToFace" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureRevolution.h", + "classes": [ + "RevolMethod" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Type" + }, + { + "type": "PropertyVector", + "name": "Base" + }, + { + "type": "PropertyVector", + "name": "Axis" + }, + { + "type": "PropertyAngle", + "name": "Angle" + }, + { + "type": "PropertyAngle", + "name": "Angle2" + }, + { + "type": "PropertyLinkSub", + "name": "ReferenceAxis" + }, + { + "type": "PropertyEnumeration", + "name": "FuseOrder" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureScaled.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Factor", + "Occurrences" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureScaled.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "Factor" + }, + { + "type": "PropertyInteger", + "name": "Occurrences" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureSketchBased.cpp", + "classes": [ + "gp_Pnt_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AllowMultiFace", + "Midplane", + "Profile", + "Reversed", + "UpToFace", + "UpToFace2", + "UpToShape", + "UpToShape2" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureSketchBased.h", + "classes": [ + "ForbiddenAxis" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Profile" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyBool", + "name": "Midplane" + }, + { + "type": "PropertyLinkSub", + "name": "UpToFace" + }, + { + "type": "PropertyLinkSub", + "name": "UpToFace2" + }, + { + "type": "PropertyLinkSubList", + "name": "UpToShape" + }, + { + "type": "PropertyLinkSubList", + "name": "UpToShape2" + }, + { + "type": "PropertyBool", + "name": "AllowMultiFace" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureThickness.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Intersection", + "Join", + "Mode", + "Reversed", + "Value" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureThickness.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Value" + }, + { + "type": "PropertyBool", + "name": "Reversed" + }, + { + "type": "PropertyBool", + "name": "Intersection" + }, + { + "type": "PropertyEnumeration", + "name": "Mode" + }, + { + "type": "PropertyEnumeration", + "name": "Join" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureTransformed.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyFloat" + ], + "propertyRegistrations": [ + "Originals", + "TransformMode" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "floatProp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/FeatureTransformed.h", + "classes": [ + "Mode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Originals" + }, + { + "type": "PropertyEnumeration", + "name": "TransformMode" + }, + { + "type": "PropertyBool", + "name": "Refine" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/ShapeBinder.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BindCopyOnChange", + "BindMode", + "ClaimChildren", + "Context", + "Fuse", + "MakeFace", + "Offset", + "OffsetFill", + "OffsetIntersection", + "OffsetJoinType", + "OffsetOpenResult", + "PartialLoad", + "Refine", + "Relative", + "Support", + "TraceSupport", + "_CopiedLink", + "_Version" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/App/ShapeBinder.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubListGlobal", + "name": "Support" + }, + { + "type": "PropertyBool", + "name": "TraceSupport" + }, + { + "type": "PropertyXLinkSubList", + "name": "Support" + }, + { + "type": "PropertyBool", + "name": "ClaimChildren" + }, + { + "type": "PropertyBool", + "name": "Relative" + }, + { + "type": "PropertyBool", + "name": "Fuse" + }, + { + "type": "PropertyBool", + "name": "MakeFace" + }, + { + "type": "PropertyEnumeration", + "name": "BindMode" + }, + { + "type": "PropertyBool", + "name": "PartialLoad" + }, + { + "type": "PropertyXLink", + "name": "Context" + }, + { + "type": "PropertyInteger", + "name": "_Version" + }, + { + "type": "PropertyEnumeration", + "name": "BindCopyOnChange" + }, + { + "type": "PropertyBool", + "name": "Refine" + }, + { + "type": "PropertyFloat", + "name": "Offset" + }, + { + "type": "PropertyEnumeration", + "name": "OffsetJoinType" + }, + { + "type": "PropertyBool", + "name": "OffsetFill" + }, + { + "type": "PropertyBool", + "name": "OffsetOpenResult" + }, + { + "type": "PropertyBool", + "name": "OffsetIntersection" + }, + { + "type": "PropertyXLinkSub", + "name": "_CopiedLink" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/AppPartDesignGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/Command.cpp", + "classes": [ + "CmdPartDesignCompDatums", + "CmdPartDesignCompSketches" + ], + "typeIdSymbols": [ + "Feature", + "Part2DObject", + "Transformed" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "support" + }, + { + "type": "PropertyLinkSubList", + "name": "support" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/CommandBody.cpp", + "classes": [], + "typeIdSymbols": [ + "BodyBase", + "DatumElement", + "Feature", + "LocalCoordinateSystem", + "ProfileBased", + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/CommandPrimitive.cpp", + "classes": [], + "typeIdSymbols": [ + "Body" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/DlgActiveBody.cpp", + "classes": [], + "typeIdSymbols": [ + "Body" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/EnumFlags.h", + "classes": [ + "AllowSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ReferenceSelection.h", + "classes": [ + "CombineSelectionFilterGates", + "NoDependentsSelection", + "ReferenceSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/SketchWorkflow.cpp", + "classes": [ + "MissingPlanesException", + "PlaneFinder", + "RejectException", + "SketchPreselection", + "SketchRequestSelection", + "SupportFaceValidator", + "SupportNotPlanarException", + "SupportPlaneValidator", + "WrongSelectionException", + "WrongSupportException" + ], + "typeIdSymbols": [ + "Plane", + "ShapeBinder", + "SubShapeBinder" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/SketchWorkflow.h", + "classes": [ + "SketchWorkflow" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskBooleanParameters.h", + "classes": [ + "TaskBooleanParameters", + "TaskDlgBooleanParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskChamferParameters.h", + "classes": [ + "TaskChamferParameters", + "TaskDlgChamferParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskDatumParameters.h", + "classes": [ + "TaskDatumParameters", + "TaskDlgDatumParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskDraftParameters.h", + "classes": [ + "TaskDlgDraftParameters", + "TaskDraftParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskDressUpParameters.h", + "classes": [ + "TaskDlgDressUpParameters", + "TaskDressUpParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskExtrudeParameters.h", + "classes": [ + "Mode", + "Side", + "SideController", + "SidesMode", + "TaskDlgExtrudeParameters", + "TaskExtrudeParameters", + "Type" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskFeatureParameters.h", + "classes": [ + "TaskDlgFeatureParameters", + "TaskFeatureParameters", + "TaskPreviewParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskFeaturePick.h", + "classes": [ + "TaskDlgFeaturePick", + "TaskFeaturePick" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskFilletParameters.h", + "classes": [ + "TaskDlgFilletParameters", + "TaskFilletParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskHelixParameters.h", + "classes": [ + "TaskDlgHelixParameters", + "TaskHelixParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskHoleParameters.h", + "classes": [ + "Observer", + "TaskDlgHoleParameters", + "TaskHoleParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskLoftParameters.h", + "classes": [ + "TaskDlgLoftParameters", + "TaskLoftParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskMirroredParameters.h", + "classes": [ + "TaskDlgMirroredParameters", + "TaskMirroredParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h", + "classes": [ + "TaskDlgMultiTransformParameters", + "TaskMultiTransformParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPadParameters.h", + "classes": [ + "TaskDlgPadParameters", + "TaskPadParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPatternParameters.cpp", + "classes": [ + "constructor" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPatternParameters.h", + "classes": [ + "TaskDlgLinearPatternParameters", + "TaskPatternParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPipeParameters.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPipeParameters.h", + "classes": [ + "StateHandlerTaskPipe", + "TaskDlgPipeParameters", + "TaskPipeOrientation", + "TaskPipeParameters", + "TaskPipeScaling" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPocketParameters.h", + "classes": [ + "TaskDlgPocketParameters", + "TaskPocketParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskPrimitiveParameters.h", + "classes": [ + "TaskBoxPrimitives", + "TaskDlgPrimitiveParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskRevolutionParameters.h", + "classes": [ + "TaskDlgGrooveParameters", + "TaskDlgRevolutionParameters", + "TaskRevolutionParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskScaledParameters.h", + "classes": [ + "TaskDlgScaledParameters", + "TaskScaledParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskShapeBinder.h", + "classes": [ + "TaskDlgShapeBinder", + "TaskShapeBinder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskSketchBasedParameters.h", + "classes": [ + "TaskDlgSketchBasedParameters", + "TaskSketchBasedParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskThicknessParameters.h", + "classes": [ + "TaskDlgThicknessParameters", + "TaskThicknessParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskTransformedMessages.h", + "classes": [ + "TaskTransformedMessages" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/TaskTransformedParameters.h", + "classes": [ + "SelectionMode", + "TaskDlgTransformedParameters", + "TaskTransformedParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/Utils.cpp", + "classes": [], + "typeIdSymbols": [ + "Body", + "Feature", + "PropertyLink", + "PropertyLinkList", + "PropertyLinkSub", + "PropertyLinkSubList" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderBody.cpp", + "classes": [], + "typeIdSymbols": [ + "BodyBase" + ], + "propertyRegistrations": [ + "DisplayModeBody" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderBody.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "DisplayModeBody" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderBoolean.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Display" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderBoolean.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Display" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderDatum.cpp", + "classes": [], + "typeIdSymbols": [ + "Datum", + "SoFaceDetail", + "SoLineDetail", + "SoPointDetail" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderDatumCS.cpp", + "classes": [], + "typeIdSymbols": [ + "SoLineDetail" + ], + "propertyRegistrations": [ + "FontSize", + "ShowLabel", + "Zoom" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderDatumCS.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "Zoom" + }, + { + "type": "PropertyIntegerConstraint", + "name": "FontSize" + }, + { + "type": "PropertyBool", + "name": "ShowLabel" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderShapeBinder.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "UseBinderStyle" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/ViewProviderShapeBinder.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "UseBinderStyle" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/WorkflowManager.cpp", + "classes": [], + "typeIdSymbols": [ + "Body", + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Gui/WorkflowManager.h", + "classes": [ + "Workflow" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/InvoluteGearFeature.py", + "classes": [ + "CommandInvoluteGear", + "_InvoluteGear", + "_InvoluteGearTaskPanel", + "_ViewProviderInvoluteGear" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Scripts/DistanceBolt.py", + "classes": [ + "DistanceBolt" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Edges" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + } + ] + }, + { + "sourceFile": "src/Mod/PartDesign/Scripts/Epitrochoid.py", + "classes": [ + "Epitrochoid" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius1" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius2" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Distance" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Segments" + } + ] + }, + { + "sourceFile": "src/Mod/PartDesign/Scripts/FilletArc.py", + "classes": [ + "Vector" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/Scripts/Parallelepiped.py", + "classes": [ + "BoxCylinder", + "Parallelepiped" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyVector\"", + "name": "A" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "B" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "C" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Source" + } + ] + }, + { + "sourceFile": "src/Mod/PartDesign/Scripts/RadialCopy.py", + "classes": [ + "RadialCopy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Angle" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Source" + } + ] + }, + { + "sourceFile": "src/Mod/PartDesign/Scripts/Spring.py", + "classes": [ + "MySpring" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Pitch" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Diameter" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "BarDiameter" + } + ] + }, + { + "sourceFile": "src/Mod/PartDesign/SprocketFeature.py", + "classes": [ + "CommandSprocket", + "Sprocket", + "SprocketTaskPanel", + "ViewProviderSprocket" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "SprocketReference" + } + ] + }, + { + "sourceFile": "src/Mod/PartDesign/TestPartDesignGui.py", + "classes": [ + "CallableCheckDialogWasClosed", + "CallableCheckExemptionDialog", + "CallableCheckExemptionDialogWasClosed", + "CallableCheckWarning", + "CallableCheckWorkflow", + "CallableComboBox" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/WizardShaft/SegmentFunction.py", + "classes": [ + "IntervalFunction", + "SegmentFunction", + "SegmentFunctionSegment", + "StressFunction", + "TranslationFunction" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/WizardShaft/Shaft.py", + "classes": [ + "Shaft", + "ShaftSegment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/WizardShaft/ShaftDiagram.py", + "classes": [ + "Diagram" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/WizardShaft/ShaftFeature.py", + "classes": [ + "ShaftFeature" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/WizardShaft/WizardShaft.py", + "classes": [ + "TaskWizardShaft", + "WizardShaftGui", + "WizardShaftGuiCallback" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/PartDesign/WizardShaft/WizardShaftTable.py", + "classes": [ + "WizardShaftTable" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Plot", + "sourcePath": "src/Mod/Plot", + "sourceFileCount": 1, + "objectSourceCount": 1, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Plot/Plot.py", + "classes": [ + "Line" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Points", + "sourcePath": "src/Mod/Points", + "sourceFileCount": 33, + "objectSourceCount": 14, + "propertyRegistrationCount": 4, + "propertyMemberCount": 5, + "pythonPropertyCount": 1, + "objects": [ + { + "sourceFile": "src/Mod/Points/App/AppPointsPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/PointsAlgos.cpp", + "classes": [ + "Converter", + "ConverterT", + "DataStreambuf", + "E57ReaderImp", + "Proto" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/PointsFeature.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Points" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/PointsGrid.h", + "classes": [ + "GridElement" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/Properties.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyVector", + "name": "val" + }, + { + "type": "PropertyVector", + "name": "val" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/Structured.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Height", + "Width" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/Structured.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyInteger", + "name": "Width" + }, + { + "type": "PropertyInteger", + "name": "Height" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/App/Tools.h", + "classes": [], + "typeIdSymbols": [ + "PropertyT" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/Gui/AppPointsGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [ + "PropertyPointKernel", + "ViewProviderPoints" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "SoMouseButtonEvent" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/Gui/DlgPointsReadImp.h", + "classes": [ + "DlgPointsReadImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/Gui/ViewProvider.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyColorList", + "PropertyGreyValueList", + "PropertyNormalList", + "SoCoordinate3", + "SoMouseButtonEvent", + "SoPointSet", + "ViewProviderPoints" + ], + "propertyRegistrations": [ + "PointSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/Gui/ViewProvider.h", + "classes": [ + "ViewProviderPointsBuilder" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "PointSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Points/pointscommands/commands.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"Points::PropertyNormalList\"", + "name": "Normal" + } + ] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "ReverseEngineering", + "sourcePath": "src/Mod/ReverseEngineering", + "sourceFileCount": 32, + "objectSourceCount": 19, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 1, + "objects": [ + { + "sourceFile": "src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "'Points::PropertyNormalList'", + "name": "Normal" + } + ] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/App/ApproxSurface.cpp", + "classes": [ + "ScalarProduct" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/App/BSplineFitting.h", + "classes": [ + "BSplineFitting" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/App/RegionGrowing.h", + "classes": [ + "RegionGrowing" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/App/SampleConsensus.h", + "classes": [ + "SampleConsensus" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/App/Segmentation.h", + "classes": [ + "NormalEstimation", + "Segmentation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/App/SurfaceTriangulation.h", + "classes": [ + "GridReconstruction", + "ImageTriangulation", + "MarchingCubesHoppe", + "MarchingCubesRBF", + "MeshConversion", + "PoissonReconstruction", + "SurfaceTriangulation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/AppReverseEngineeringGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature", + "GeoFeature", + "Structured" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/FitBSplineCurve.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/FitBSplineCurve.h", + "classes": [ + "FitBSplineCurveWidget", + "TaskFitBSplineCurve" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/FitBSplineSurface.h", + "classes": [ + "FitBSplineSurfaceWidget", + "TaskFitBSplineSurface" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/Poisson.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/Poisson.h", + "classes": [ + "PoissonWidget", + "TaskPoisson" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/Segmentation.h", + "classes": [ + "Segmentation", + "TaskSegmentation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/SegmentationManual.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/SegmentationManual.h", + "classes": [ + "SegmentationManual", + "TaskSegmentationManual" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/ReverseEngineering/Gui/Workbench.h", + "classes": [ + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Robot", + "sourcePath": "src/Mod/Robot", + "sourceFileCount": 213, + "objectSourceCount": 88, + "propertyRegistrationCount": 31, + "propertyMemberCount": 25, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Robot/App/AppRobot.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/Edge2TracObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "SegValue", + "Source", + "UseRotation" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/Edge2TracObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Source" + }, + { + "type": "PropertyFloatConstraint", + "name": "SegValue" + }, + { + "type": "PropertyBool", + "name": "UseRotation" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/Robot6Axis.h", + "classes": [ + "AxisDefinition" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/RobotObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Axis1", + "Axis2", + "Axis3", + "Axis4", + "Axis5", + "Axis6", + "Base", + "Error", + "Home", + "Position", + "RobotKinematicFile", + "RobotVrmlFile", + "Tcp", + "Tool", + "ToolBase", + "ToolShape" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/RobotObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFileIncluded", + "name": "RobotVrmlFile" + }, + { + "type": "PropertyFileIncluded", + "name": "RobotKinematicFile" + }, + { + "type": "PropertyFloat", + "name": "Axis1" + }, + { + "type": "PropertyPlacement", + "name": "Base" + }, + { + "type": "PropertyPlacement", + "name": "Tool" + }, + { + "type": "PropertyLink", + "name": "ToolShape" + }, + { + "type": "PropertyPlacement", + "name": "ToolBase" + }, + { + "type": "PropertyPlacement", + "name": "Tcp" + }, + { + "type": "PropertyPlacement", + "name": "Position" + }, + { + "type": "PropertyString", + "name": "Error" + }, + { + "type": "PropertyFloatList", + "name": "Home" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/TrajectoryCompound.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/TrajectoryCompound.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Source" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/TrajectoryDressUpObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Acceleration", + "AddType", + "ContType", + "PosAdd", + "Source", + "Speed", + "UseAcceleration", + "UseSpeed" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/TrajectoryDressUpObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertySpeed", + "name": "Speed" + }, + { + "type": "PropertyBool", + "name": "UseSpeed" + }, + { + "type": "PropertyAcceleration", + "name": "Acceleration" + }, + { + "type": "PropertyBool", + "name": "UseAcceleration" + }, + { + "type": "PropertyEnumeration", + "name": "ContType" + }, + { + "type": "PropertyPlacement", + "name": "PosAdd" + }, + { + "type": "PropertyEnumeration", + "name": "AddType" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/TrajectoryObject.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Base", + "Trajectory" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/TrajectoryObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyPlacement", + "name": "Base" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/articulatedbodyinertia.hpp", + "classes": [ + "ArticulatedBodyInertia" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chain.hpp", + "classes": [ + "Chain" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chaindynparam.hpp", + "classes": [ + "ChainDynParam" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainfksolver.hpp", + "classes": [ + "ChainFkSolverAcc", + "ChainFkSolverPos", + "ChainFkSolverVel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainfksolverpos_recursive.hpp", + "classes": [ + "ChainFkSolverPos_recursive" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainfksolvervel_recursive.hpp", + "classes": [ + "ChainFkSolverVel_recursive" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainidsolver.hpp", + "classes": [ + "ChainIdSolver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainidsolver_recursive_newton_euler.hpp", + "classes": [ + "ChainIdSolver_RNE" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainidsolver_vereshchagin.hpp", + "classes": [ + "ChainIdSolver_Vereshchagin", + "segment_info" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolver.hpp", + "classes": [ + "ChainIkSolverAcc", + "ChainIkSolverPos", + "ChainIkSolverVel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolverpos_lma.hpp", + "classes": [ + "ChainIkSolverPos_LMA" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolverpos_nr.hpp", + "classes": [ + "ChainIkSolverPos_NR" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolverpos_nr_jl.hpp", + "classes": [ + "ChainIkSolverPos_NR_JL" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolvervel_pinv.hpp", + "classes": [ + "ChainIkSolverVel_pinv" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolvervel_pinv_givens.hpp", + "classes": [ + "ChainIkSolverVel_pinv_givens" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolvervel_pinv_nso.hpp", + "classes": [ + "ChainIkSolverVel_pinv_nso" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainiksolvervel_wdls.hpp", + "classes": [ + "ChainIkSolverVel_wdls" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/chainjnttojacsolver.hpp", + "classes": [ + "ChainJntToJacSolver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/frameacc.hpp", + "classes": [ + "FrameAcc", + "RotationAcc", + "TwistAcc", + "VectorAcc" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/frames.hpp", + "classes": [ + "AccelerationTwist", + "Frame", + "Frame2", + "Rotation", + "Rotation2", + "Twist", + "Vector", + "Vector2", + "Wrench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/jacobian.hpp", + "classes": [ + "Jacobian" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/jntarray.hpp", + "classes": [ + "JntArray", + "MyTask" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/jntarrayacc.hpp", + "classes": [ + "JntArrayAcc" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/jntarrayvel.hpp", + "classes": [ + "JntArrayVel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/jntspaceinertiamatrix.hpp", + "classes": [ + "JntSpaceInertiaMatrix", + "MyTask" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/joint.hpp", + "classes": [ + "Joint", + "joint_type_exception" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path.hpp", + "classes": [ + "Path" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path_circle.hpp", + "classes": [ + "Path_Circle" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path_composite.hpp", + "classes": [ + "Path_Composite" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path_cyclic_closed.hpp", + "classes": [ + "Path_Cyclic_Closed" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path_line.hpp", + "classes": [ + "Path_Line" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path_point.hpp", + "classes": [ + "Path_Point" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/path_roundedcomposite.hpp", + "classes": [ + "Path_RoundedComposite" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/rigidbodyinertia.hpp", + "classes": [ + "RigidBodyInertia" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/rotational_interpolation.hpp", + "classes": [ + "RotationalInterpolation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/rotational_interpolation_sa.hpp", + "classes": [ + "RotationalInterpolation_SingleAxis" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/rotationalinertia.hpp", + "classes": [ + "RotationalInertia" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/segment.hpp", + "classes": [ + "Segment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/solveri.hpp", + "classes": [ + "MySolver", + "SolverI" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/stiffness.hpp", + "classes": [ + "Stiffness" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/trajectory.hpp", + "classes": [ + "Trajectory" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/trajectory_composite.hpp", + "classes": [ + "Trajectory_Composite" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/trajectory_segment.hpp", + "classes": [ + "Trajectory_Segment" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/trajectory_stationary.hpp", + "classes": [ + "Trajectory_Stationary" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/tree.hpp", + "classes": [ + "Tree", + "TreeElement" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treefksolver.hpp", + "classes": [ + "TreeFkSolverAcc", + "TreeFkSolverPos", + "TreeFkSolverVel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treefksolverpos_recursive.hpp", + "classes": [ + "TreeFkSolverPos_recursive" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treeiksolver.hpp", + "classes": [ + "TreeIkSolverPos", + "TreeIkSolverVel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treeiksolverpos_nr_jl.hpp", + "classes": [ + "TreeIkSolverPos_NR_JL" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treeiksolverpos_online.hpp", + "classes": [ + "TreeIkSolverPos_Online" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treeiksolvervel_wdls.hpp", + "classes": [ + "TreeIkSolverVel_wdls" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/treejnttojacsolver.hpp", + "classes": [ + "TreeJntToJacSolver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/error.h", + "classes": [ + "Error", + "Error_BasicIO", + "Error_BasicIO_Exp_Delim", + "Error_BasicIO_File", + "Error_BasicIO_Not_A_Space", + "Error_BasicIO_Not_Opened", + "Error_BasicIO_ToBig", + "Error_BasicIO_Unexpected", + "Error_ChainIO", + "Error_Chain_Unexpected_id", + "Error_Criterium", + "Error_Criterium_Unexpected_id", + "Error_FrameIO", + "Error_Frame_Frame_Unexpected_id", + "Error_Frame_Rotation_Unexpected_id", + "Error_Frame_Vector_Unexpected_id", + "Error_IO", + "Error_Integrator", + "Error_Limits", + "Error_Limits_Unexpected_id", + "Error_MotionIO", + "Error_MotionIO_Unexpected_MotProf", + "Error_MotionIO_Unexpected_Traj", + "Error_MotionPlanning", + "Error_MotionPlanning_Circle_No_Plane", + "Error_MotionPlanning_Circle_ToSmall", + "Error_MotionPlanning_Incompatible", + "Error_MotionPlanning_Not_Applicable", + "Error_MotionPlanning_Not_Feasible", + "Error_Not_Implemented", + "Error_Redundancy", + "Error_RedundancyIO", + "Error_Redundancy_Illegal_Resolutiontype", + "Error_Redundancy_Low_Manip", + "Error_Redundancy_Unavoidable", + "Error_Stepsize_To_Small", + "Error_Stepsize_Underflow", + "Error_To_Many_Steps" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/rall1d.h", + "classes": [ + "Rall1d" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/rall2d.h", + "classes": [ + "Rall2d" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/rallNd.h", + "classes": [ + "RallNd" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/svd_HH.hpp", + "classes": [ + "SVD_HH" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/traits.h", + "classes": [ + "Traits" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/utilities/utility.h", + "classes": [ + "TI" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/velocityprofile.hpp", + "classes": [ + "VelocityProfile" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/velocityprofile_dirac.hpp", + "classes": [ + "VelocityProfile_Dirac" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/velocityprofile_rect.hpp", + "classes": [ + "VelocityProfile_Rectangular" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/velocityprofile_spline.hpp", + "classes": [ + "VelocityProfile_Spline" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/velocityprofile_trap.hpp", + "classes": [ + "VelocityProfile_Trap" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/App/kdl_cp/velocityprofile_traphalf.hpp", + "classes": [ + "VelocityProfile_TrapHalf" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/AppRobotGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/CommandInsertRobot.cpp", + "classes": [], + "typeIdSymbols": [ + "RobotObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TaskEdge2TracParameter.h", + "classes": [ + "TaskEdge2TracParameter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TaskRobot6Axis.h", + "classes": [ + "TaskRobot6Axis" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TaskRobotControl.h", + "classes": [ + "TaskRobotControl" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TaskRobotMessages.h", + "classes": [ + "TaskRobotMessages" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TaskTrajectory.h", + "classes": [ + "TaskTrajectory" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TaskTrajectoryDressUpParameter.h", + "classes": [ + "TaskTrajectoryDressUpParameter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/TrajectorySimulate.h", + "classes": [ + "TrajectorySimulate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/ViewProviderRobotObject.cpp", + "classes": [], + "typeIdSymbols": [ + "SoVRMLTransform" + ], + "propertyRegistrations": [ + "Manipulator" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Robot/Gui/ViewProviderRobotObject.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "Manipulator" + } + ], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Sandbox", + "sourcePath": "src/Mod/Sandbox", + "sourceFileCount": 22, + "objectSourceCount": 15, + "propertyRegistrationCount": 1, + "propertyMemberCount": 3, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Sandbox/App/AppSandbox.cpp", + "classes": [ + "Module", + "PythonBaseClass" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/App/DocumentProtector.cpp", + "classes": [ + "AbstractCustomProtectorEvent", + "CustomAddObjectEvent", + "CustomCallableEvent", + "CustomPropertyEvent", + "CustomPurgeEvent", + "CustomRecomputeEvent", + "CustomRemoveObjectEvent", + "DocumentReceiver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/App/DocumentProtector.h", + "classes": [ + "AbstractCallable", + "Callable", + "CallableWithArgs" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/App/DocumentProtectorPy.h", + "classes": [ + "DocumentObjectProtectorPy", + "DocumentProtectorPy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/App/DocumentThread.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Integer" + ], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "Name" + }, + { + "type": "PropertyInteger", + "name": "Int" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/App/DocumentThread.h", + "classes": [ + "SandboxObject" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyInteger", + "name": "Integer" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/AppSandboxGui.cpp", + "classes": [ + "Module", + "ObjectObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/Command.cpp", + "classes": [ + "CmdSandboxEventLoop", + "CmdSandboxMeshLoader", + "GDIWidget", + "MeshObject_greater", + "MeshTestJob", + "MeshThread", + "Param", + "RenderArea" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/GLGraphicsView.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [ + "SoCamera", + "SoScXMLStateMachine", + "ViewProvider" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/GLGraphicsView.h", + "classes": [ + "GraphicsView", + "SceneEventFilter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/Overlay.cpp", + "classes": [ + "MyPaintable", + "Rubberband", + "Teapots" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/Overlay.h", + "classes": [ + "DrawingPlane" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/TaskPanelView.cpp", + "classes": [ + "Ui_TaskActionBox", + "Ui_TaskGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/TaskPanelView.h", + "classes": [ + "TaskPanelView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sandbox/Gui/Workbench.h", + "classes": [ + "SoWidgetShape", + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Show", + "sourcePath": "src/Mod/Show", + "sourceFileCount": 15, + "objectSourceCount": 1, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Show/Containers.py", + "classes": [ + "isrightcontainer_func" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Sketcher", + "sourcePath": "src/Mod/Sketcher", + "sourceFileCount": 189, + "objectSourceCount": 103, + "propertyRegistrationCount": 24, + "propertyMemberCount": 16, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Sketcher/App/Analyse.h", + "classes": [ + "ConstraintIds", + "Constraint_Equal", + "Sketcher" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/AppSketcherPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/ExternalGeometryExtension.h", + "classes": [ + "ISketchExternalGeometryExtension" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/ExternalGeometryFacade.cpp", + "classes": [], + "typeIdSymbols": [ + "ExternalGeometryExtension", + "SketchGeometryExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/GeoEnum.h", + "classes": [ + "PointPos" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/GeoList.cpp", + "classes": [], + "typeIdSymbols": [ + "GeomArcOfCircle", + "GeomArcOfEllipse", + "GeomArcOfHyperbola", + "GeomArcOfParabola", + "GeomBSplineCurve", + "GeomCircle", + "GeomEllipse", + "GeomLineSegment", + "GeomPoint" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/GeoList.h", + "classes": [ + "GeoListModel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/GeometryFacade.cpp", + "classes": [], + "typeIdSymbols": [ + "SketchGeometryExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/PythonConverter.cpp", + "classes": [], + "typeIdSymbols": [ + "GeomArcOfCircle", + "GeomArcOfEllipse", + "GeomArcOfHyperbola", + "GeomArcOfParabola", + "GeomBSplineCurve", + "GeomCircle", + "GeomEllipse", + "GeomLineSegment", + "GeomPoint" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/PythonConverter.h", + "classes": [ + "GeoIdMode", + "Mode", + "SingleGeometry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/Sketch.cpp", + "classes": [ + "group" + ], + "typeIdSymbols": [ + "SolverGeometryExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/Sketch.h", + "classes": [ + "ConstrDef", + "GeoDef" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchAnalysis.cpp", + "classes": [ + "EdgeIds", + "Edge_EqualTo", + "Edge_Less", + "EqualityConstraints", + "PointConstraints", + "VertexID_Less", + "VertexIds", + "Vertex_EqualTo", + "Vertex_Less" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchAnalysis.h", + "classes": [ + "Solver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchGeometryExtension.h", + "classes": [ + "ISketchGeometryExtension" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchObject.cpp", + "classes": [ + "GeoHistory" + ], + "typeIdSymbols": [ + "GeometryMigrationExtension", + "SketchGeometryExtension", + "SolverGeometryExtension" + ], + "propertyRegistrations": [ + "ArcFitTolerance", + "Constraints", + "Exports", + "ExternalGeo", + "ExternalGeometry", + "ExternalTypes", + "FullyConstrained", + "Geometry", + "InternalShape", + "MakeInternals", + "_ExternalGeoVersion" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchObject.h", + "classes": [ + "DeleteOption", + "ExtType", + "ExternalToAdd" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyIntegerList", + "name": "ExternalTypes" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchObjectSF.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "SketchFlatFile" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SketchObjectSF.h", + "classes": [ + "SketchObjectSF" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFileIncluded", + "name": "SketchFlatFile" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SolverGeometryExtension.cpp", + "classes": [], + "typeIdSymbols": [ + "GeomArcOfCircle", + "GeomArcOfEllipse", + "GeomArcOfHyperbola", + "GeomArcOfParabola", + "GeomBSplineCurve", + "GeomCircle", + "GeomEllipse", + "GeomLineSegment", + "GeomPoint" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/SolverGeometryExtension.h", + "classes": [ + "Arc", + "ArcOfEllipse", + "ArcOfHyperbola", + "ArcOfParabola", + "BSpline", + "Circle", + "EdgeParameterStatus", + "Ellipse", + "Line", + "Point", + "PointParameterStatus" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/planegcs/Constraints.cpp", + "classes": [], + "typeIdSymbols": [ + "Constraint", + "ConstraintAngleViaPoint", + "ConstraintAngleViaPointAndParam", + "ConstraintAngleViaPointAndTwoParams", + "ConstraintAngleViaTwoPoints", + "ConstraintArcLength", + "ConstraintC2CDistance", + "ConstraintC2LDistance", + "ConstraintCenterOfGravity", + "ConstraintCurveValue", + "ConstraintDifference", + "ConstraintEllipseTangentLine", + "ConstraintEqual", + "ConstraintEqualFocalDistance", + "ConstraintEqualLineLength", + "ConstraintEqualMajorAxesConic", + "ConstraintInternalAlignmentPoint2Ellipse", + "ConstraintInternalAlignmentPoint2Hyperbola", + "ConstraintL2LAngle", + "ConstraintMidpointOnLine", + "ConstraintP2CDistance", + "ConstraintP2LDistance", + "ConstraintP2PAngle", + "ConstraintP2PDistance", + "ConstraintParallel", + "ConstraintPerpendicular", + "ConstraintPointOnBSpline", + "ConstraintPointOnEllipse", + "ConstraintPointOnHyperbola", + "ConstraintPointOnLine", + "ConstraintPointOnParabola", + "ConstraintPointOnPerpBisector", + "ConstraintSlopeAtBSplineKnot", + "ConstraintSnell", + "ConstraintTangentCircumf", + "ConstraintWeightedLinearCombination" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/planegcs/Constraints.h", + "classes": [ + "Alignment", + "ConstraintAngleViaPoint", + "ConstraintAngleViaPointAndParam", + "ConstraintAngleViaPointAndTwoParams", + "ConstraintAngleViaTwoPoints", + "ConstraintArcLength", + "ConstraintC2CDistance", + "ConstraintC2LDistance", + "ConstraintCenterOfGravity", + "ConstraintCurveValue", + "ConstraintDifference", + "ConstraintEllipseTangentLine", + "ConstraintEqual", + "ConstraintEqualFocalDistance", + "ConstraintEqualLineLength", + "ConstraintEqualMajorAxesConic", + "ConstraintInternalAlignmentPoint2Ellipse", + "ConstraintInternalAlignmentPoint2Hyperbola", + "ConstraintL2LAngle", + "ConstraintMidpointOnLine", + "ConstraintP2CDistance", + "ConstraintP2LDistance", + "ConstraintP2PAngle", + "ConstraintP2PDistance", + "ConstraintParallel", + "ConstraintPerpendicular", + "ConstraintPointOnBSpline", + "ConstraintPointOnEllipse", + "ConstraintPointOnHyperbola", + "ConstraintPointOnLine", + "ConstraintPointOnParabola", + "ConstraintPointOnPerpBisector", + "ConstraintSlopeAtBSplineKnot", + "ConstraintSnell", + "ConstraintTangentCircumf", + "ConstraintWeightedLinearCombination" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/planegcs/GCS.cpp", + "classes": [ + "SolverReportingManager" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/App/planegcs/SubSystem.h", + "classes": [ + "SubSystem" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/AppSketcherGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/AutoConstraint.h", + "classes": [ + "AutoConstraint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CircleEllipseConstructionMethod.h", + "classes": [ + "CircleEllipseConstructionMethod" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/Command.cpp", + "classes": [ + "CmdRenderingOrder", + "CmdSketcherGrid", + "CmdSketcherSnap", + "ElementType", + "ExceptionWrongInput" + ], + "typeIdSymbols": [ + "AttachEnginePlane", + "Part2DObject", + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "tmpSupport" + }, + { + "type": "PropertyLinkSubList", + "name": "support" + }, + { + "type": "PropertyLinkSubList", + "name": "support" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/Command.h", + "classes": [ + "GridSpaceAction", + "RenderingOrderAction", + "SnapSpaceAction" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CommandAlterGeometry.cpp", + "classes": [], + "typeIdSymbols": [ + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CommandConstraints.cpp", + "classes": [ + "AvailableConstraint", + "CmdSketcherCompConstrainTools", + "CmdSketcherCompDimensionTools", + "CmdSketcherCompHorizontalVertical", + "CmdSketcherCompToggleConstraints", + "CmdSketcherConstrainAngle", + "CmdSketcherConstrainBlock", + "CmdSketcherConstrainCoincident", + "CmdSketcherConstrainCoincidentUnified", + "CmdSketcherConstrainDiameter", + "CmdSketcherConstrainDistance", + "CmdSketcherConstrainDistanceX", + "CmdSketcherConstrainDistanceY", + "CmdSketcherConstrainEqual", + "CmdSketcherConstrainHorVer", + "CmdSketcherConstrainHorizontal", + "CmdSketcherConstrainLock", + "CmdSketcherConstrainParallel", + "CmdSketcherConstrainPerpendicular", + "CmdSketcherConstrainPointOnObject", + "CmdSketcherConstrainRadiam", + "CmdSketcherConstrainRadius", + "CmdSketcherConstrainSymmetric", + "CmdSketcherConstrainTangent", + "CmdSketcherConstrainVertical", + "CmdSketcherConstraint", + "CoincicenceType", + "ConstraintHintEntry", + "DrawSketchHandlerDimension", + "DrawSketchHandlerGenConstraint", + "GenericConstraintSelection", + "GeomSelectionSizes", + "SelIdPair", + "SketchSelection", + "SketchSelectionItem", + "SpecialConstraint" + ], + "typeIdSymbols": [ + "GeomArcOfCircle", + "GeomArcOfEllipse", + "GeomArcOfHyperbola", + "GeomArcOfParabola", + "GeomBSplineCurve", + "GeomCircle", + "GeomEllipse", + "GeomLineSegment", + "GeomPoint", + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CommandCreateGeo.cpp", + "classes": [ + "CmdSketcherCompCreateArc", + "CmdSketcherCompCreateBSpline", + "CmdSketcherCompCreateConic", + "CmdSketcherCompCreateFillets", + "CmdSketcherCompCreateRectangles", + "CmdSketcherCompCreateRegularPolygon", + "CmdSketcherCompCurveEdition", + "CmdSketcherCompExternal", + "CmdSketcherCompLine", + "CmdSketcherCompSlot" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp", + "classes": [ + "DrawSketchHandlerBSplineInsertKnot" + ], + "typeIdSymbols": [ + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CommandSketcherTools.cpp", + "classes": [ + "CmdSketcherClone", + "CmdSketcherCopy", + "CmdSketcherMove", + "DrawSketchHandlerCopy", + "DrawSketchHandlerRectangularArray", + "SketcherCopy", + "SnapMode" + ], + "typeIdSymbols": [ + "SketchObject", + "SolverGeometryExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/CommandSketcherVirtualSpace.cpp", + "classes": [], + "typeIdSymbols": [ + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/ConstraintFilters.h", + "classes": [ + "FilterValue", + "SpecialFilterValue" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchControllableHandler.h", + "classes": [ + "DrawSketchControllableHandler" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchController.h", + "classes": [ + "ColorManager", + "ControlAmount", + "DrawSketchController", + "OnViewParameterVisibility", + "OnViewParameterVisibilityManager", + "OnViewParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchDefaultHandler.h", + "classes": [ + "ConstructionMethodMachine", + "DefaultConstructionMethod", + "DrawSketchDefaultHandler", + "DrawSketchHandlerPoint", + "FiveSeekEnd", + "FourSeekEnd", + "OneSeekEnd", + "StateMachine", + "ThreeSeekEnd", + "TwoSeekDoEnd", + "TwoSeekEnd" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h", + "classes": [ + "DrawSketchDefaultWidgetController", + "WidgetCheckboxes", + "WidgetComboboxes", + "WidgetParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandler.h", + "classes": [ + "PreselectionData", + "ViewProviderSketchDrawSketchHandlerAttorney" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h", + "classes": [ + "DrawSketchHandlerArc" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerArcOfEllipse.h", + "classes": [ + "DrawSketchHandlerArcOfEllipse", + "SelectMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerArcOfHyperbola.h", + "classes": [ + "DrawSketchHandlerArcOfHyperbola", + "SelectMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerArcOfParabola.h", + "classes": [ + "DrawSketchHandlerArcOfParabola" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h", + "classes": [ + "ArcSlotConstructionMethod", + "DrawSketchHandlerArcSlot" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h", + "classes": [ + "BSplineConstructionMethod", + "DrawSketchHandlerBSpline" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerCarbonCopy.h", + "classes": [ + "CarbonCopySelection", + "DrawSketchHandlerCarbonCopy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h", + "classes": [ + "DrawSketchHandlerCircle" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h", + "classes": [ + "DrawSketchHandlerEllipse" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerExtend.h", + "classes": [ + "DrawSketchHandlerExtend", + "ExtendSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerExternal.h", + "classes": [ + "DrawSketchHandlerExternal", + "ExternalSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerFillet.h", + "classes": [ + "DrawSketchHandlerFillet", + "FilletConstructionMethod", + "FilletSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h", + "classes": [ + "DrawSketchHandlerLine", + "LineConstructionMethod" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerLineSet.h", + "classes": [ + "DrawSketchHandlerLineSet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h", + "classes": [ + "CoincidencePointPos", + "DrawSketchHandlerOffset", + "JoinMode", + "ModeEnums", + "OffsetConstructionMethod" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerPoint.h", + "classes": [ + "DrawSketchHandlerPoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h", + "classes": [ + "DrawSketchHandlerPolygon" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerRectangle.h", + "classes": [ + "DrawSketchHandlerRectangle", + "RectangleConstructionMethod" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h", + "classes": [ + "DrawSketchHandlerRotate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerScale.h", + "classes": [ + "DrawSketchHandlerScale", + "LabelToScale" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h", + "classes": [ + "DrawSketchHandlerSlot" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerSplitting.h", + "classes": [ + "DrawSketchHandlerSplitting", + "SplittingSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerSymmetry.h", + "classes": [ + "DrawSketchHandlerSymmetry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h", + "classes": [ + "DrawSketchHandlerTranslate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchHandlerTrimming.h", + "classes": [ + "DrawSketchHandlerTrimming", + "TrimmingSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/DrawSketchKeyboardManager.h", + "classes": [ + "DrawSketchKeyboardManager", + "KeyboardEventHandlingMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditDatumDialog.h", + "classes": [ + "EditDatumDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeCoinManager.cpp", + "classes": [], + "typeIdSymbols": [ + "SoLineDetail", + "SoPointDetail" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeCoinManager.h", + "classes": [ + "Axes", + "OverlayVisibilityParameter", + "ParameterObserver", + "PreselectionResult" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h", + "classes": [ + "AnalysisResults", + "CoinMapping", + "ConstraintParameters", + "DrawingParameters", + "EditModeScenegraphNodes", + "GeometryLayerNodes", + "GeometryLayerParameters", + "GeometryRendering", + "MultiFieldId", + "OverlayParameters", + "SubLayer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.h", + "classes": [ + "ConstraintNodePosition", + "constrIconQueueItem" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeGeometryCoinConverter.cpp", + "classes": [], + "typeIdSymbols": [ + "GeomArcOfConic", + "GeomBSplineCurve", + "GeomConic", + "GeomLineSegment", + "GeomPoint" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeGeometryCoinConverter.h", + "classes": [ + "AnalyseMode", + "CurveMode", + "EditModeGeometryCoinConverter", + "PointPos", + "PointsMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp", + "classes": [], + "typeIdSymbols": [ + "SolverGeometryExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/EditModeInformationOverlayCoinConverter.h", + "classes": [ + "CalculationType", + "EditModeInformationOverlayCoinConverter", + "Node", + "NodePolygon", + "NodeText", + "PolygonNodePosition", + "TextNodePosition", + "VisualisationType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/GeometryCreationMode.h", + "classes": [ + "GeometryCreationMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/PropertyConstraintListItem.h", + "classes": [ + "PropertyConstraintListItem" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/ShortcutListener.h", + "classes": [ + "ShortcutListener" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SketchMirrorDialog.h", + "classes": [ + "SketchMirrorDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SketchRectangularArrayDialog.h", + "classes": [ + "SketchRectangularArrayDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SketcherRegularPolygonDialog.h", + "classes": [ + "SketcherRegularPolygonDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SketcherSettings.h", + "classes": [ + "AutoScaleMode", + "SketcherSettings", + "SketcherSettingsAppearance", + "SketcherSettingsDisplay", + "SketcherSettingsGrid" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h", + "classes": [ + "FontStyle", + "SketcherToolDefaultWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SketcherTransformationExpressionHelper.h", + "classes": [ + "ConstraintExpressionInfo", + "CopyCalculationParams" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/SnapManager.h", + "classes": [ + "ParameterObserver", + "SnapHandle", + "SnapManager", + "SnapType", + "ViewProviderSketchSnapAttorney" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp", + "classes": [ + "ConstraintItem", + "ExpressionDelegate" + ], + "typeIdSymbols": [ + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherConstraints.h", + "classes": [ + "ActionTarget", + "ConstraintFilterList", + "ConstraintView", + "PendingSelectionUpdate", + "SpecialFilterType", + "TaskSketcherConstraints" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherCreateCommands.h", + "classes": [ + "TaskSketcherCreateCommands" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherElements.cpp", + "classes": [ + "ElementFilterList", + "ElementItem", + "ElementItemDelegate", + "ElementWidgetIcons", + "GeoFilterType", + "GeometryState", + "Layer" + ], + "typeIdSymbols": [ + "GeomArcOfCircle", + "GeomArcOfEllipse", + "GeomArcOfHyperbola", + "GeomArcOfParabola", + "GeomBSplineCurve", + "GeomCircle", + "GeomEllipse", + "GeomLineSegment", + "GeomPoint" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherElements.h", + "classes": [ + "ElementView", + "PendingUpdate", + "SubElementType", + "TaskSketcherElements" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherMessages.h", + "classes": [ + "TaskSketcherMessages" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherSolverAdvanced.h", + "classes": [ + "TaskSketcherSolverAdvanced" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherTool.h", + "classes": [ + "TaskSketcherTool" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/TaskSketcherValidation.h", + "classes": [ + "SketcherValidation", + "TaskSketcherValidation" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/Utils.cpp", + "classes": [], + "typeIdSymbols": [ + "SketchObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/Utils.h", + "classes": [ + "PointPos" + ], + "typeIdSymbols": [ + "ViewProviderSketchGeometryExtension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/ViewProviderSketch.cpp", + "classes": [], + "typeIdSymbols": [ + "SketchObject", + "SoPointDetail", + "SolverGeometryExtension", + "ViewProviderSketchGeometryExtension" + ], + "propertyRegistrations": [ + "AutoColor", + "Autoconstraints", + "AvoidRedundant", + "EditingWorkbench", + "ForceOrtho", + "HideDependent", + "RestoreCamera", + "SectionView", + "ShowLinks", + "ShowSupport", + "TempoVis", + "VisualLayerList" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/ViewProviderSketch.h", + "classes": [ + "Axes", + "DoubleClick", + "Drag", + "ParameterObserver", + "Preselection", + "Selection", + "ToolManager", + "VPRender", + "ViewProviderParameters" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "Autoconstraints" + }, + { + "type": "PropertyBool", + "name": "AvoidRedundant" + }, + { + "type": "PropertyPythonObject", + "name": "TempoVis" + }, + { + "type": "PropertyBool", + "name": "HideDependent" + }, + { + "type": "PropertyBool", + "name": "ShowLinks" + }, + { + "type": "PropertyBool", + "name": "ShowSupport" + }, + { + "type": "PropertyBool", + "name": "RestoreCamera" + }, + { + "type": "PropertyBool", + "name": "ForceOrtho" + }, + { + "type": "PropertyBool", + "name": "SectionView" + }, + { + "type": "PropertyBool", + "name": "AutoColor" + }, + { + "type": "PropertyString", + "name": "EditingWorkbench" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/ViewProviderSketchCoinAttorney.h", + "classes": [ + "ViewProviderSketchCoinAttorney" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Gui/VisualLayer.h", + "classes": [ + "VisualLayer" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Sketcher/Profiles.py", + "classes": [ + "_CommandProfileHexagon1" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Spreadsheet", + "sourcePath": "src/Mod/Spreadsheet", + "sourceFileCount": 60, + "objectSourceCount": 21, + "propertyRegistrationCount": 3, + "propertyMemberCount": 0, + "pythonPropertyCount": 13, + "objects": [ + { + "sourceFile": "src/Mod/Spreadsheet/App/AppSpreadsheet.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/App/Cell.cpp", + "classes": [ + "ReaderPrivate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/App/DisplayUnit.h", + "classes": [ + "DisplayUnit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/App/PropertySheet.cpp", + "classes": [], + "typeIdSymbols": [ + "FunctionExpression" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/App/Sheet.cpp", + "classes": [ + "CurrentAddressLock", + "DirectedS", + "EdgeListS", + "EdgeProperty", + "GraphProperty", + "OutEdgeListS", + "VertexListS", + "VertexProperty" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "cells", + "columnWidths", + "rowHeights" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/App/SheetObserver.h", + "classes": [ + "SheetObserver" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/AppSpreadsheetGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/DlgBindSheet.h", + "classes": [ + "DlgBindSheet" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/DlgSettingsImp.h", + "classes": [ + "DlgSettingsImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/DlgSheetConf.h", + "classes": [ + "DlgSheetConf" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/LineEdit.h", + "classes": [ + "LineEdit", + "XListView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/PropertiesDialog.h", + "classes": [ + "PropertiesDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/SheetModel.h", + "classes": [ + "SheetModel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/SheetTableView.h", + "classes": [ + "SheetTableView", + "SheetViewHeader" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/SheetTableViewAccessibleInterface.h", + "classes": [ + "SheetTableViewAccessibleInterface" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/SpreadsheetDelegate.h", + "classes": [ + "SpreadsheetDelegate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/SpreadsheetView.h", + "classes": [ + "SheetViewPy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheet.cpp", + "classes": [], + "typeIdSymbols": [ + "View3DInventor" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/ZoomableView.h", + "classes": [ + "ZoomableView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/Gui/qtcolorpicker.cpp", + "classes": [ + "ColorPickerButton", + "ColorPickerItem", + "ColorPickerPopup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Spreadsheet/TestSpreadsheet.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Configuration" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "A2" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "body" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Configuration" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "A2" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "body" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PropTrue" + }, + { + "typeExpression": "\"App::PropertyBool\"", + "name": "PropFalse" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "PropL" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "PropH" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "PropI" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PropS" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "PropSEmpty" + } + ] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Start", + "sourcePath": "src/Mod/Start", + "sourceFileCount": 40, + "objectSourceCount": 16, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Start/App/AppStart.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/App/DisplayedFilesModel.h", + "classes": [ + "DisplayedFilesModelRoles" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/App/ThumbnailSource.h", + "classes": [ + "F3DInstallation", + "ThumbnailSource", + "ThumbnailSourceSignals" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/AppStartGui.cpp", + "classes": [ + "Module", + "StartLauncher" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/DlgStartPreferencesImp.h", + "classes": [ + "DlgStartPreferencesImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/FileCardDelegate.h", + "classes": [ + "FileCardDelegate" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/FileCardView.h", + "classes": [ + "FileCardView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/FirstStartWidget.h", + "classes": [ + "FirstStartWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/FlowLayout.h", + "classes": [ + "FlowLayout" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/GeneralSettingsWidget.cpp", + "classes": [], + "typeIdSymbols": [ + "CADNavigationStyle" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/GeneralSettingsWidget.h", + "classes": [ + "GeneralSettingsWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/Manipulator.h", + "classes": [ + "Manipulator" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/NewFileButton.h", + "classes": [ + "NewButton", + "NewFileButton" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/StartView.h", + "classes": [ + "PostStartBehavior" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/Gui/ThemeSelectorWidget.h", + "classes": [ + "Theme", + "ThemeSelectorWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Start/StartMigrator.py", + "classes": [ + "StartMigrator2024" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Surface", + "sourcePath": "src/Mod/Surface", + "sourceFileCount": 52, + "objectSourceCount": 32, + "propertyRegistrationCount": 49, + "propertyMemberCount": 51, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Surface/App/AppSurface.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/Blending/FeatureBlendCurve.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "EndContinuity", + "EndEdge", + "EndParameter", + "EndSize", + "StartContinuity", + "StartEdge", + "StartParameter", + "StartSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/Blending/FeatureBlendCurve.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "StartEdge" + }, + { + "type": "PropertyFloatConstraint", + "name": "StartParameter" + }, + { + "type": "PropertyIntegerConstraint", + "name": "StartContinuity" + }, + { + "type": "PropertyFloatConstraint", + "name": "StartSize" + }, + { + "type": "PropertyLinkSub", + "name": "EndEdge" + }, + { + "type": "PropertyFloatConstraint", + "name": "EndParameter" + }, + { + "type": "PropertyIntegerConstraint", + "name": "EndContinuity" + }, + { + "type": "PropertyFloatConstraint", + "name": "EndSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureCut.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ShapeList" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureCut.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "ShapeList" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureExtend.cpp", + "classes": [], + "typeIdSymbols": [ + "PropertyFloatConstraint" + ], + "propertyRegistrations": [ + "ExtendUNeg", + "ExtendUPos", + "ExtendUSymetric", + "ExtendVNeg", + "ExtendVPos", + "ExtendVSymetric", + "Face", + "SampleU", + "SampleV", + "Tolerance" + ], + "propertyMembers": [ + { + "type": "PropertyFloatConstraint", + "name": "v" + }, + { + "type": "PropertyFloatConstraint", + "name": "v" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureExtend.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Face" + }, + { + "type": "PropertyFloatConstraint", + "name": "Tolerance" + }, + { + "type": "PropertyFloatConstraint", + "name": "ExtendUNeg" + }, + { + "type": "PropertyFloatConstraint", + "name": "ExtendUPos" + }, + { + "type": "PropertyBool", + "name": "ExtendUSymetric" + }, + { + "type": "PropertyFloatConstraint", + "name": "ExtendVNeg" + }, + { + "type": "PropertyFloatConstraint", + "name": "ExtendVPos" + }, + { + "type": "PropertyBool", + "name": "ExtendVSymetric" + }, + { + "type": "PropertyIntegerConstraint", + "name": "SampleU" + }, + { + "type": "PropertyIntegerConstraint", + "name": "SampleV" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureFilling.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Anisotropy", + "BoundaryEdges", + "BoundaryFaces", + "BoundaryOrder", + "Degree", + "FreeFaces", + "FreeOrder", + "InitialFace", + "Iterations", + "MaximumDegree", + "MaximumSegments", + "Points", + "PointsOnCurve", + "TolAngular", + "TolCurvature", + "Tolerance2d", + "Tolerance3d", + "UnboundEdges", + "UnboundFaces", + "UnboundOrder" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureFilling.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "BoundaryEdges" + }, + { + "type": "PropertyStringList", + "name": "BoundaryFaces" + }, + { + "type": "PropertyIntegerList", + "name": "BoundaryOrder" + }, + { + "type": "PropertyLinkSubList", + "name": "UnboundEdges" + }, + { + "type": "PropertyStringList", + "name": "UnboundFaces" + }, + { + "type": "PropertyIntegerList", + "name": "UnboundOrder" + }, + { + "type": "PropertyLinkSubList", + "name": "FreeFaces" + }, + { + "type": "PropertyIntegerList", + "name": "FreeOrder" + }, + { + "type": "PropertyLinkSubList", + "name": "Points" + }, + { + "type": "PropertyLinkSub", + "name": "InitialFace" + }, + { + "type": "PropertyInteger", + "name": "Degree" + }, + { + "type": "PropertyInteger", + "name": "PointsOnCurve" + }, + { + "type": "PropertyInteger", + "name": "Iterations" + }, + { + "type": "PropertyBool", + "name": "Anisotropy" + }, + { + "type": "PropertyFloat", + "name": "Tolerance2d" + }, + { + "type": "PropertyFloat", + "name": "Tolerance3d" + }, + { + "type": "PropertyFloat", + "name": "TolAngular" + }, + { + "type": "PropertyFloat", + "name": "TolCurvature" + }, + { + "type": "PropertyInteger", + "name": "MaximumDegree" + }, + { + "type": "PropertyInteger", + "name": "MaximumSegments" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureGeomFillSurface.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BoundaryList", + "FillType", + "ReversedList" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureGeomFillSurface.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "BoundaryList" + }, + { + "type": "PropertyBoolList", + "name": "ReversedList" + }, + { + "type": "PropertyEnumeration", + "name": "FillType" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureSections.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "NSections" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureSections.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "NSections" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureSewing.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CutFreeEdges", + "DegenerateShape", + "Nonmanifold", + "SewingOption", + "ShapeList", + "Tolerance" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/App/FeatureSewing.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "ShapeList" + }, + { + "type": "PropertyFloat", + "name": "Tolerance" + }, + { + "type": "PropertyBool", + "name": "SewingOption" + }, + { + "type": "PropertyBool", + "name": "DegenerateShape" + }, + { + "type": "PropertyBool", + "name": "CutFreeEdges" + }, + { + "type": "PropertyBool", + "name": "Nonmanifold" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/AppSurfaceGui.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/Blending/TaskBlendCurve.cpp", + "classes": [ + "EdgeSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/Blending/TaskBlendCurve.h", + "classes": [ + "BlendCurvePanel", + "TaskBlendCurve" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/Blending/ViewProviderBlendCurve.h", + "classes": [ + "ViewProviderBlendCurve" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "Feature" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskFilling.cpp", + "classes": [ + "ShapeSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskFilling.h", + "classes": [ + "FillingPanel", + "TaskFilling", + "ViewProviderFilling" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskFillingEdge.cpp", + "classes": [ + "ShapeSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskFillingEdge.h", + "classes": [ + "FillingEdgePanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskFillingVertex.cpp", + "classes": [ + "VertexSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskFillingVertex.h", + "classes": [ + "FillingVertexPanel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskGeomFillSurface.cpp", + "classes": [ + "EdgeSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskGeomFillSurface.h", + "classes": [ + "GeomFillSurface", + "TaskGeomFillSurface", + "ViewProviderGeomFillSurface" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskSections.cpp", + "classes": [ + "ShapeSelection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/TaskSections.h", + "classes": [ + "SectionsPanel", + "TaskSections", + "ViewProviderSections" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/ViewProviderExtend.h", + "classes": [ + "ViewProviderExtend" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Surface/Gui/Workbench.h", + "classes": [ + "Workbench" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "TechDraw", + "sourcePath": "src/Mod/TechDraw", + "sourceFileCount": 486, + "objectSourceCount": 187, + "propertyRegistrationCount": 273, + "propertyMemberCount": 316, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/TechDraw/App/AppTechDrawPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/ArrowPropEnum.h", + "classes": [ + "ArrowType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/BalloonPropEnum.h", + "classes": [ + "BalloonType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/CenterLine.h", + "classes": [ + "Mode", + "Type" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DimensionFormatter.h", + "classes": [ + "Format" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawBrokenView.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Breaks", + "Gap" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawBrokenView.h", + "classes": [ + "BreakListEntry", + "BreakType", + "PieceLimitEntry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Breaks" + }, + { + "type": "PropertyLength", + "name": "Gap" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawComplexSection.cpp", + "classes": [ + "std" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CuttingToolWireObject", + "ProjectionStrategy" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawComplexSection.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "CuttingToolWireObject" + }, + { + "type": "PropertyEnumeration", + "name": "ProjectionStrategy" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawGeomHatch.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "FilePattern", + "NamePattern", + "PatIncluded", + "PatternOffset", + "PatternRotation", + "ScalePattern", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawGeomHatch.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Source" + }, + { + "type": "PropertyFile", + "name": "FilePattern" + }, + { + "type": "PropertyFileIncluded", + "name": "PatIncluded" + }, + { + "type": "PropertyString", + "name": "NamePattern" + }, + { + "type": "PropertyFloatConstraint", + "name": "ScalePattern" + }, + { + "type": "PropertyFloat", + "name": "PatternRotation" + }, + { + "type": "PropertyVector", + "name": "PatternOffset" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawHatch.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "HatchPattern", + "Source", + "SvgIncluded" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawHatch.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSub", + "name": "Source" + }, + { + "type": "PropertyFile", + "name": "HatchPattern" + }, + { + "type": "PropertyFileIncluded", + "name": "SvgIncluded" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawLeaderLine.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AutoHorizontal", + "EndSymbol", + "LeaderParent", + "RotatesWithParent", + "Scalable", + "StartSymbol", + "WayPoints" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawLeaderLine.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "LeaderParent" + }, + { + "type": "PropertyVectorList", + "name": "WayPoints" + }, + { + "type": "PropertyEnumeration", + "name": "StartSymbol" + }, + { + "type": "PropertyEnumeration", + "name": "EndSymbol" + }, + { + "type": "PropertyBool", + "name": "Scalable" + }, + { + "type": "PropertyBool", + "name": "AutoHorizontal" + }, + { + "type": "PropertyBool", + "name": "RotatesWithParent" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawPage.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "KeepUpdated", + "NextBalloonIndex", + "ProjectionType", + "Scale", + "Template", + "Views" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "tmp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawPage.h", + "classes": [ + "PageProjectionConvention" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Views" + }, + { + "type": "PropertyLink", + "name": "Template" + }, + { + "type": "PropertyBool", + "name": "KeepUpdated" + }, + { + "type": "PropertyFloatConstraint", + "name": "Scale" + }, + { + "type": "PropertyEnumeration", + "name": "ProjectionType" + }, + { + "type": "PropertyInteger", + "name": "NextBalloonIndex" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawParametricTemplate.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Template" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawParametricTemplate.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFile", + "name": "Template" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawProjGroup.cpp", + "classes": [ + "DrawView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Anchor", + "AutoDistribute", + "ProjectionType", + "Source", + "XSource", + "spacingX", + "spacingY" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "spacingXProperty" + }, + { + "type": "PropertyFloat", + "name": "spacingYProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawProjGroup.h", + "classes": [ + "ProjDirection", + "RotationMotion", + "SpinDirection", + "ViewProjectionConvention" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Source" + }, + { + "type": "PropertyXLinkList", + "name": "XSource" + }, + { + "type": "PropertyEnumeration", + "name": "ProjectionType" + }, + { + "type": "PropertyBool", + "name": "AutoDistribute" + }, + { + "type": "PropertyLength", + "name": "spacingX" + }, + { + "type": "PropertyLength", + "name": "spacingY" + }, + { + "type": "PropertyLink", + "name": "Anchor" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawProjGroupItem.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "RotationVector", + "Type" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawProjGroupItem.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "Type" + }, + { + "type": "PropertyVector", + "name": "RotationVector" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawProjectSplit.h", + "classes": [ + "edgeSortItem", + "edgeVectorEntry", + "splitPoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawRichAnno.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AnnoParent", + "AnnoText", + "MaxWidth", + "ShowFrame" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawRichAnno.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "AnnoParent" + }, + { + "type": "PropertyString", + "name": "AnnoText" + }, + { + "type": "PropertyBool", + "name": "ShowFrame" + }, + { + "type": "PropertyFloat", + "name": "MaxWidth" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawSVGTemplate.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "PageResult", + "Template" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawSVGTemplate.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFileIncluded", + "name": "PageResult" + }, + { + "type": "PropertyFile", + "name": "Template" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawTemplate.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawPage" + ], + "propertyRegistrations": [ + "EditableTexts", + "Height", + "Orientation", + "Width" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawTemplate.h", + "classes": [ + "Autofill" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Width" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyEnumeration", + "name": "Orientation" + }, + { + "type": "PropertyMap", + "name": "EditableTexts" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawTile.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "TileColumn", + "TileParent", + "TileRow" + ], + "propertyMembers": [ + { + "type": "PropertyInteger", + "name": "TileRowProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawTile.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "TileParent" + }, + { + "type": "PropertyIntegerConstraint", + "name": "TileRow" + }, + { + "type": "PropertyInteger", + "name": "TileColumn" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawTileWeld.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CenterText", + "LeftText", + "RightText", + "SymbolFile", + "SymbolIncluded" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawTileWeld.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "LeftText" + }, + { + "type": "PropertyString", + "name": "RightText" + }, + { + "type": "PropertyString", + "name": "CenterText" + }, + { + "type": "PropertyFile", + "name": "SymbolFile" + }, + { + "type": "PropertyFileIncluded", + "name": "SymbolIncluded" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawUtil.cpp", + "classes": [ + "EdgePoints" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawUtil.h", + "classes": [ + "EdgePoints", + "vectorLessType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawView.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Caption", + "LockPosition", + "Rotation", + "Scale", + "ScaleType", + "X", + "Y" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "tmp" + }, + { + "type": "PropertyLinkGlobal", + "name": "glink" + }, + { + "type": "PropertyLink", + "name": "link" + }, + { + "type": "PropertyFloat", + "name": "XProperty" + }, + { + "type": "PropertyLength", + "name": "X2Property" + }, + { + "type": "PropertyFloat", + "name": "YProperty" + }, + { + "type": "PropertyLength", + "name": "Y2Property" + }, + { + "type": "PropertyFloat", + "name": "RotationProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawView.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyDistance", + "name": "X" + }, + { + "type": "PropertyDistance", + "name": "Y" + }, + { + "type": "PropertyBool", + "name": "LockPosition" + }, + { + "type": "PropertyFloatConstraint", + "name": "Scale" + }, + { + "type": "PropertyEnumeration", + "name": "ScaleType" + }, + { + "type": "PropertyAngle", + "name": "Rotation" + }, + { + "type": "PropertyString", + "name": "Caption" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewAnnotation.cpp", + "classes": [ + "DrawView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Font", + "LineSpace", + "MaxWidth", + "Owner", + "Text", + "TextColor", + "TextSize", + "TextStyle" + ], + "propertyMembers": [ + { + "type": "PropertyPercent", + "name": "LineSpaceProperty" + }, + { + "type": "PropertyFloat", + "name": "MaxWidthProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewAnnotation.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyStringList", + "name": "Text" + }, + { + "type": "PropertyFont", + "name": "Font" + }, + { + "type": "PropertyColor", + "name": "TextColor" + }, + { + "type": "PropertyLength", + "name": "TextSize" + }, + { + "type": "PropertyInteger", + "name": "LineSpace" + }, + { + "type": "PropertyEnumeration", + "name": "TextStyle" + }, + { + "type": "PropertyFloat", + "name": "MaxWidth" + }, + { + "type": "PropertyLink", + "name": "Owner" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewArch.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AllOn", + "CutLineWidth", + "FillSpaces", + "FontSize", + "JoinArch", + "LineSpacing", + "LineWidth", + "RenderMode", + "ShowFill", + "ShowHidden", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewArch.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyBool", + "name": "AllOn" + }, + { + "type": "PropertyEnumeration", + "name": "RenderMode" + }, + { + "type": "PropertyBool", + "name": "FillSpaces" + }, + { + "type": "PropertyBool", + "name": "ShowHidden" + }, + { + "type": "PropertyBool", + "name": "ShowFill" + }, + { + "type": "PropertyFloat", + "name": "LineWidth" + }, + { + "type": "PropertyFloat", + "name": "FontSize" + }, + { + "type": "PropertyFloat", + "name": "CutLineWidth" + }, + { + "type": "PropertyBool", + "name": "JoinArch" + }, + { + "type": "PropertyFloat", + "name": "LineSpacing" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewBalloon.cpp", + "classes": [ + "DrawView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BubbleShape", + "EndType", + "EndTypeScale", + "KinkLength", + "OriginX", + "OriginY", + "ShapeScale", + "SourceView", + "Text", + "TextWrapLen" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "OriginXProperty" + }, + { + "type": "PropertyLength", + "name": "OriginXProperty" + }, + { + "type": "PropertyFloat", + "name": "OriginYProperty" + }, + { + "type": "PropertyLength", + "name": "OriginYProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewBalloon.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "SourceView" + }, + { + "type": "PropertyString", + "name": "Text" + }, + { + "type": "PropertyEnumeration", + "name": "EndType" + }, + { + "type": "PropertyEnumeration", + "name": "BubbleShape" + }, + { + "type": "PropertyFloatConstraint", + "name": "ShapeScale" + }, + { + "type": "PropertyFloatConstraint", + "name": "EndTypeScale" + }, + { + "type": "PropertyDistance", + "name": "OriginX" + }, + { + "type": "PropertyDistance", + "name": "OriginY" + }, + { + "type": "PropertyFloat", + "name": "TextWrapLen" + }, + { + "type": "PropertyDistance", + "name": "KinkLength" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewClip.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Height", + "ShowFrame", + "Views", + "Width" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewClip.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "Width" + }, + { + "type": "PropertyLength", + "name": "Height" + }, + { + "type": "PropertyBool", + "name": "ShowFrame" + }, + { + "type": "PropertyLinkList", + "name": "Views" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewCollection.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Views" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewCollection.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Views" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDetail.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AnchorPoint", + "BaseView", + "Radius", + "Reference", + "ShowHighlight", + "ShowMatting" + ], + "propertyMembers": [ + { + "type": "PropertyPosition", + "name": "tmp" + }, + { + "type": "PropertyLength", + "name": "tmp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDetail.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "BaseView" + }, + { + "type": "PropertyVector", + "name": "AnchorPoint" + }, + { + "type": "PropertyFloat", + "name": "Radius" + }, + { + "type": "PropertyString", + "name": "Reference" + }, + { + "type": "PropertyBool", + "name": "ShowMatting" + }, + { + "type": "PropertyBool", + "name": "ShowHighlight" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDimExtent.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CosmeticTags", + "DirExtent", + "Source", + "Source3d" + ], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "Source" + }, + { + "type": "PropertyLinkSubList", + "name": "Source3d" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDimExtent.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkSubList", + "name": "Source" + }, + { + "type": "PropertyLinkSubList", + "name": "Source3d" + }, + { + "type": "PropertyInteger", + "name": "DirExtent" + }, + { + "type": "PropertyStringList", + "name": "CosmeticTags" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDimension.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AngleOverride", + "Arbitrary", + "ArbitraryTolerances", + "BoxCorners", + "EqualTolerance", + "ExtensionAngle", + "FormatSpec", + "FormatSpecOverTolerance", + "FormatSpecUnderTolerance", + "Inverted", + "LineAngle", + "MeasureType", + "OverTolerance", + "References2D", + "References3D", + "SavedGeometry", + "ShowUnits", + "TheoreticalExact", + "Type", + "UnderTolerance", + "UseActualArea" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "value" + }, + { + "type": "PropertyFloat", + "name": "value" + }, + { + "type": "PropertyQuantity", + "name": "OverToleranceProperty" + }, + { + "type": "PropertyQuantity", + "name": "UnderToleranceProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDimension.h", + "classes": [ + "RefType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyEnumeration", + "name": "MeasureType" + }, + { + "type": "PropertyLinkSubList", + "name": "References2D" + }, + { + "type": "PropertyLinkSubList", + "name": "References3D" + }, + { + "type": "PropertyEnumeration", + "name": "Type" + }, + { + "type": "PropertyBool", + "name": "TheoreticalExact" + }, + { + "type": "PropertyBool", + "name": "Inverted" + }, + { + "type": "PropertyString", + "name": "FormatSpec" + }, + { + "type": "PropertyString", + "name": "FormatSpecOverTolerance" + }, + { + "type": "PropertyString", + "name": "FormatSpecUnderTolerance" + }, + { + "type": "PropertyBool", + "name": "Arbitrary" + }, + { + "type": "PropertyBool", + "name": "ArbitraryTolerances" + }, + { + "type": "PropertyBool", + "name": "EqualTolerance" + }, + { + "type": "PropertyQuantityConstraint", + "name": "OverTolerance" + }, + { + "type": "PropertyQuantityConstraint", + "name": "UnderTolerance" + }, + { + "type": "PropertyBool", + "name": "AngleOverride" + }, + { + "type": "PropertyAngle", + "name": "LineAngle" + }, + { + "type": "PropertyAngle", + "name": "ExtensionAngle" + }, + { + "type": "PropertyVectorList", + "name": "BoxCorners" + }, + { + "type": "PropertyBool", + "name": "UseActualArea" + }, + { + "type": "PropertyBool", + "name": "ShowUnits" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDraft.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Color", + "Direction", + "FontSize", + "LineSpacing", + "LineStyle", + "LineWidth", + "OverrideStyle", + "Source" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewDraft.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyFloat", + "name": "LineWidth" + }, + { + "type": "PropertyFloat", + "name": "FontSize" + }, + { + "type": "PropertyVector", + "name": "Direction" + }, + { + "type": "PropertyColor", + "name": "Color" + }, + { + "type": "PropertyString", + "name": "LineStyle" + }, + { + "type": "PropertyFloat", + "name": "LineSpacing" + }, + { + "type": "PropertyBool", + "name": "OverrideStyle" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewImage.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Height", + "ImageFile", + "ImageIncluded", + "Owner", + "Width" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewImage.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFile", + "name": "ImageFile" + }, + { + "type": "PropertyFileIncluded", + "name": "ImageIncluded" + }, + { + "type": "PropertyFloat", + "name": "Width" + }, + { + "type": "PropertyFloat", + "name": "Height" + }, + { + "type": "PropertyLink", + "name": "Owner" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewMulti.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Sources" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewMulti.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Sources" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewPart.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CoarseView", + "Direction", + "Focus", + "HardHidden", + "IsoCount", + "IsoHidden", + "IsoVisible", + "Perspective", + "ScrubCount", + "SeamHidden", + "SeamVisible", + "SmoothHidden", + "SmoothVisible", + "Source", + "XDirection", + "XSource" + ], + "propertyMembers": [ + { + "type": "PropertyDirection", + "name": "tmp" + }, + { + "type": "PropertyDirection", + "name": "tmp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewPart.h", + "classes": [ + "ProjDirection", + "RotationMotion", + "SpinDirection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLinkList", + "name": "Source" + }, + { + "type": "PropertyXLinkList", + "name": "XSource" + }, + { + "type": "PropertyVector", + "name": "Direction" + }, + { + "type": "PropertyVector", + "name": "XDirection" + }, + { + "type": "PropertyBool", + "name": "Perspective" + }, + { + "type": "PropertyDistance", + "name": "Focus" + }, + { + "type": "PropertyBool", + "name": "CoarseView" + }, + { + "type": "PropertyBool", + "name": "SeamVisible" + }, + { + "type": "PropertyBool", + "name": "SmoothVisible" + }, + { + "type": "PropertyBool", + "name": "OutlinesVisible" + }, + { + "type": "PropertyBool", + "name": "IsoVisible" + }, + { + "type": "PropertyBool", + "name": "HardHidden" + }, + { + "type": "PropertyBool", + "name": "SmoothHidden" + }, + { + "type": "PropertyBool", + "name": "SeamHidden" + }, + { + "type": "PropertyBool", + "name": "OutlinesHidden" + }, + { + "type": "PropertyBool", + "name": "IsoHidden" + }, + { + "type": "PropertyInteger", + "name": "IsoCount" + }, + { + "type": "PropertyInteger", + "name": "ScrubCount" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewSection.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "BaseView", + "CutSurfaceDisplay", + "FileGeomPattern", + "FileHatchPattern", + "FuseBeforeCut", + "HatchOffset", + "HatchRotation", + "HatchScale", + "NameGeomPattern", + "PatIncluded", + "SectionDirection", + "SectionLineStretch", + "SectionNormal", + "SectionOrigin", + "SectionSymbol", + "SvgIncluded", + "TrimAfterCut", + "UsePreviousCut" + ], + "propertyMembers": [ + { + "type": "PropertyPosition", + "name": "tmp" + }, + { + "type": "PropertyDirection", + "name": "tmp" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewSection.h", + "classes": [ + "ChangePoint" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "BaseView" + }, + { + "type": "PropertyVector", + "name": "SectionNormal" + }, + { + "type": "PropertyVector", + "name": "SectionOrigin" + }, + { + "type": "PropertyString", + "name": "SectionSymbol" + }, + { + "type": "PropertyEnumeration", + "name": "SectionDirection" + }, + { + "type": "PropertyEnumeration", + "name": "CutSurfaceDisplay" + }, + { + "type": "PropertyFile", + "name": "FileHatchPattern" + }, + { + "type": "PropertyFile", + "name": "FileGeomPattern" + }, + { + "type": "PropertyFileIncluded", + "name": "SvgIncluded" + }, + { + "type": "PropertyFileIncluded", + "name": "PatIncluded" + }, + { + "type": "PropertyString", + "name": "NameGeomPattern" + }, + { + "type": "PropertyFloat", + "name": "HatchScale" + }, + { + "type": "PropertyFloat", + "name": "HatchRotation" + }, + { + "type": "PropertyVector", + "name": "HatchOffset" + }, + { + "type": "PropertyBool", + "name": "FuseBeforeCut" + }, + { + "type": "PropertyBool", + "name": "TrimAfterCut" + }, + { + "type": "PropertyBool", + "name": "UsePreviousCut" + }, + { + "type": "PropertyFloatConstraint", + "name": "SectionLineStretch" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CellEnd", + "CellStart", + "Font", + "LineWidth", + "Owner", + "Source", + "TextColor", + "TextSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewSpreadsheet.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyString", + "name": "CellStart" + }, + { + "type": "PropertyString", + "name": "CellEnd" + }, + { + "type": "PropertyFont", + "name": "Font" + }, + { + "type": "PropertyColor", + "name": "TextColor" + }, + { + "type": "PropertyFloat", + "name": "LineWidth" + }, + { + "type": "PropertyFloat", + "name": "TextSize" + }, + { + "type": "PropertyLink", + "name": "Owner" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewSymbol.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "EditableTexts", + "Owner", + "Symbol" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawViewSymbol.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "Symbol" + }, + { + "type": "PropertyStringList", + "name": "EditableTexts" + }, + { + "type": "PropertyLink", + "name": "Owner" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawWeldSymbol.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "AllAround", + "AlternatingWeld", + "FieldWeld", + "Leader", + "TailText" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/DrawWeldSymbol.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Leader" + }, + { + "type": "PropertyBool", + "name": "AllAround" + }, + { + "type": "PropertyBool", + "name": "FieldWeld" + }, + { + "type": "PropertyBool", + "name": "AlternatingWeld" + }, + { + "type": "PropertyString", + "name": "TailText" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/FeatureProjection.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Direction", + "HCompound", + "IsoLineHCompound", + "IsoLineVCompound", + "OutLineHCompound", + "OutLineVCompound", + "Rg1LineHCompound", + "Rg1LineVCompound", + "RgNLineHCompound", + "RgNLineVCompound", + "Source", + "VCompound" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/FeatureProjection.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLink", + "name": "Source" + }, + { + "type": "PropertyVector", + "name": "Direction" + }, + { + "type": "PropertyBool", + "name": "VCompound" + }, + { + "type": "PropertyBool", + "name": "Rg1LineVCompound" + }, + { + "type": "PropertyBool", + "name": "RgNLineVCompound" + }, + { + "type": "PropertyBool", + "name": "OutLineVCompound" + }, + { + "type": "PropertyBool", + "name": "IsoLineVCompound" + }, + { + "type": "PropertyBool", + "name": "HCompound" + }, + { + "type": "PropertyBool", + "name": "Rg1LineHCompound" + }, + { + "type": "PropertyBool", + "name": "RgNLineHCompound" + }, + { + "type": "PropertyBool", + "name": "OutLineHCompound" + }, + { + "type": "PropertyBool", + "name": "IsoLineHCompound" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/Geometry.h", + "classes": [ + "EdgeClass", + "ExtractionType", + "GeomType", + "SourceType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/LandmarkDimension.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ReferenceTags" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/LandmarkDimension.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyStringList", + "name": "ReferenceTags" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/LineNameEnum.h", + "classes": [ + "ANSILineType", + "ASMELineType", + "ISOLine" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/Preferences.h", + "classes": [ + "ArrowType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/App/ShapeExtractor.cpp", + "classes": [], + "typeIdSymbols": [ + "Circle", + "Ellipse", + "Line", + "RegularPolygon" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/AppTechDrawGuiPy.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/Command.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject", + "DrawPage", + "DrawView", + "DrawViewClip", + "DrawViewPart", + "Sheet" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/CommandAnnotate.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawLeaderLine", + "DrawViewPart", + "DrawWeldSymbol" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/CommandCreateDims.cpp", + "classes": [ + "AvailableDimension", + "CmdTechDrawCompDimensionTools", + "GeomSelectionSizes", + "SpecialDimension", + "TDHandlerDimension" + ], + "typeIdSymbols": [ + "DrawPage", + "DrawViewDimension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/CommandDecorate.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawPage" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/CommandExtensionDims.cpp", + "classes": [ + "dimVertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/CommandHelpers.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/CommandStack.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawView" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DimensionValidators.cpp", + "classes": [], + "typeIdSymbols": [ + "DocumentObject" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DimensionValidators.h", + "classes": [ + "DimensionGeometry" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawAdvancedImp.h", + "classes": [ + "DlgPrefsTechDrawAdvancedImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h", + "classes": [ + "ArrowType", + "DlgPrefsTechDrawAnnotationImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawColorsImp.h", + "classes": [ + "DlgPrefsTechDrawColorsImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensionsImp.h", + "classes": [ + "ArrowType", + "DlgPrefsTechDrawDimensionsImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawGeneralImp.h", + "classes": [ + "DlgPrefsTechDrawGeneralImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawHLRImp.h", + "classes": [ + "DlgPrefsTechDrawHLRImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgPrefsTechDrawScaleImp.h", + "classes": [ + "DlgPrefsTechDrawScaleImp" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DlgTemplateField.h", + "classes": [ + "DlgTemplateField" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/DrawGuiUtil.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawPage", + "DrawView", + "DrawViewPart" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/Enums.h", + "classes": [ + "DragState" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/MDIViewPage.h", + "classes": [ + "MDIViewPagePy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/PATPathMaker.h", + "classes": [ + "PATPathMaker" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/PagePrinter.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawPage" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/PreferencesGui.h", + "classes": [ + "ArrowType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIDatumLabel.h", + "classes": [ + "QGIDatumLabel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIFace.h", + "classes": [ + "FillMode", + "QGIFace" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIUserTypes.h", + "classes": [ + "UserType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIView.h", + "classes": [ + "ViewFrameMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIViewBalloon.h", + "classes": [ + "ArrowType", + "QGIBalloonLabel" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIViewClip.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawView" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIViewDimension.cpp", + "classes": [ + "SnapMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGIViewPart.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawViewPart" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGTracker.h", + "classes": [ + "TrackerAction", + "TrackerMode" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGVNavStyle.h", + "classes": [ + "KeyCombination" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGVPage.cpp", + "classes": [ + "Private" + ], + "typeIdSymbols": [ + "CADNavigationStyle", + "NavigationStyle" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/QGVPage.h", + "classes": [ + "RendererType" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskActiveView.cpp", + "classes": [], + "typeIdSymbols": [ + "View3DInventor" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskActiveView.h", + "classes": [ + "TaskDlgActiveView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskBalloon.h", + "classes": [ + "TaskBalloon", + "TaskDlgBalloon" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskCenterLine.h", + "classes": [ + "TaskCenterLine", + "TaskDlgCenterLine" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskComplexSection.h", + "classes": [ + "TaskComplexSection", + "TaskDlgComplexSection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskCosVertex.h", + "classes": [ + "TaskCosVertex", + "TaskDlgCosVertex" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskCosmeticCircle.h", + "classes": [ + "TaskCosmeticCircle", + "TaskDlgCosmeticCircle" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskCosmeticLine.h", + "classes": [ + "TaskCosmeticLine", + "TaskDlgCosmeticLine" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskCustomizeFormat.h", + "classes": [ + "TaskCustomizeFormat", + "TaskDlgCustomizeFormat" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskDetail.h", + "classes": [ + "TaskDetail", + "TaskDlgDetail" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskDimRepair.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawViewDimension" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskDimRepair.h", + "classes": [ + "TaskDimRepair", + "TaskDlgDimReference" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskDimension.h", + "classes": [ + "TaskDimension", + "TaskDlgDimension" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskGeomHatch.h", + "classes": [ + "TaskDlgGeomHatch", + "TaskGeomHatch" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskHatch.h", + "classes": [ + "TaskDlgHatch", + "TaskHatch" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskLeaderLine.h", + "classes": [ + "TaskDlgLeaderLine", + "TaskLeaderLine" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskLineDecor.h", + "classes": [ + "TaskDlgLineDecor", + "TaskLineDecor", + "TaskRestoreLines" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskLinkDim.h", + "classes": [ + "TaskDlgLinkDim", + "TaskLinkDim" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskProjGroup.h", + "classes": [ + "DirectionEditDialog", + "TaskDlgProjGroup", + "TaskProjGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskProjection.cpp", + "classes": [], + "typeIdSymbols": [ + "View3DInventor" + ], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskProjection.h", + "classes": [ + "TaskDlgProjection", + "TaskProjection" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskRichAnno.h", + "classes": [ + "TaskDlgRichAnno", + "TaskRichAnno" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskSectionView.h", + "classes": [ + "TaskDlgSectionView", + "TaskSectionView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskSelectLineAttributes.cpp", + "classes": [ + "EdgeColor", + "EdgeWidth" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskSelectLineAttributes.h", + "classes": [ + "TaskDlgSelectLineAttributes", + "TaskSelectLineAttributes", + "dimAttributes", + "lineAttributes" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskSurfaceFinishSymbols.h", + "classes": [ + "SymbolType", + "TaskDlgSurfaceFinishSymbols", + "TaskSurfaceFinishSymbols" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/TaskWeldingSymbol.h", + "classes": [ + "TaskDlgWeldingSymbol", + "TileImage" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Color", + "Font", + "Fontsize", + "LineVisible", + "LineWidth" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "LineWidthProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderBalloon.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFont", + "name": "Font" + }, + { + "type": "PropertyLength", + "name": "Fontsize" + }, + { + "type": "PropertyLength", + "name": "LineWidth" + }, + { + "type": "PropertyBool", + "name": "LineVisible" + }, + { + "type": "PropertyColor", + "name": "Color" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderDimension.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ArrowStyle", + "Arrowsize", + "Color", + "FlipArrowheads", + "Font", + "Fontsize", + "GapFactorASME", + "GapFactorISO", + "LineSpacingFactorISO", + "LineWidth", + "RenderingExtent", + "StandardAndStyle" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "LineWidthProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderDimension.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFont", + "name": "Font" + }, + { + "type": "PropertyLength", + "name": "Fontsize" + }, + { + "type": "PropertyLength", + "name": "Arrowsize" + }, + { + "type": "PropertyEnumeration", + "name": "ArrowStyle" + }, + { + "type": "PropertyLength", + "name": "LineWidth" + }, + { + "type": "PropertyColor", + "name": "Color" + }, + { + "type": "PropertyEnumeration", + "name": "StandardAndStyle" + }, + { + "type": "PropertyEnumeration", + "name": "RenderingExtent" + }, + { + "type": "PropertyBool", + "name": "FlipArrowheads" + }, + { + "type": "PropertyFloat", + "name": "GapFactorISO" + }, + { + "type": "PropertyFloat", + "name": "GapFactorASME" + }, + { + "type": "PropertyFloat", + "name": "LineSpacingFactorISO" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "KeepLabel", + "StackOrder" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderDrawingView.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "KeepLabel" + }, + { + "type": "PropertyInteger", + "name": "StackOrder" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ColorPattern", + "WeightPattern" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderGeomHatch.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "WeightPattern" + }, + { + "type": "PropertyColor", + "name": "ColorPattern" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderHatch.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "HatchColor", + "HatchOffset", + "HatchRotation", + "HatchScale" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderHatch.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColor", + "name": "HatchColor" + }, + { + "type": "PropertyFloatConstraint", + "name": "HatchScale" + }, + { + "type": "PropertyFloat", + "name": "HatchRotation" + }, + { + "type": "PropertyVector", + "name": "HatchOffset" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderImage.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Crop" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderImage.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "Crop" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderLeader.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Color", + "LineStyle", + "LineWidth", + "UseOldCoords" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "LineWidthProperty" + }, + { + "type": "PropertyInteger", + "name": "LineStyleProperty" + }, + { + "type": "PropertyIntegerConstraint", + "name": "LineStyleProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderLeader.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "LineWidth" + }, + { + "type": "PropertyEnumeration", + "name": "LineStyle" + }, + { + "type": "PropertyColor", + "name": "Color" + }, + { + "type": "PropertyBool", + "name": "UseOldCoords" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderPage.cpp", + "classes": [], + "typeIdSymbols": [ + "DrawViewPart" + ], + "propertyRegistrations": [ + "GridSpacing", + "ShowFrames", + "ShowGrid" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderPage.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ShowFrames" + }, + { + "type": "PropertyBool", + "name": "ShowGrid" + }, + { + "type": "PropertyDistance", + "name": "GridSpacing" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "LineColor", + "LineStyle", + "LineWidth" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "LineWidthProperty" + }, + { + "type": "PropertyInteger", + "name": "LineStyleProperty" + }, + { + "type": "PropertyIntegerConstraint", + "name": "LineStyleProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderRichAnno.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "LineWidth" + }, + { + "type": "PropertyEnumeration", + "name": "LineStyle" + }, + { + "type": "PropertyColor", + "name": "LineColor" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ClaimSheetAsChild" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ClaimSheetAsChild" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderSymbol.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "LegacyScaling" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderSymbol.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "LegacyScaling" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ClipChildren" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderViewClip.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyBool", + "name": "ClipChildren" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "ArcCenterMarks", + "BreakLineStyle", + "BreakLineType", + "CenterScale", + "ExtraWidth", + "FaceColor", + "FaceTransparency", + "HiddenWidth", + "HighlightAdjust", + "HighlightLineColor", + "HighlightLineStyle", + "HorizCenterLine", + "IncludeCutLine", + "IsoWidth", + "LineWidth", + "SectionLineColor", + "SectionLineMarks", + "SectionLineStyle", + "ShowAllEdges", + "ShowSectionLine", + "VertCenterLine" + ], + "propertyMembers": [ + { + "type": "PropertyFloat", + "name": "LineWidthProperty" + }, + { + "type": "PropertyFloat", + "name": "HiddenWidthProperty" + }, + { + "type": "PropertyFloat", + "name": "IsoWidthProperty" + }, + { + "type": "PropertyFloat", + "name": "ExtraWidthProperty" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderViewPart.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyLength", + "name": "LineWidth" + }, + { + "type": "PropertyLength", + "name": "HiddenWidth" + }, + { + "type": "PropertyLength", + "name": "IsoWidth" + }, + { + "type": "PropertyLength", + "name": "ExtraWidth" + }, + { + "type": "PropertyBool", + "name": "ArcCenterMarks" + }, + { + "type": "PropertyFloat", + "name": "CenterScale" + }, + { + "type": "PropertyBool", + "name": "HorizCenterLine" + }, + { + "type": "PropertyBool", + "name": "VertCenterLine" + }, + { + "type": "PropertyBool", + "name": "ShowSectionLine" + }, + { + "type": "PropertyBool", + "name": "IncludeCutLine" + }, + { + "type": "PropertyEnumeration", + "name": "SectionLineStyle" + }, + { + "type": "PropertyColor", + "name": "SectionLineColor" + }, + { + "type": "PropertyBool", + "name": "SectionLineMarks" + }, + { + "type": "PropertyEnumeration", + "name": "HighlightLineStyle" + }, + { + "type": "PropertyColor", + "name": "HighlightLineColor" + }, + { + "type": "PropertyFloat", + "name": "HighlightAdjust" + }, + { + "type": "PropertyEnumeration", + "name": "BreakLineType" + }, + { + "type": "PropertyEnumeration", + "name": "BreakLineStyle" + }, + { + "type": "PropertyBool", + "name": "ShowAllEdges" + }, + { + "type": "PropertyColor", + "name": "FaceColor" + }, + { + "type": "PropertyPercent", + "name": "FaceTransparency" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderViewSection.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "CutSurfaceColor", + "CutSurfaceTransparency", + "GeomHatchColor", + "HatchColor", + "HatchCutSurface", + "WeightPattern" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderViewSection.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyColor", + "name": "CutSurfaceColor" + }, + { + "type": "PropertyPercent", + "name": "CutSurfaceTransparency" + }, + { + "type": "PropertyBool", + "name": "HatchCutSurface" + }, + { + "type": "PropertyColor", + "name": "HatchColor" + }, + { + "type": "PropertyColor", + "name": "GeomHatchColor" + }, + { + "type": "PropertyFloat", + "name": "WeightPattern" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderWeld.cpp", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [ + "Font", + "FontSize", + "TileFontSize" + ], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/ViewProviderWeld.h", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [ + { + "type": "PropertyString", + "name": "Font" + }, + { + "type": "PropertyLength", + "name": "FontSize" + }, + { + "type": "PropertyLength", + "name": "TileFontSize" + } + ], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/Widgets/CompassDialWidget.h", + "classes": [ + "CompassDialWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/Widgets/CompassWidget.h", + "classes": [ + "CompassWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/Widgets/VectorEditWidget.h", + "classes": [ + "VectorEditWidget" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/mrichtextedit.h", + "classes": [ + "MRichTextEdit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/Gui/mtextedit.h", + "classes": [ + "MTextEdit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandAxoLengthDimension.py", + "classes": [ + "CommandAxoLengthDimension" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandFillTemplateFields.py", + "classes": [ + "CommandFillTemplateFields" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandHoleShaftFit.py", + "classes": [ + "CommandHoleShaftFit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandMoveView.py", + "classes": [ + "CommandMoveView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandPositionSectionView.py", + "classes": [ + "CommandPositionSectionView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandShareView.py", + "classes": [ + "CommandShareView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py", + "classes": [ + "CommandAddOffsetVertex", + "CommandVertexCreationGroup" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/TaskFillTemplateFields.py", + "classes": [ + "TaskFillTemplateFields" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py", + "classes": [ + "ISO286", + "TaskHoleShaftFit" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/TaskMoveView.py", + "classes": [ + "TaskMoveView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TechDraw/TechDrawTools/TaskShareView.py", + "classes": [ + "TaskShareView" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "TemplatePyMod", + "sourcePath": "src/Mod/TemplatePyMod", + "sourceFileCount": 13, + "objectSourceCount": 6, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 26, + "objects": [ + { + "sourceFile": "src/Mod/TemplatePyMod/Commands.py", + "classes": [ + "PolygonCreator", + "SphereCreator", + "TemplatePyCheckable", + "TemplatePyGroup", + "TemplatePyGrp_1", + "TemplatePyGrp_2", + "TemplatePyGrp_3", + "TemplatePyMod_Cmd1", + "TemplatePyMod_Cmd2", + "TemplatePyMod_Cmd3", + "TemplatePyMod_Cmd4", + "TemplatePyMod_Cmd5", + "TemplatePyMod_Cmd6" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TemplatePyMod/DocumentObject.py", + "classes": [], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + } + ] + }, + { + "sourceFile": "src/Mod/TemplatePyMod/FeaturePython.py", + "classes": [ + "CircleSet", + "DistanceBolt", + "EnumTest", + "Line", + "MeshFeature", + "Molecule", + "Octahedron", + "PartFeature", + "PointFeature", + "ViewProviderBox", + "ViewProviderCircleSet", + "ViewProviderEnumTest", + "ViewProviderLine", + "ViewProviderMesh", + "ViewProviderMolecule", + "ViewProviderOctahedron", + "ViewProviderPoints" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "p1" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "p2" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Width" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + }, + { + "typeExpression": "\"App::PropertyColor\"", + "name": "Color" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "p1" + }, + { + "typeExpression": "\"App::PropertyVector\"", + "name": "p2" + }, + { + "typeExpression": "\"Part::PropertyPartShape\"", + "name": "Shape" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Enum" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Enum2" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Enum3" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "Enum4" + }, + { + "typeExpression": "\"App::PropertyInteger\"", + "name": "Edges" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Length" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Radius" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Height" + } + ] + }, + { + "sourceFile": "src/Mod/TemplatePyMod/PythonQt.py", + "classes": [ + "MainWindow" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TemplatePyMod/TaskPanel.py", + "classes": [ + "TaskCalendar", + "TaskLineEdit", + "TaskManyTaskBoxes", + "TaskPanel", + "TaskWatcher", + "TaskWatcherFilter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/TemplatePyMod/Texture.py", + "classes": [ + "Texture", + "ViewProviderTexture" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Source" + }, + { + "typeExpression": "\"App::PropertyPath\"", + "name": "File" + } + ] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Test", + "sourcePath": "src/Mod/Test", + "sourceFileCount": 28, + "objectSourceCount": 8, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 23, + "objects": [ + { + "sourceFile": "src/Mod/Test/Document.py", + "classes": [ + "Cls", + "Feature", + "GuiObserver", + "Layer", + "LayerViewProvider", + "MyExtension", + "MyFeature", + "Observer", + "Proxy", + "SaveRestoreSpecialGroup", + "SaveRestoreSpecialGroupViewProvider", + "SpecialGroup", + "ViewProvider" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [ + { + "typeExpression": "\"App::PropertyLinkList\"", + "name": "propLink" + }, + { + "typeExpression": "\"App::PropertyEnumeration\"", + "name": "myEnumeration" + }, + { + "typeExpression": "\"App::DocumentObjectExtension\"", + "name": "Property" + }, + { + "typeExpression": "\"App::PropertyPlacementList\"", + "name": "PlmList" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Plm" + }, + { + "typeExpression": "\"App::PropertyRotation\"", + "name": "Rot" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Link" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Link" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "String" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Link" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Link" + }, + { + "typeExpression": "\"App::PropertyLink\"", + "name": "Link" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Test" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "Test" + }, + { + "typeExpression": "\"App::PropertyPythonObject\"", + "name": "Dictionary" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "a" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "b" + }, + { + "typeExpression": "\"App::PropertyString\"", + "name": "Test" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "propA" + }, + { + "typeExpression": "\"App::PropertyFloat\"", + "name": "propB" + }, + { + "typeExpression": "\"App::PropertyPlacement\"", + "name": "Placement" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Prop" + }, + { + "typeExpression": "\"App::PropertyLength\"", + "name": "Prop" + } + ] + }, + { + "sourceFile": "src/Mod/Test/Gui/AppTestGui.cpp", + "classes": [ + "ILoggerBlockerTest", + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Test/Gui/UnitTestImp.h", + "classes": [ + "UnitTestDialog" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Test/Gui/UnitTestPy.h", + "classes": [ + "UnitTestDialogPy" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Test/Gui/qtunittest.py", + "classes": [ + "BaseGUITestRunner", + "RollbackImporter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Test/TestGui.py", + "classes": [ + "TestAllCmd", + "TestAllTextCmd", + "TestBaseCmd", + "TestBaseTextCmd", + "TestCmd", + "TestCreateMenuCmd", + "TestDeleteMenuCmd", + "TestDocCmd", + "TestDocTextCmd", + "TestInsertFeatureCmd", + "TestWorkbenchCmd" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Test/Workbench.py", + "classes": [ + "CallableCheckWarning" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Test/unittestgui.py", + "classes": [ + "BaseGUITestRunner", + "RollbackImporter" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Tux", + "sourcePath": "src/Mod/Tux", + "sourceFileCount": 4, + "objectSourceCount": 0, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [], + "runtimeStatus": "requires-freecad-reference-probe" + }, + { + "name": "Web", + "sourcePath": "src/Mod/Web", + "sourceFileCount": 6, + "objectSourceCount": 2, + "propertyRegistrationCount": 0, + "propertyMemberCount": 0, + "pythonPropertyCount": 0, + "objects": [ + { + "sourceFile": "src/Mod/Web/App/AppWeb.cpp", + "classes": [ + "Module" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + }, + { + "sourceFile": "src/Mod/Web/App/Server.h", + "classes": [ + "AppServer", + "Firewall", + "FirewallPython", + "ServerEvent" + ], + "typeIdSymbols": [], + "propertyRegistrations": [], + "propertyMembers": [], + "pythonProperties": [] + } + ], + "runtimeStatus": "requires-freecad-reference-probe" + } + ] +} diff --git a/config/freecad-web-exact-parity-plan.json b/config/freecad-web-exact-parity-plan.json new file mode 100644 index 0000000..1fd9bfd --- /dev/null +++ b/config/freecad-web-exact-parity-plan.json @@ -0,0 +1,149 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "browserBaseline": "Chrome/150" + }, + "claim": { + "exact": false, + "scope": "All 34 locked FreeCAD modules, formats, entrypoints, GUI states and native document semantics", + "reason": "Compatible browser subsets exist, but no module has completed the full native oracle, round-trip and zero-unknown-difference gate." + }, + "hardBoundaries": [ + "Private FreeCAD MappedNameRef/StringHasher tokens require native evidence and cannot be inferred from final geometry.", + "Intermediate Generated/Modified/Deleted relations require native builder-stage evidence.", + "Isomorphic subshapes without one unique native source remain ambiguous with persisted candidates." + ], + "programs": [ + { + "id": "EX01", + "title": "Exhaustive FreeCAD oracle and optional dependency baseline", + "tasks": [ + { "id": "EX-ORA-01", "title": "Capture exhaustive runtime objects, properties, commands and GUI states", "priority": "P0", "status": "in_progress", "dependencies": [], "deliverables": ["Runtime oracle for every registered TypeId and command", "Success, failure, disabled and cancel fixtures", "Source-to-runtime trace"], "acceptance": ["All inventory candidates are promoted or explicitly excluded", "No command or property has an unknown runtime state"], "evidence": ["check:freecad-inventory", "check:freecad-type-properties", "check:freecad-gui-commands", "check:freecad-oracle-coverage"], "exactBlockedBy": ["Static candidates and GUI-only states are not exhaustively runtime-probed"] }, + { "id": "EX-ORA-02", "title": "Expand geometry, history and FCStd golden corpus to every feature family", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-01"], "deliverables": ["Parameterized success and failure corpus", "Native Shape, history, ElementMap2 and StringHasher evidence", "FreeCAD save-reopen-resave evidence"], "acceptance": ["Every editable feature family has boundary and mutation fixtures", "Unknown semantic differences are zero"], "evidence": ["check:freecad-golden-fixtures", "check:freecad-composite-history-elementmap", "check:freecad-golden-coverage", "check:freecad-parameter-mutations", "check:freecad-partdesign-failures", "check:freecad-partdesign-revolution-groove", "check:freecad-partdesign-transform", "check:freecad-part-builders"], "exactBlockedBy": ["Parameter mutation matrix is fail-closed until every family has explicit edit/recompute/recovery and round-trip evidence"] }, + { "id": "EX-ORA-03", "title": "Lock all optional libraries, platform capabilities and license boundaries", "priority": "P1", "status": "pending", "dependencies": ["EX-ORA-01"], "deliverables": ["Optional dependency manifest", "Browser, sidecar or proxy decision per dependency", "Reproducible hashes and licenses"], "acceptance": ["Every optional FreeCAD capability has one executable strategy", "No undeclared host-only dependency affects a claim"], "evidence": ["check:baseline", "check:sbom"], "exactBlockedBy": ["Several desktop-only optional libraries remain proxy or sidecar capabilities"] } + ] + }, + { + "id": "EX02", + "title": "Kernel, topology history and persistent naming exactness", + "tasks": [ + { "id": "EX-KER-01", "title": "Match OCCT construction, validation, tolerances and failure diagnostics", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-02"], "deliverables": ["Per-operation native differential", "Tolerance and placement contract", "Failure-code map"], "acceptance": ["Shape validity, topology, mass properties and diagnostics match locked FreeCAD fixtures", "Worker ownership returns to zero after every case"], "evidence": ["check:browser-occt", "check:chrome-geometry-features"], "exactBlockedBy": ["Not all FreeCAD builder flags and failure branches are represented"] }, + { "id": "EX-TSN-00", "title": "Fail closed when native naming or builder evidence is absent", "priority": "P0", "status": "completed", "dependencies": [], "deliverables": ["Runtime naming evidence contract", "final-shape-only and ambiguous persistence", "ElementMap2 writer evidence guard"], "acceptance": ["Final geometry cannot mint a private FreeCAD token", "Unproven stage relations and isomorphic sources cannot become stable"], "evidence": ["check:freecad-native-naming-evidence", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": [] }, + { "id": "EX-TSN-01", "title": "Capture native stage Shape and Generated/Modified/Deleted for every builder", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01", "EX-TSN-00"], "deliverables": ["All builder-stage captures", "Multi-input and one-to-many lineage", "Local feature recompute history"], "acceptance": ["Every feature result relation has a producing native stage", "No final-result index is applied to an intermediate Shape"], "evidence": ["check:freecad-composite-history-elementmap", "check:chrome-native-history"], "exactBlockedBy": ["Some providers still return only a final Shape"] }, + { "id": "EX-TSN-02", "title": "Expose native MappedNameRef and StringHasher decisions for every feature", "priority": "P0", "status": "pending", "dependencies": ["EX-TSN-01"], "deliverables": ["Native naming callback ABI", "Per-stage StringHasher evidence", "Lossless ElementMap2 token generation"], "acceptance": ["All new tokens originate in native evidence", "FreeCAD round-trip names remain byte and semantic stable"], "evidence": ["check:freecad-native-naming-evidence"], "exactBlockedBy": ["FreeCAD private naming callbacks are not exposed for every builder"] }, + { "id": "EX-TSN-03", "title": "Resolve isomorphic topology only from unique native provenance", "priority": "P0", "status": "in_progress", "dependencies": ["EX-TSN-01", "EX-TSN-02"], "deliverables": ["Symmetric Boolean corpus", "Candidate provenance graph", "Ambiguity repair lifecycle"], "acceptance": ["Unique native sources resolve deterministically", "Non-unique sources remain ambiguous across save, undo and recompute"], "evidence": ["test:topology-replay", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": ["Symmetric cases without unique native provenance remain intentionally ambiguous"] }, + { "id": "EX-TSN-04", "title": "Close topology naming across all feature edits and FCStd round-trips", "priority": "P0", "status": "pending", "dependencies": ["EX-TSN-02", "EX-TSN-03"], "deliverables": ["Cross-feature mutation matrix", "ElementMap2 history migration", "Long-chain LinkSub stability report"], "acceptance": ["Wrong bindings, unexplained relations and name drift are zero for the exhaustive corpus"], "evidence": ["check:freecad-fcstd-roundtrip", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": ["Exhaustive cross-feature naming corpus is incomplete"] } + ] + }, + { + "id": "EX03", + "title": "Application document, property and recompute semantics", + "tasks": [ + { "id": "EX-DOC-01", "title": "Implement every native property type, flag, editor and serialization rule", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-01"], "deliverables": ["Complete Property schema", "Status and editor metadata", "Binary and XML codecs"], "acceptance": ["Every runtime property fixture round-trips without type coercion or unknown loss"], "evidence": ["check:freecad-type-properties", "check:freecad-fcstd-roundtrip"], "exactBlockedBy": ["The runtime property inventory has unpromoted static candidates"] }, + { "id": "EX-DOC-02", "title": "Match transactions, DAG recompute, partial failure and document observers", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-01", "EX-TSN-04"], "deliverables": ["Transaction and observer event oracle", "Partial recompute scheduler", "Failure recovery contract"], "acceptance": ["Undo, redo, abort, stale and cyclic dependency behavior matches FreeCAD"], "evidence": ["check:document-closure", "test:facade"], "exactBlockedBy": ["Observer ordering and every partial-recompute branch are not yet oracle-backed"] }, + { "id": "EX-DOC-03", "title": "Complete expressions, links, extensions, groups and App object lifecycle", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-01"], "deliverables": ["Expression dependency grammar", "Link and extension lifecycle", "Group and clone semantics"], "acceptance": ["Copy, clone, delete, relink and expression edits survive native round-trip"], "evidence": ["check:fcstd-closure", "check:chrome-production-document"], "exactBlockedBy": ["FeaturePython-backed extensions remain non-executable"] }, + { "id": "EX-DOC-04", "title": "Complete multi-document, external link, merge and recovery workflows", "priority": "P1", "status": "pending", "dependencies": ["EX-DOC-02", "EX-DOC-03"], "deliverables": ["Cross-document Link corpus", "Merge and conflict semantics", "Crash and autosave recovery"], "acceptance": ["Open, close, relink, merge and recovery match the native document graph"], "evidence": ["check:chrome-persistence", "check:project-migration"], "exactBlockedBy": ["Current application is project-first and does not implement every desktop multi-document workflow"] }, + { "id": "EX-DOC-05", "title": "Match parameters, preferences, units, materials and view properties", "priority": "P1", "status": "in_progress", "dependencies": ["EX-DOC-01"], "deliverables": ["Namespaced parameter schema", "Unit and material catalogs", "View property migration"], "acceptance": ["Preference changes affect the same commands and document defaults as FreeCAD"], "evidence": ["check:chrome-app-e2e", "test:locale"], "exactBlockedBy": ["Only the declared browser preference subset is implemented"] } + ] + }, + { + "id": "EX04", + "title": "Sketcher, Part and PartDesign feature exactness", + "tasks": [ + { "id": "EX-SK-01", "title": "Cover every Sketcher geometry, constraint overload and solver classification", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01", "EX-DOC-02"], "deliverables": ["Complete geometry and constraint matrix", "Planegcs result parity", "Reference, redundant and conflict oracle"], "acceptance": ["Geometry, DOF, diagnostics and solver results match every fixture"], "evidence": ["check:freecad-sketcher-constraints", "check:chrome-sketcher-diagnostics"], "exactBlockedBy": ["Arbitrary overload combinations and all failure messages are not exhaustive"] }, + { "id": "EX-SK-02", "title": "Match Sketcher editing tools, autoconstraints, virtual space and UI lifecycle", "priority": "P0", "status": "in_progress", "dependencies": ["EX-SK-01", "EX-UI-03"], "deliverables": ["Pointer and keyboard editor oracle", "All editing tools", "Task and focus lifecycle"], "acceptance": ["Every tool supports success, failure, cancel, undo and redo with matching selection"], "evidence": ["check:freecad-sketcher-editor", "check:chrome-sketcher-bspline"], "exactBlockedBy": ["The full GUI tool and focus matrix is incomplete"] }, + { "id": "EX-PART-01", "title": "Complete all Part primitives, builders, booleans, healing and inspection", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01", "EX-TSN-04"], "deliverables": ["All Part commands and parameters", "Healing and tolerance tools", "Native history for local operations"], "acceptance": ["Success and failure outputs match native Shape, history and diagnostics"], "evidence": ["check:chrome-part-primitives", "check:freecad-golden-fixtures"], "exactBlockedBy": ["Current golden corpus does not enumerate every Part command and option"] }, + { "id": "EX-PD-01", "title": "Complete all PartDesign features, parameters and additive/subtractive combinations", "priority": "P0", "status": "in_progress", "dependencies": ["EX-PART-01", "EX-TSN-04"], "deliverables": ["Complete PartDesign feature matrix", "Body Tip and feature-list semantics", "Per-feature native history and naming"], "acceptance": ["Every feature edit, failure recovery and save-reopen matches FreeCAD"], "evidence": ["check:partdesign-closure", "check:chrome-partdesign-lifecycle"], "exactBlockedBy": ["Feature coverage is broad but private naming and all parameter combinations are not exhaustive"] }, + { "id": "EX-PD-02", "title": "Complete attachment, datum, ShapeBinder, SubShapeBinder and body workflows", "priority": "P0", "status": "pending", "dependencies": ["EX-PD-01", "EX-DOC-04"], "deliverables": ["All map modes and support rules", "Datum and binder lifecycle", "Multi-body and cross-document corpus"], "acceptance": ["Support migration, visibility, Tip and references remain exact through mutation"], "evidence": ["check:chrome-partdesign-lifecycle", "check:freecad-fcstd-roundtrip"], "exactBlockedBy": ["Complete datum/binder and multi-body oracle is absent"] } + ] + }, + { + "id": "EX05", + "title": "FCStd and all import/export entrypoints", + "tasks": [ + { "id": "EX-FC-01", "title": "Round-trip every native FCStd object, property, extension and resource", "priority": "P0", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-TSN-04"], "deliverables": ["Complete native archive model", "Unknown object preservation", "FreeCAD-Web-FreeCAD mutation corpus"], "acceptance": ["No supported object, property, GUI state or resource drifts after mutation and resave"], "evidence": ["check:fcstd-closure", "check:chrome-fcstd-roundtrip"], "exactBlockedBy": ["FCStd currently supports a verified subset plus read-only proxies"] }, + { "id": "EX-FMT-01", "title": "Close BREP, STEP and IGES import/export semantics", "priority": "P0", "status": "in_progress", "dependencies": ["EX-KER-01"], "deliverables": ["Assembly/color/name import", "Unit and tolerance handling", "Deterministic exports"], "acceptance": ["Native and Web topology, metadata and diagnostics match for each format"] , "evidence": ["check:chrome-secondary-formats", "check:browser-occt"], "exactBlockedBy": ["Advanced STEP/IGES metadata and assembly cases are incomplete"] }, + { "id": "EX-FMT-02", "title": "Close STL, OBJ, PLY, DXF, SVG and PDF round-trips", "priority": "P1", "status": "in_progress", "dependencies": ["EX-MESH-01", "EX-DRAFT-01", "EX-TD-01"], "deliverables": ["Mesh and 2D format codecs", "Style/layer metadata", "Import-export failure corpus"], "acceptance": ["All supported entities and metadata round-trip or fail with a registered difference"] , "evidence": ["check:chrome-secondary-formats", "check:document-closure"], "exactBlockedBy": ["Several formats remain read-only or omit advanced entity metadata"] }, + { "id": "EX-FMT-03", "title": "Close IFC, CSV and G-code native object semantics", "priority": "P1", "status": "in_progress", "dependencies": ["EX-BIM-01", "EX-SS-01", "EX-CAM-01"], "deliverables": ["IFC schema and property sets", "Spreadsheet CSV dialect parity", "Path/G-code object round-trip"], "acceptance": ["Import, edit, export and native reopen preserve the declared object graph"] , "evidence": ["check:chrome-bim", "check:document-closure", "check:cam-parity"], "exactBlockedBy": ["IFC and G-code entrypoint inventory still records unsupported desktop semantics"] }, + { "id": "EX-FMT-04", "title": "Implement or explicitly isolate JT, IDF and OpenSCAD resources", "priority": "P2", "status": "pending", "dependencies": ["EX-ORA-03", "EX-PROXY-01"], "deliverables": ["Browser decoder or isolated service per format", "Security and license boundary", "Lossless proxy fallback"], "acceptance": ["Each format is executable with native differential evidence or remains outside the exact claim"] , "evidence": ["check:platform-closure", "check:security-baseline"], "exactBlockedBy": ["JT, IDF and OpenSCAD are proxy modules"] } + ] + }, + { + "id": "EX06", + "title": "FreeCAD GUI and interaction semantics", + "tasks": [ + { "id": "EX-UI-01", "title": "Complete automated FreeCAD GUI oracle for all application states", "priority": "P0", "status": "in_progress", "dependencies": ["EX-ORA-01"], "deliverables": ["Menu, toolbar, dialog and focus manifest", "Selection-state fixtures", "Desktop screenshots and accessibility trees"], "acceptance": ["Empty, document, selection, task, failure and recovery states have no unknown command state"] , "evidence": ["check:freecad-gui-commands", "check:chrome-app-e2e"], "exactBlockedBy": ["Current GUI oracle does not cover every dynamic state"] }, + { "id": "EX-UI-02", "title": "Match application shell, workbench switching, tree, docks and MDI lifecycle", "priority": "P0", "status": "in_progress", "dependencies": ["EX-UI-01", "EX-DOC-04"], "deliverables": ["Dynamic workbench contributions", "Tree and dock lifecycle", "Multi-document tab behavior"], "acceptance": ["Visible, enabled, ordering and focus states match the GUI oracle"] , "evidence": ["check:chrome-app-e2e"], "exactBlockedBy": ["Dynamic command states and full MDI behavior are incomplete"] }, + { "id": "EX-UI-03", "title": "Match Task panels, property editors, dialogs and validation lifecycle", "priority": "P0", "status": "in_progress", "dependencies": ["EX-UI-02", "EX-DOC-01"], "deliverables": ["Generic native editor mapping", "Apply/OK/Cancel transactions", "Keyboard and focus traps"], "acceptance": ["All dialogs and tasks match validation, preview, commit, cancel and recovery behavior"] , "evidence": ["check:chrome-app-e2e", "check:chrome-partdesign-lifecycle"], "exactBlockedBy": ["Only representative tasks and dialogs have complete browser replay"] }, + { "id": "EX-UI-04", "title": "Match 3D selection, context, shortcuts, status, report and long tasks", "priority": "P0", "status": "in_progress", "dependencies": ["EX-UI-02", "EX-TSN-04"], "deliverables": ["Object/subshape selection oracle", "Shortcut conflict map", "Progress, cancel and diagnostics lifecycle"], "acceptance": ["Pointer, keyboard, preselection and report states match for every command context"] , "evidence": ["check:chrome-topology", "check:chrome-app-e2e"], "exactBlockedBy": ["All workbench context combinations and browser-reserved shortcuts are not closed"] }, + { "id": "EX-UI-05", "title": "Replay complete workflows for every workbench and close visual/accessibility diffs", "priority": "P1", "status": "pending", "dependencies": ["EX-UI-03", "EX-UI-04", "EX-PLATFORM-01"], "deliverables": ["Per-workbench recordings", "Desktop and mobile visual baselines", "Accessibility and localization matrix"], "acceptance": ["No unregistered UI difference, overlap, unnamed control or blocked core workflow"] , "evidence": ["check:chrome-app-e2e", "check:chrome-qa08"], "exactBlockedBy": ["Per-workbench exact workflow replay is incomplete"] } + ] + }, + { + "id": "EX07", + "title": "Draft, TechDraw, Spreadsheet and Plot workbenches", + "tasks": [ + { "id": "EX-DRAFT-01", "title": "Complete Draft objects, modifiers, snaps, working planes and BIM interoperability", "priority": "P1", "status": "in_progress", "dependencies": ["EX-DOC-03", "EX-UI-04"], "deliverables": ["All Draft command semantics", "Snap and working-plane oracle", "Native object round-trip"], "acceptance": ["Geometry, properties, selection and diagnostics match FreeCAD"] , "evidence": ["check:chrome-draft", "check:document-closure"], "exactBlockedBy": ["Current Draft implementation is a compatible command subset"] }, + { "id": "EX-TD-01", "title": "Complete TechDraw pages, views, dimensions, annotations and export", "priority": "P1", "status": "in_progress", "dependencies": ["EX-PART-01", "EX-UI-03"], "deliverables": ["All view and annotation objects", "Projection and cosmetic geometry", "SVG/PDF differential"], "acceptance": ["Page rendering, references and exports match native fixtures"] , "evidence": ["check:chrome-techdraw", "check:document-closure"], "exactBlockedBy": ["Advanced TechDraw view/annotation types are not exhaustive"] }, + { "id": "EX-SS-01", "title": "Complete Spreadsheet formulas, aliases, styles, bindings and CSV behavior", "priority": "P1", "status": "in_progress", "dependencies": ["EX-DOC-03"], "deliverables": ["Formula grammar parity", "Style and merge semantics", "Cross-object binding lifecycle"], "acceptance": ["Calculation, errors, formatting and round-trip match native sheets"] , "evidence": ["check:chrome-spreadsheet", "check:document-closure"], "exactBlockedBy": ["Formula and formatting coverage is representative rather than exhaustive"] }, + { "id": "EX-PLOT-01", "title": "Complete Plot data sources, axes, styles and export", "priority": "P2", "status": "in_progress", "dependencies": ["EX-SS-01", "EX-UI-03"], "deliverables": ["Plot object lifecycle", "Style and axis parity", "Image/vector export"], "acceptance": ["Data refresh, view state and exports match the native module"] , "evidence": ["check:chrome-plot", "check:document-closure"], "exactBlockedBy": ["Interactive Plot behaviors and all styles are incomplete"] }, + { "id": "EX-DOCWB-01", "title": "Close document-workbench cross references and shared UI workflows", "priority": "P1", "status": "pending", "dependencies": ["EX-DRAFT-01", "EX-TD-01", "EX-SS-01", "EX-PLOT-01", "EX-UI-05"], "deliverables": ["Cross-workbench mutation corpus", "Shared selection and expression links", "FCStd round-trip"], "acceptance": ["No cross-workbench reference, view or export drift"] , "evidence": ["check:document-closure"], "exactBlockedBy": ["Cross-workbench exhaustive corpus is missing"] } + ] + }, + { + "id": "EX08", + "title": "Assembly, BIM, Surface, Mesh and Material workbenches", + "tasks": [ + { "id": "EX-ASM-01", "title": "Complete Assembly objects, joints, solver, animation and interchange", "priority": "P1", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-TSN-04"], "deliverables": ["All joint and connector types", "Native solver classification", "Assembly FCStd lifecycle"], "acceptance": ["Placements, DOF, diagnostics and edits match native assemblies"] , "evidence": ["check:chrome-assembly", "check:engineering-closure"], "exactBlockedBy": ["Current solver covers a compatible joint subset"] }, + { "id": "EX-BIM-01", "title": "Complete BIM/Arch objects, relationships, IFC and quantity semantics", "priority": "P1", "status": "in_progress", "dependencies": ["EX-DRAFT-01", "EX-DOC-03"], "deliverables": ["All BIM object schemas", "IFC import/export", "Material and quantity sets"], "acceptance": ["Native object graph, properties and IFC round-trip match"] , "evidence": ["check:chrome-bim", "check:engineering-closure"], "exactBlockedBy": ["IFC and advanced BIM object semantics remain incomplete"] }, + { "id": "EX-SURF-01", "title": "Complete Surface construction, trim, sew, offset and repair", "priority": "P1", "status": "in_progress", "dependencies": ["EX-KER-01", "EX-TSN-04"], "deliverables": ["All Surface commands", "Continuity and tolerance controls", "Native topology history"], "acceptance": ["Surface geometry, validity and diagnostics match FreeCAD"] , "evidence": ["check:chrome-surface", "check:engineering-closure"], "exactBlockedBy": ["Advanced curve networks and repair modes are incomplete"] }, + { "id": "EX-MESH-01", "title": "Complete Mesh and MeshPart editing, analysis, repair and conversion", "priority": "P1", "status": "in_progress", "dependencies": ["EX-KER-01"], "deliverables": ["All mesh algorithms", "Repair and evaluation reports", "Shape-mesh conversion parity"], "acceptance": ["Topology, normals, quality metrics and failures match native fixtures"] , "evidence": ["check:chrome-mesh", "check:engineering-closure"], "exactBlockedBy": ["Mesh repair and analysis algorithms are not exhaustive"] }, + { "id": "EX-MAT-01", "title": "Complete Material cards, inheritance, appearance and physical properties", "priority": "P2", "status": "pending", "dependencies": ["EX-DOC-05", "EX-BIM-01"], "deliverables": ["Material schema and catalogs", "Inheritance and overrides", "FCStd and IFC mapping"], "acceptance": ["Material values and appearances survive all native round-trips"] , "evidence": ["check:engineering-closure", "check:freecad-fcstd-roundtrip"], "exactBlockedBy": ["Material module is represented only by compatible shared properties"] } + ] + }, + { + "id": "EX09", + "title": "Analysis, manufacturing, data, scripting and proxy modules", + "tasks": [ + { "id": "EX-FEM-01", "title": "Complete FEM objects, meshers, solvers, materials and result post-processing", "priority": "P1", "status": "in_progress", "dependencies": ["EX-MESH-01", "EX-MAT-01"], "deliverables": ["Solver adapter matrix", "All FEM object schemas", "Result field and visualization parity"], "acceptance": ["Native benchmark decks and result fields match within declared tolerances"] , "evidence": ["check:chrome-fem", "check:platform-closure"], "exactBlockedBy": ["Current FEM solve is a local-reference compatible subset"] }, + { "id": "EX-CAM-01", "title": "Complete CAM Path algorithms, objects, tasks, simulation and machine validation", "priority": "P0", "status": "in_progress", "dependencies": ["EX-PART-01", "EX-UI-03", "EX-FC-01"], "deliverables": ["All Path operations and dress-ups", "Native operation-object FCStd", "CAMotics/OCL differential and machine profiles"], "acceptance": ["Path geometry, tasks, posts and simulation match native fixtures", "Production authorization remains separate and fail-closed"] , "evidence": ["check:cam-parity", "check:cam-pipeline"], "exactBlockedBy": ["Full Path algorithms, FeaturePython objects and browser CAMotics remain incomplete"] }, + { "id": "EX-ROBOT-01", "title": "Complete Robot models, kinematics, trajectories and controller export", "priority": "P2", "status": "in_progress", "dependencies": ["EX-ASM-01"], "deliverables": ["Robot model import", "Kinematics and collision oracle", "Controller program parity"], "acceptance": ["Reachability, placements, paths and exports match native Robot"] , "evidence": ["check:chrome-robot", "check:platform-closure"], "exactBlockedBy": ["Current Robot implementation is a planar compatible subset"] }, + { "id": "EX-DATA-01", "title": "Complete Points and ReverseEngineering algorithms and formats", "priority": "P2", "status": "in_progress", "dependencies": ["EX-MESH-01"], "deliverables": ["Binary/E57 point clouds", "Poisson and region growing", "Curve and surface reconstruction"], "acceptance": ["Native datasets produce matching classifications and fitted geometry"] , "evidence": ["check:chrome-data", "check:platform-closure"], "exactBlockedBy": ["E57, Poisson, region growing and full B-spline reconstruction are missing"] }, + { "id": "EX-INSPECT-01", "title": "Complete measurement, inspection and deviation workflows", "priority": "P2", "status": "in_progress", "dependencies": ["EX-TSN-04", "EX-DATA-01"], "deliverables": ["All measurement objects", "Section and deviation analysis", "Report and export parity"], "acceptance": ["References, values, tolerances and reports match native Inspection/Measure"] , "evidence": ["check:chrome-inspection", "check:platform-closure"], "exactBlockedBy": ["Advanced inspection and Measure commands are incomplete"] }, + { "id": "EX-SCRIPT-01", "title": "Provide capability-secure Python API and macro compatibility", "priority": "P1", "status": "pending", "dependencies": ["EX-DOC-03", "EX-ORA-03"], "deliverables": ["Versioned App/Gui Python API", "Macro lifecycle", "Permission and deterministic execution sandbox"], "acceptance": ["Supported scripts match native effects without ambient file/network authority", "Unsupported native modules fail explicitly"] , "evidence": ["check:chrome-script", "check:security-baseline"], "exactBlockedBy": ["Current sandbox replays Facade commands and does not execute the FreeCAD Python API"] }, + { "id": "EX-ADDON-01", "title": "Complete signed addon packaging, dependency isolation and rollback", "priority": "P2", "status": "in_progress", "dependencies": ["EX-SCRIPT-01", "EX-ORA-03"], "deliverables": ["Addon compatibility manifest", "Signed packages and permissions", "Install, upgrade and rollback lifecycle"], "acceptance": ["Compatible addons install deterministically and cannot escape declared capabilities"] , "evidence": ["check:chrome-addon", "check:platform-closure"], "exactBlockedBy": ["Arbitrary desktop FreeCAD addons cannot run unchanged in the browser"] }, + { "id": "EX-PROXY-01", "title": "Implement or formally exclude Cloud, Help, IDF, JT and OpenSCAD native behavior", "priority": "P2", "status": "pending", "dependencies": ["EX-ORA-03", "EX-SCRIPT-01"], "deliverables": ["Per-module browser architecture", "Data and security contracts", "Native differential fixtures"], "acceptance": ["Each module becomes exact/compatible with evidence or is excluded from the final claim"] , "evidence": ["check:platform-closure"], "exactBlockedBy": ["Five modules remain explicit proxies"] }, + { "id": "EX-PLATFORM-01", "title": "Close all analysis/platform workbench cross-workflows", "priority": "P1", "status": "pending", "dependencies": ["EX-FEM-01", "EX-CAM-01", "EX-ROBOT-01", "EX-DATA-01", "EX-INSPECT-01", "EX-ADDON-01", "EX-PROXY-01"], "deliverables": ["Per-workbench workflow corpus", "Cross-module resources and references", "Zero unexplained capability matrix"], "acceptance": ["All 34 modules have a completed exact task or an explicit claim exclusion"] , "evidence": ["check:platform-closure", "check:release-closure"], "exactBlockedBy": ["Analysis and proxy module exact tasks remain open"] } + ] + }, + { + "id": "EX10", + "title": "Cross-platform quality and exact release gate", + "tasks": [ + { "id": "EX-QA-01", "title": "Run deterministic browser, OS, GPU and device-class matrix", "priority": "P1", "status": "pending", "dependencies": ["EX-UI-05", "EX-PLATFORM-01"], "deliverables": ["Chrome, Firefox and Safari evidence", "GPU fallback matrix", "Desktop, tablet and mobile workflows"], "acceptance": ["All supported platforms have zero unknown semantic or lifecycle difference"] , "evidence": ["check:quality-closure", "check:chrome-performance"], "exactBlockedBy": ["Current executable baseline is Chrome 150 only"] }, + { "id": "EX-QA-02", "title": "Complete accessibility, localization, performance and security certification", "priority": "P1", "status": "in_progress", "dependencies": ["EX-UI-05"], "deliverables": ["Screen-reader and keyboard matrix", "All shipped locales", "Security and performance reports"], "acceptance": ["No unnamed control, inaccessible core workflow, critical vulnerability or budget regression"] , "evidence": ["check:chrome-qa08", "check:chrome-security", "check:chrome-performance"], "exactBlockedBy": ["Full accessibility certification and all locales are not covered"] }, + { "id": "EX-QA-03", "title": "Complete fuzz, stress, migration, crash and long-session reliability gates", "priority": "P1", "status": "in_progress", "dependencies": ["EX-DOC-04", "EX-FC-01"], "deliverables": ["Format and protocol fuzzing", "Million-operation topology and solver replay", "Version migration and rollback matrix"], "acceptance": ["No wrong binding, corruption, leak, stale commit or unrecoverable migration"] , "evidence": ["test:fcstd-fuzz", "test:geometry-input-fuzz", "test:topology-replay", "check:project-migration"], "exactBlockedBy": ["Long-session and cross-version corpus is not exhaustive"] }, + { "id": "EX-REL-01", "title": "Promote system to FreeCAD exact only after every exact gate closes", "priority": "P0", "status": "pending", "dependencies": ["EX-QA-01", "EX-QA-02", "EX-QA-03", "EX-DOCWB-01", "EX-PD-02", "EX-FMT-04"], "deliverables": ["All-task completion report", "Zero-difference capability matrix", "Signed exact release artifacts"], "acceptance": ["All tasks are completed", "Exact modules equal 34", "Wrong bindings, unexplained relations, name drift, unknown semantic differences and release blockers all equal zero"] , "evidence": ["check:release-closure", "check:freecad-exact-history-elementmap-gate"], "exactBlockedBy": ["Upstream exact tasks remain open"] } + ] + } + ], + "moduleCoverage": { + "AddonManager": ["EX-ADDON-01"], "Assembly": ["EX-ASM-01"], "BIM": ["EX-BIM-01"], "CAM": ["EX-CAM-01"], "Cloud": ["EX-PROXY-01"], "Draft": ["EX-DRAFT-01"], "Fem": ["EX-FEM-01"], "Help": ["EX-PROXY-01"], "Idf": ["EX-PROXY-01", "EX-FMT-04"], "Import": ["EX-FMT-01", "EX-FMT-02", "EX-FMT-03"], "Inspection": ["EX-INSPECT-01"], "JtReader": ["EX-PROXY-01", "EX-FMT-04"], "Material": ["EX-MAT-01"], "Measure": ["EX-INSPECT-01"], "Mesh": ["EX-MESH-01"], "MeshPart": ["EX-MESH-01"], "OpenSCAD": ["EX-PROXY-01", "EX-FMT-04"], "Part": ["EX-PART-01"], "PartDesign": ["EX-PD-01", "EX-PD-02"], "Plot": ["EX-PLOT-01"], "Points": ["EX-DATA-01"], "ReverseEngineering": ["EX-DATA-01"], "Robot": ["EX-ROBOT-01"], "Sandbox": ["EX-SCRIPT-01"], "Show": ["EX-UI-04"], "Sketcher": ["EX-SK-01", "EX-SK-02"], "Spreadsheet": ["EX-SS-01"], "Start": ["EX-UI-02"], "Surface": ["EX-SURF-01"], "TechDraw": ["EX-TD-01"], "TemplatePyMod": ["EX-SCRIPT-01"], "Test": ["EX-QA-03"], "Tux": ["EX-QA-03"], "Web": ["EX-QA-01", "EX-UI-05"] + }, + "entrypointCoverage": { + "formats": { + "FCStd": ["EX-FC-01"], "BREP": ["EX-FMT-01"], "STEP": ["EX-FMT-01"], "IGES": ["EX-FMT-01"], "STL": ["EX-FMT-02"], "OBJ": ["EX-FMT-02"], "PLY": ["EX-FMT-02"], "DXF": ["EX-FMT-02"], "SVG": ["EX-FMT-02"], "PDF": ["EX-FMT-02"], "IFC": ["EX-FMT-03"], "CSV": ["EX-FMT-03"], "GCODE": ["EX-FMT-03"], "JT": ["EX-FMT-04"], "IDF": ["EX-FMT-04"] + }, + "entrypoints": { + "python-api": ["EX-SCRIPT-01"], "macro-fcmacro": ["EX-SCRIPT-01"], "addon-package": ["EX-ADDON-01"], "preferences": ["EX-DOC-05"], "clipboard": ["EX-UI-03"], "print-job": ["EX-TD-01", "EX-UI-03"] + } + }, + "promotionGate": { + "finalTask": "EX-REL-01", + "requiredExactModules": 34, + "requiredZeroMetrics": ["wrongBindings", "unexplainedRelations", "roundtripNameDrift", "unknownSemanticDifferences", "namingEvidenceMissing", "namingEvidenceBoundaryViolations", "unexplainedModules", "releaseBlockers"], + "requiredEvidenceClasses": ["native-oracle", "browser-runtime", "save-reopen-roundtrip", "failure-cancel-recovery", "resource-release", "security", "accessibility", "signed-release"] + } +} diff --git a/config/freecad-web-exact-promotion-report.schema.json b/config/freecad-web-exact-promotion-report.schema.json new file mode 100644 index 0000000..06ef8e4 --- /dev/null +++ b/config/freecad-web-exact-promotion-report.schema.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://bitbybit.local/schema/freecad-web-exact-promotion-report.schema.json", + "title": "FreeCAD Web exact promotion report", + "type": "object", + "additionalProperties": true, + "required": ["schemaVersion", "taskId", "completedTasks", "exactModules", "metrics", "evidenceClasses"], + "properties": { + "schemaVersion": { "const": 1 }, + "taskId": { "const": "EX-REL-01" }, + "completedTasks": { "const": 52 }, + "exactModules": { "const": 34 }, + "metrics": { + "type": "object", + "required": ["wrongBindings", "unexplainedRelations", "roundtripNameDrift", "unknownSemanticDifferences", "namingEvidenceMissing", "namingEvidenceBoundaryViolations", "unexplainedModules", "releaseBlockers"], + "properties": { + "wrongBindings": { "const": 0 }, + "unexplainedRelations": { "const": 0 }, + "roundtripNameDrift": { "const": 0 }, + "unknownSemanticDifferences": { "const": 0 }, + "namingEvidenceMissing": { "const": 0 }, + "namingEvidenceBoundaryViolations": { "const": 0 }, + "unexplainedModules": { "const": 0 }, + "releaseBlockers": { "const": 0 } + } + }, + "evidenceClasses": { + "type": "array", + "uniqueItems": true, + "contains": { "const": "native-oracle" }, + "minItems": 8, + "items": { "enum": ["native-oracle", "browser-runtime", "save-reopen-roundtrip", "failure-cancel-recovery", "resource-release", "security", "accessibility", "signed-release"] } + } + } +} diff --git a/config/npm-audit-critical.json b/config/npm-audit-critical.json new file mode 100644 index 0000000..2b807f0 --- /dev/null +++ b/config/npm-audit-critical.json @@ -0,0 +1,26 @@ +{ + "schemaVersion": 1, + "status": "pass", + "command": "npm audit --omit=dev --audit-level=critical --json", + "lockfileSha256": "5ef4482b10ad8738577e391638ad986b942d95ba62ab8834a40a97a24c6af950", + "auditReportVersion": 2, + "metadata": { + "vulnerabilities": { + "info": 0, + "low": 0, + "moderate": 0, + "high": 0, + "critical": 0, + "total": 0 + }, + "dependencies": { + "prod": 23, + "dev": 151, + "optional": 79, + "peer": 0, + "peerOptional": 0, + "total": 173 + } + }, + "vulnerabilities": {} +} diff --git a/config/occt-browser-verification.json b/config/occt-browser-verification.json new file mode 100644 index 0000000..710e6d8 --- /dev/null +++ b/config/occt-browser-verification.json @@ -0,0 +1,75 @@ +{ + "schemaVersion": 1, + "generatedAt": "2026-08-04T02:38:11.015Z", + "headers": { + "coop": "same-origin", + "coep": "require-corp" + }, + "browsers": [ + { + "browserId": "chrome", + "status": "pass", + "report": { + "schemaVersion": 1, + "browserId": "chrome", + "crossOriginIsolated": true, + "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/150.0.0.0 Safari/537.36", + "opfs": { + "status": "pass", + "persistence": "opfs", + "bytes": 11 + }, + "initialize": "8.0.0", + "history": { + "provider": "occt-native", + "recordCount": 42 + }, + "memory": { + "iterations": 1000, + "budgets": { + "wasmPeakBytes": 268435456, + "wasmRetainedBytes": 16777216, + "browserRetainedBytes": 67108864, + "gpuLiveResources": 0 + }, + "wasm": { + "heapBefore": 134217728, + "heapAfter": 134217728, + "peakHeapBytes": 134217728, + "retainedBytes": 0 + }, + "browser": { + "before": { + "api": "measureUserAgentSpecificMemory", + "bytes": 138633658 + }, + "after": { + "api": "measureUserAgentSpecificMemory", + "bytes": 139103318 + }, + "retainedBytes": 469660 + }, + "gpu": { + "scope": "native-boolean-worker", + "created": 0, + "released": 0, + "live": 0 + }, + "ownership": { + "created": 3000, + "released": 3000, + "live": 0 + }, + "withinBudget": true + }, + "abort": "recovered", + "crashRecovery": "recovered" + }, + "exitCode": null, + "signal": null, + "stdout": "", + "stderr": "sm/8d599eaa6cf1e47b_1\": No such file or directory (2)\n[3723837:3723856:0803/223810.958720:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Code Cache/wasm/8d599eaa6cf1e47b_s\": No such file or directory (2)\n[3723881:3723899:0803/223810.959681:VERBOSE1:net/base/network_delegate.cc:38] NetworkDelegate::NotifyBeforeURLRequest: http://127.0.0.1:36085/native/occt-history/bitbybit-occt-history.js\n[3723881:3723898:0803/223810.959843:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Cache/Cache_Data/5e52789ec7e0792d_1\": No such file or directory (2)\n[3723881:3723898:0803/223810.959860:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Cache/Cache_Data/5e52789ec7e0792d_s\": No such file or directory (2)\n[3723837:3723856:0803/223810.963095:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Code Cache/js/ddd955dd468990b6_1\": No such file or directory (2)\n[3723837:3723856:0803/223810.963114:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Code Cache/js/ddd955dd468990b6_s\": No such file or directory (2)\n[3723881:3723899:0803/223810.969656:VERBOSE1:net/base/network_delegate.cc:38] NetworkDelegate::NotifyBeforeURLRequest: http://127.0.0.1:36085/native/occt-history/bitbybit-occt-history.wasm\n[3723881:3723898:0803/223810.970929:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Cache/Cache_Data/3901a7ebf89b4154_1\": No such file or directory (2)\n[3723881:3723898:0803/223810.970952:VERBOSE1:base/files/file_util_posix.cc:309] Cannot stat \"/tmp/bitbybit-occt-chrome-3723825/Default/Cache/Cache_Data/3901a7ebf89b4154_s\": No such file or directory (2)\n[3723881:3723899:0803/223811.011318:VERBOSE1:net/base/network_delegate.cc:38] NetworkDelegate::NotifyBeforeURLRequest: http://127.0.0.1:36085/__occt-report\n" + } + ], + "status": "pass" +} diff --git a/config/occt-upstream-drift-baseline.json b/config/occt-upstream-drift-baseline.json new file mode 100644 index 0000000..191a682 --- /dev/null +++ b/config/occt-upstream-drift-baseline.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 1, + "bitbybit": { + "version": "1.1.1", + "sourceCommit": "d3f52bd1fcf78148b60800d69ed6b42e53f4ad06", + "wasmSha256": "1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656", + "declarationPath": "node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.d.ts", + "surfaceInterfaces": [ + "BRepAlgoAPI_Fuse", + "BRepAlgoAPI_Cut", + "BRepAlgoAPI_Common", + "BOPAlgo_Builder", + "TopTools_ListOfShape" + ], + "surfaceSha256": "6b45be08de6efd9f062cf97a21619eeb3ed2570dc96b8bc4bc808e1e93b349fc" + }, + "nativeOcct": { + "version": "8.0.0", + "sourceCommit": "bb75017e915f6509a4bfa8b551f853352754c2da", + "javascriptSha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557", + "wasmSha256": "b6cb6307399b188cdf1377e9294b4af8e36b21783693101db8f985e41cff5fbe" + }, + "golden": { + "manifestScenarioCount": 100, + "manifestSha256": "cc5896238f6165faba1561ee770812765119fc9b1a5dfcf841531a6131f2f980", + "threeWayScenarioCount": 26, + "threeWayReportSha256": "2ed24ff542aaf835d288218e2719b1710eb207cd2871e6c4ce42fc478044ec31", + "operationCounts": { "cut": 10, "fuse": 8, "common": 8 } + } +} diff --git a/config/opencamlib-wasm-artifact.json b/config/opencamlib-wasm-artifact.json new file mode 100644 index 0000000..c20ef9f --- /dev/null +++ b/config/opencamlib-wasm-artifact.json @@ -0,0 +1,67 @@ +{ + "schemaVersion": 1, + "status": "pass", + "openCamLib": { + "sourcePath": "OpenCAMLib", + "sourceRevision": "95b036fe28ce6d77c97b98e5fbc337904ae49560", + "bindingSource": "OpenCAMLib/src/emscriptenlib/emscriptenlib.cpp", + "buildTarget": "ocl", + "emscriptenVersion": "3.1.69", + "boostVersion": "1.83.0", + "artifact": "public/vendor/opencamlib/ocl.js", + "artifactFormat": "emscripten-single-file-embedded-wasm", + "byteLength": 504062, + "sha256": "0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89", + "algorithms": [ + "path-drop-cutter", + "adaptive-path-drop-cutter", + "waterline", + "adaptive-waterline" + ], + "buildNote": "The upstream Closure minification flag is removed from generated link metadata because the host Emscripten package does not ship the closure-compiler executable; OCL sources, Embind bindings and WASM code generation are unchanged." + }, + "solidRemoval": { + "backend": "bitbybit-occt-wasm", + "model": "sampled-flat-end-brep", + "nativeSolid": true, + "freeCadNativeEquivalent": false + }, + "camotics": { + "status": "native-host-available", + "backend": "camotics-native-host-qt5-tpl", + "sourcePath": "CAMotics", + "sourceRevision": "e84665f2fa9d1151f03282ac7e01320bc65e015b", + "cbangPath": ".cache/camotics-native/cbang", + "cbangRevision": "9b6672a0e2b800a909d799ffa3ab46774cf171b8", + "sourceFiles": [ + "CAMotics/src/gcode/machine/GCodeMachine.cpp", + "CAMotics/src/tplang/GCodeModule.cpp", + "CAMotics/src/camotics/sim/ToolSweep.cpp" + ], + "nativeExecutable": true, + "nativeBuildStatus": "verified-qt5-gui-tpl", + "nativeGuiPath": "CAMotics/camotics", + "nativeTplPath": "CAMotics/tplang", + "nativeArtifactEvidence": "config/camotics-native-artifact.json", + "browserExecutable": false, + "browserWasmKernelExecutable": true, + "browserWasmKernel": { + "artifact": "public/vendor/camotics/camotics-sweep.wasm", + "sha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b", + "scope": ["conic-sweep", "spheroid-sweep", "sweep-bounding-boxes"], + "fullCamoticsProgram": false, + "gcodeParserIncluded": false + }, + "generationAuthority": "camotics-source-stage", + "parserAuthority": "linuxcnc-wasm", + "camoticsParsesCanonicalGcode": false, + "inspectedWorkspace": "/home/mes123456/working_Web_FreeCAD_Bitbybit", + "reason": "CAMotics 1.3 native Qt5 GUI and TPL compiler are built from the pinned source with C! 1.7.2 and V8 pointer compression disabled to match the Debian V8 ABI. Browser code does not execute the ELF, Qt GUI, or TPL compiler; its source-stage motion contract emits G-code and LinuxCNC WASM remains the only canonical parser/controller authority.", + "pipeline": { + "order": ["cad", "opencamlib-wasm", "camotics-source-stage", "gcode", "linuxcnc-wasm-parse-execute"], + "canonicalGcodeAuthority": "linuxcnc-wasm", + "camoticsSemanticParser": false, + "linuxcncWasmExecution": "handoff-required" + } + } +} diff --git a/config/planegcs-wasm-artifact.json b/config/planegcs-wasm-artifact.json new file mode 100644 index 0000000..b4355cb --- /dev/null +++ b/config/planegcs-wasm-artifact.json @@ -0,0 +1,17 @@ +{ + "schemaVersion": 1, + "freecadVersion": "1.1.1", + "freecadCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "emscriptenVersion": "3.1.69", + "pthreadPoolSize": 2, + "javascript": { + "path": "native/planegcs/dist/freecad-planegcs.js", + "publicPath": "public/native/planegcs/freecad-planegcs.js", + "sha256": "702d267b856b8a1c9d1a031fbbd9780419c3e359a99d7d6922b5df668ed79d2e" + }, + "wasm": { + "path": "native/planegcs/dist/freecad-planegcs.wasm", + "publicPath": "public/native/planegcs/freecad-planegcs.wasm", + "sha256": "6acf170b2cb87c4287c1b814d899612d89048d9b0eac244a84c4916f07ca27d7" + } +} diff --git a/config/platform-module-coverage.json b/config/platform-module-coverage.json new file mode 100644 index 0000000..7b96eec --- /dev/null +++ b/config/platform-module-coverage.json @@ -0,0 +1,40 @@ +{ + "schemaVersion": 1, + "baseline": { "freecadVersion": "1.1.1", "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" }, + "modules": [ + { "name": "AddonManager", "level": "compatible", "evidence": "check:chrome-addon", "boundary": "Signed Facade-only catalog; desktop Python execution is excluded." }, + { "name": "Assembly", "level": "compatible", "evidence": "check:engineering-closure", "boundary": "Controlled joints, motion, Worker, tools and FCStd links." }, + { "name": "BIM", "level": "compatible", "evidence": "check:engineering-closure", "boundary": "Controlled hierarchy, quantities and IFC2X3/IFC4 summaries." }, + { "name": "CAM", "level": "compatible", "evidence": "check:chrome-cam", "boundary": "Job/Stock, SetupSheet, ToolBit/Controller, deterministic Profile/Pocket/Drilling and dress-up paths, collision diagnostics, and seven allowlisted posts; OpenCamLib/CAMotics and production machine certification remain explicit external boundaries." }, + { "name": "Cloud", "level": "proxy", "evidence": "check:chrome-script", "boundary": "Network capability is denied; cloud payloads remain explicit resources." }, + { "name": "Draft", "level": "compatible", "evidence": "check:document-closure", "boundary": "Working plane, core 2D objects, transforms, trim and arrays." }, + { "name": "Fem", "level": "compatible", "evidence": "check:chrome-fem", "boundary": "Local axial reference solver with named sets and result fields." }, + { "name": "Help", "level": "proxy", "evidence": "check:pwa", "boundary": "Static offline help resources; desktop Qt help engine is excluded." }, + { "name": "Idf", "level": "proxy", "evidence": "check:chrome-data", "boundary": "Byte-preserving specialist adapter." }, + { "name": "Import", "level": "compatible", "evidence": "check:fcstd-closure", "boundary": "FCStd and declared primary/secondary format adapters." }, + { "name": "Inspection", "level": "compatible", "evidence": "check:chrome-inspection", "boundary": "Measurements, section, deviation and TopoRef reports." }, + { "name": "JtReader", "level": "proxy", "evidence": "check:chrome-data", "boundary": "Byte-preserving JT inspection adapter." }, + { "name": "Material", "level": "compatible", "evidence": "check:chrome-data", "boundary": "Material cards and assignment metadata." }, + { "name": "Measure", "level": "compatible", "evidence": "check:chrome-inspection", "boundary": "Distance, angle, area, volume and deviation units." }, + { "name": "Mesh", "level": "compatible", "evidence": "check:engineering-closure", "boundary": "Analysis, repair fixtures, OBJ/PLY/STL and Worker LOD." }, + { "name": "MeshPart", "level": "compatible", "evidence": "check:engineering-closure", "boundary": "OCCT shape tessellation into the Mesh contract." }, + { "name": "OpenSCAD", "level": "proxy", "evidence": "check:chrome-data", "boundary": "SCAD bytes and metadata preserved without executing OpenSCAD." }, + { "name": "Part", "level": "compatible", "evidence": "check:chrome-fcstd-golden", "boundary": "Controlled Part operations and 100-model format goldens." }, + { "name": "PartDesign", "level": "compatible", "evidence": "check:partdesign-closure", "boundary": "Parameterized feature lifecycle and native history gates." }, + { "name": "Plot", "level": "compatible", "evidence": "check:document-closure", "boundary": "Bound series and PNG/SVG/CSV export." }, + { "name": "Points", "level": "compatible", "evidence": "check:chrome-data", "boundary": "ASCII ASC/PTS/XYZ/CSV/PCD/PLY point clouds with import/export, merge, bounds/polygon crop, structure, voxel reduction and deterministic OPFS lifecycle; E57 and binary formats remain outside the browser subset." }, + { "name": "ReverseEngineering", "level": "compatible", "evidence": "check:chrome-data", "boundary": "Deterministic plane, sphere, cylinder and polynomial surface fits plus radius-based point segmentation with RMS diagnostics; Poisson and full B-spline surface reconstruction remain outside the browser subset." }, + { "name": "Robot", "level": "compatible", "evidence": "check:chrome-robot", "boundary": "Linear trajectories, planar kinematics, workspace and controller JSON." }, + { "name": "Sandbox", "level": "compatible", "evidence": "check:chrome-script", "boundary": "Facade command replay with denied ambient capabilities." }, + { "name": "Show", "level": "compatible", "evidence": "check:chrome-app-e2e", "boundary": "Browser scene and selection presentation." }, + { "name": "Sketcher", "level": "compatible", "evidence": "check:chrome-sketcher-stress", "boundary": "Solver, diagnostics, editor, B-spline and stress gates." }, + { "name": "Spreadsheet", "level": "compatible", "evidence": "check:document-closure", "boundary": "Formula DAG, styles, bindings, CSV and 10000-cell sheet." }, + { "name": "Start", "level": "compatible", "evidence": "check:chrome-app-e2e", "boundary": "Project-first browser application start flow." }, + { "name": "Surface", "level": "compatible", "evidence": "check:engineering-closure", "boundary": "Bezier/BSpline/Loft/Fill/Offset/Trim/Sew and TopoRefs." }, + { "name": "TechDraw", "level": "compatible", "evidence": "check:document-closure", "boundary": "Views, section, dimensions, GD&T and SVG/PDF." }, + { "name": "TemplatePyMod", "level": "development", "evidence": "test:facade", "boundary": "Development template is represented by tested Facade extension contracts." }, + { "name": "Test", "level": "development", "evidence": "test:facade", "boundary": "FreeCAD test module maps to the repository executable test suites." }, + { "name": "Tux", "level": "development", "evidence": "test:facade", "boundary": "Developer test commands map to deterministic harness fixtures." }, + { "name": "Web", "level": "compatible", "evidence": "check:chrome-app-e2e", "boundary": "Browser-native application, Worker and OPFS integration." } + ] +} diff --git a/config/project-migration-verification.json b/config/project-migration-verification.json new file mode 100644 index 0000000..d32f0db --- /dev/null +++ b/config/project-migration-verification.json @@ -0,0 +1,152 @@ +{ + "schemaVersion": 1, + "status": "pass", + "currentSchemaVersion": 6, + "migrationVersions": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "migrationSha256": "0308954a28a2cd5d98888cd9c97c25170760e00f8cb16133a51414c5ebedb5a0", + "forward": [ + { + "from": 0, + "to": 6, + "applied": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "committed": true, + "rolledBack": false + }, + { + "from": 1, + "to": 6, + "applied": [ + 2, + 3, + 4, + 5, + 6 + ], + "committed": true, + "rolledBack": false + }, + { + "from": 2, + "to": 6, + "applied": [ + 3, + 4, + 5, + 6 + ], + "committed": true, + "rolledBack": false + }, + { + "from": 3, + "to": 6, + "applied": [ + 4, + 5, + 6 + ], + "committed": true, + "rolledBack": false + }, + { + "from": 4, + "to": 6, + "applied": [ + 5, + 6 + ], + "committed": true, + "rolledBack": false + }, + { + "from": 5, + "to": 6, + "applied": [ + 6 + ], + "committed": true, + "rolledBack": false + } + ], + "rollback": [ + { + "failedAt": 1, + "restoredVersions": [], + "committed": false, + "rolledBack": true + }, + { + "failedAt": 2, + "restoredVersions": [ + 1 + ], + "committed": false, + "rolledBack": true + }, + { + "failedAt": 3, + "restoredVersions": [ + 1, + 2 + ], + "committed": false, + "rolledBack": true + }, + { + "failedAt": 4, + "restoredVersions": [ + 1, + 2, + 3 + ], + "committed": false, + "rolledBack": true + }, + { + "failedAt": 5, + "restoredVersions": [ + 1, + 2, + 3, + 4 + ], + "committed": false, + "rolledBack": true + }, + { + "failedAt": 6, + "restoredVersions": [ + 1, + 2, + 3, + 4, + 5 + ], + "committed": false, + "rolledBack": true + } + ], + "idempotentRerun": { + "applied": [], + "committed": true, + "rolledBack": false + }, + "recoveryPolicy": { + "onFailure": "rollback-entire-transaction", + "unsupportedFutureVersion": "reject-before-write" + } +} diff --git a/config/qa04-fcstd-fuzz-verification.json b/config/qa04-fcstd-fuzz-verification.json new file mode 100644 index 0000000..a9104fc --- /dev/null +++ b/config/qa04-fcstd-fuzz-verification.json @@ -0,0 +1,30 @@ +{ + "status": "fcstd-parser-fuzz-pass", + "seed": "0x5f3759df", + "cases": 1000, + "counts": { + "accepted": 231, + "rejected": 769, + "validCases": 231, + "invalidCases": 769 + }, + "categories": { + "depth-limit": 77, + "duplicate-object-id": 77, + "empty-document": 77, + "empty-object-id": 77, + "entity-declaration": 77, + "invalid-gui-root": 77, + "invalid-utf8": 77, + "malformed-close": 77, + "node-limit": 77, + "opaque-resource": 77, + "proxy-object": 77, + "traversal-path": 76, + "wrong-document-root": 77 + }, + "timing": { + "p95Ms": 0.121, + "maxMs": 2.672 + } +} diff --git a/config/qa04-geometry-fuzz-verification.json b/config/qa04-geometry-fuzz-verification.json new file mode 100644 index 0000000..bc0c566 --- /dev/null +++ b/config/qa04-geometry-fuzz-verification.json @@ -0,0 +1,47 @@ +{ + "status": "geometry-input-fuzz-pass", + "seed": "0x9e3779b9", + "cases": 2000, + "counts": { + "accepted": 799, + "rejected": 1201, + "validCases": 799, + "invalidCases": 1201 + }, + "categories": { + "duplicate-pipe-path-point": 66, + "empty-cut-tools": 67, + "foreign-placement-shape": 67, + "fractional-fillet-index": 67, + "future-pocket-base": 67, + "invalid-box-scalar": 67, + "invalid-groove-angle": 67, + "invalid-torus-radius": 66, + "loft-hole-unsupported": 66, + "pipe-hole-unsupported": 66, + "self-intersecting-pad": 67, + "short-loft-sections": 66, + "short-union": 67, + "unsupported-import-format": 67, + "valid-additive-loft": 66, + "valid-box": 67, + "valid-chamfer": 67, + "valid-cylinder": 67, + "valid-pad": 67, + "valid-placement": 67, + "valid-standalone-loft": 66, + "valid-standalone-pipe": 66, + "valid-step-import": 67, + "valid-subtractive-pipe": 66, + "valid-torus": 66, + "valid-union": 67, + "zero-cone-radii": 67, + "zero-cylinder-axis": 67, + "zero-mirror-normal": 67, + "zero-revolution-axis": 67 + }, + "timing": { + "p95Ms": 0.021, + "maxMs": 1.033 + } +} diff --git a/config/qa04-sketch-fuzz-verification.json b/config/qa04-sketch-fuzz-verification.json new file mode 100644 index 0000000..80119ec --- /dev/null +++ b/config/qa04-sketch-fuzz-verification.json @@ -0,0 +1,28 @@ +{ + "status": "sketch-solver-fuzz-pass", + "seed": "0xa5a5f00d", + "models": 2000, + "solves": 4000, + "categories": { + "blocked-conflict": 200, + "horizontal": 200, + "invalid-dimension": 200, + "line-circle-tangent": 200, + "parallel": 200, + "redundant": 200, + "reference-distance": 200, + "unknown-geometry": 200, + "unknown-point": 200, + "unsupported-bspline-weight": 200 + }, + "statuses": { + "solved": 0, + "under-constrained": 1000, + "conflicting": 200, + "invalid": 800 + }, + "timing": { + "p95Ms": 0.03, + "maxMs": 1.012 + } +} diff --git a/config/release-artifacts.json b/config/release-artifacts.json new file mode 100644 index 0000000..e560536 --- /dev/null +++ b/config/release-artifacts.json @@ -0,0 +1,408 @@ +{ + "schemaVersion": 1, + "package": { + "name": "bitbybit-web-cad", + "version": "0.1.0" + }, + "build": { + "output": "dist", + "files": [ + { + "path": "_headers", + "bytes": 483, + "sha256": "d8efb4a48e6e393b94e0d2f45dc6126e0d9c938cf638cba647cc2a038d1560cf" + }, + { + "path": "assets/bitbybit-dev-occt.a4a6ec2a-CPzzXT-F.wasm", + "bytes": 34524750, + "sha256": "1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656" + }, + { + "path": "assets/geometryWorker-ChQl6Gf3.js", + "bytes": 556597, + "sha256": "1679307fb0f01e9d7b9f37a081458bf44583e4d1899edf9224b49a1435ce7105" + }, + { + "path": "assets/index-BnRqhr3m.css", + "bytes": 65976, + "sha256": "b8eacf86224d2705e3c27367b3a0b166f4d662a5b8142d34a8abcdeef58753ec" + }, + { + "path": "assets/index-C3R4kOjF.js", + "bytes": 1099040, + "sha256": "3ab1180ca72634832a7030ea44450acd9c6dbabdb235ab48a7676827b1fe7029" + }, + { + "path": "assets/nativeHistoryWorkerEntry-HtQ0QZhi.js", + "bytes": 4544, + "sha256": "31eec7608dd0a500340319a7f14f3f9ec83ecd9cb4104a00eb6c77329c406e8c" + }, + { + "path": "assets/persistenceWorker-CyD5EUVX.js", + "bytes": 241190, + "sha256": "65a24ca0125444e3047f409d3b1c3667321e392a0ca9ddf64df6b728a1544c66" + }, + { + "path": "assets/planegcsWorkerEntry-BEpPJPEo.js", + "bytes": 26112, + "sha256": "2b5b0a9604aa8181f38b803753ad42e33e6c426a9fd8c1df013ae8762c6bb5c0" + }, + { + "path": "assets/sqlite3-BVKGSWc-.wasm", + "bytes": 864752, + "sha256": "02d7e48164395fa68f81c6ec33e9da5461be397dc57602ac0cd89b4bbba1d312" + }, + { + "path": "assets/sqlite3-opfs-async-proxy-D_xnb1D8.js", + "bytes": 32289, + "sha256": "502762db7bd24130f345df6a42883166ec0a91815207940328c9739bb0f5ec2f" + }, + { + "path": "assets/sqlite3-worker1-Bbt_6aLd.js", + "bytes": 218983, + "sha256": "d8272aaaec1f1f2b3a1e7705d881fee828d26b78fe795c201f4d54fc54bb3900" + }, + { + "path": "assets/three-DcHHFuVk.js", + "bytes": 517055, + "sha256": "6c04c522f86ed391bf7ba7b4667fe8c890544c1430265fb6e233b79d018457d9" + }, + { + "path": "chrome-addon-harness.html", + "bytes": 283, + "sha256": "9c7c4e8ff93bdcf004575ba6634ab44fda60ad4ef6c7b4b79fa8c06f366d72dc" + }, + { + "path": "chrome-assembly-harness.html", + "bytes": 177, + "sha256": "74e8add5b6f78d06579394d2296479147b481e39255730f7ef477e7a1c1a6dd6" + }, + { + "path": "chrome-bim-harness.html", + "bytes": 167, + "sha256": "c576247d00737aafb18812f7cc545a6595e2d885487ce14c55bd24b1810d4019" + }, + { + "path": "chrome-cam-harness.html", + "bytes": 167, + "sha256": "3a7cc190022c02ca4049a5cc075658eb35aa970f0102d6ce56d9c48b9dfdc320" + }, + { + "path": "chrome-cam-native-simulation-harness.html", + "bytes": 201, + "sha256": "1d006b9c60a4a678c2685d91273b8b71df4c14d14aec3a53d2d6c960bfd4dcf7" + }, + { + "path": "chrome-data-harness.html", + "bytes": 177, + "sha256": "e6efcbb38a736e956a1a7af2d9d2622c517ce6cd723e8831e22487e261679688" + }, + { + "path": "chrome-draft-harness.html", + "bytes": 172, + "sha256": "443371677e515d3061b827db9c3d4662b7179cb759e7696c578f3c0661ecc04a" + }, + { + "path": "chrome-engineering-harness.html", + "bytes": 295, + "sha256": "6309ab6a0229a6e8520cc4310e5f6dbcf5b1ecb882bd0ffb779acfb285055db5" + }, + { + "path": "chrome-fault-injection-harness.html", + "bytes": 8790, + "sha256": "ad1525225c744326d9e2175f177b7bcc736963f0e5d09cc66b57d4f0d960dd27" + }, + { + "path": "chrome-fcstd-roundtrip-harness.html", + "bytes": 303, + "sha256": "5ab6684e7cba5adbbc98db163031275151e34a8788e1f1e0e869a8856c1aee49" + }, + { + "path": "chrome-fem-harness.html", + "bytes": 167, + "sha256": "a60a872405f1abee17aff29b39a058931477797c57432e6759aa6d242f7a3a27" + }, + { + "path": "chrome-inspection-harness.html", + "bytes": 181, + "sha256": "e3fd4b18a3fce7ab8b988738b6f9edc3d955576163654075b0facfd031efba73" + }, + { + "path": "chrome-mesh-harness.html", + "bytes": 169, + "sha256": "17208aa7b0dbd86db0cbe7a8bff4398e3844744c06ccbf9786f4ed9b606a993b" + }, + { + "path": "chrome-native-chamfer-history-harness.html", + "bytes": 4146, + "sha256": "5dbdc439bb54e87950501f251d9f0e0d4fdf50d1fce431ef30f03a6487123bac" + }, + { + "path": "chrome-native-draft-history-harness.html", + "bytes": 4340, + "sha256": "ee2c227134318b1f351c9ecf8e5047272f01d953d8d0a70d4a7d9fe1e3e02d72" + }, + { + "path": "chrome-native-fillet-history-harness.html", + "bytes": 4144, + "sha256": "1e2dea6bf66808079badba507a354fcee93b395ea2605a4d2fa8c0958b61b3a6" + }, + { + "path": "chrome-native-groove-history-harness.html", + "bytes": 9368, + "sha256": "d3322f21bc1663638f20fc59d00550b98f2cdd93c068ef58c3381112f2b76741" + }, + { + "path": "chrome-native-history-harness.html", + "bytes": 3157, + "sha256": "d7f8a3c5c6c08a5b2c5134f9f85486d5b231e7334f4243bc5682d7f02fbce419" + }, + { + "path": "chrome-native-hole-history-harness.html", + "bytes": 5275, + "sha256": "dbb966ed9caf2a2d469aa52ccfe5dc21d6082586f901e8158d1335ae8e12e9b8" + }, + { + "path": "chrome-native-linear-pattern-history-harness.html", + "bytes": 4210, + "sha256": "cb8a1363e224c69449ad7e305dfc89ae0a2ab2788d473fd98dcdfd10b588cb1a" + }, + { + "path": "chrome-native-loft-history-harness.html", + "bytes": 4624, + "sha256": "6a7ace00bd08e94029afd5e6ba56e77a0b9985cd1f022cec766bfcb0a116e265" + }, + { + "path": "chrome-native-mirrored-history-harness.html", + "bytes": 4469, + "sha256": "dc166b3ddfa43d0644d60eb816442ff8253573677f6bcc2336871d1eec4a0ff7" + }, + { + "path": "chrome-native-multi-transform-history-harness.html", + "bytes": 6954, + "sha256": "7647f775010509111f9b858090e85a269558a34ce5a06aede86a888e8b2fc0cd" + }, + { + "path": "chrome-native-pad-history-harness.html", + "bytes": 2870, + "sha256": "72adfd0fc57ccd5406861c4c4e5eafa760807fa9570ad1043d215a017b85f473" + }, + { + "path": "chrome-native-pipe-history-harness.html", + "bytes": 4552, + "sha256": "8c255fbb837e3bc82bf155eb584736cc8810952d95732191bb5b54b9a73cee27" + }, + { + "path": "chrome-native-pocket-history-harness.html", + "bytes": 8222, + "sha256": "107fb5e0967fead18a24d583a0fac515dca0c7dfc382a71e18802ae4c5e3be96" + }, + { + "path": "chrome-native-polar-pattern-history-harness.html", + "bytes": 4579, + "sha256": "38c944a46a769ce317ec9e72ec23cede76067e8b0fbf29bccb321a3150c26259" + }, + { + "path": "chrome-native-revolution-history-harness.html", + "bytes": 6721, + "sha256": "9816ff2f84de24281783872abd8864a260339692b68cf6f4016d9dcb7439a74d" + }, + { + "path": "chrome-native-thickness-history-harness.html", + "bytes": 4770, + "sha256": "d3008e8854e3ea40c855fadaa1f8ce2eacb53ca56b23db8675ce2c5f28cd5813" + }, + { + "path": "chrome-offline-harness.html", + "bytes": 287, + "sha256": "2b7f8c1c0ed8b40927d452c39c50cafcf9e2c3c4da574bc18b6e48e00de33cf4" + }, + { + "path": "chrome-opfs-migration-harness.html", + "bytes": 7032, + "sha256": "53203065bbc2937f63b7e0a9d17dd9a4e27396bbcef0766a87d5b8be45c8fb49" + }, + { + "path": "chrome-partdesign-lifecycle-harness.html", + "bytes": 7088, + "sha256": "29853edff5aed2188e4ad2ddc68a12389b64ac77fd827521d403a675b3c276cf" + }, + { + "path": "chrome-partdesign-loft-harness.html", + "bytes": 190, + "sha256": "3cb76a9187f3f0cda082bfcf28c78c5bbf6abfc78a3cdb57d8560c2a7632fa51" + }, + { + "path": "chrome-partdesign-transform-harness.html", + "bytes": 200, + "sha256": "87516d5adecbeec6ae3bc5b539d8bfcd33182bf9a39e98c4a7bd0f0689594c9a" + }, + { + "path": "chrome-performance-harness.html", + "bytes": 295, + "sha256": "3809d4bf84ff9a3fc5c9b5ad48227d99f9934f15fa19a7859c4fd63ef4480bd4" + }, + { + "path": "chrome-persistence-harness.html", + "bytes": 2922, + "sha256": "0738bfdc2ce915d4aa2c313279fa8539cc11656115d5c7916183e00cd766f85a" + }, + { + "path": "chrome-plot-harness.html", + "bytes": 170, + "sha256": "7588e200df1d74cb9b713831d260ecf8b7dd3ef392d88cc41e0dfce446db4fa5" + }, + { + "path": "chrome-production-document-harness.html", + "bytes": 310, + "sha256": "5183570de904664a88ab1c93f2d0622d06efc22ca4aa9aa7d5a3812ef2504615" + }, + { + "path": "chrome-profile-validation-harness.html", + "bytes": 9329, + "sha256": "b292f4432e47c98fd9d93db930faa0cff3184a2407ee32cfad57e4e70f816db4" + }, + { + "path": "chrome-qa08-harness.html", + "bytes": 282, + "sha256": "118affd2b7ef51344134c360baeff45c20fbda074be65096f9e9d637dc5fc0a3" + }, + { + "path": "chrome-robot-harness.html", + "bytes": 171, + "sha256": "c45f72e81524f4976e3a80af7bd5652a17343b12f495ac57a7c6cea96c94e68c" + }, + { + "path": "chrome-script-harness.html", + "bytes": 285, + "sha256": "8bf31e712d9b0ddb12939efc166448a7ae3db86399b0c6bcb02bcfb01c7aed7f" + }, + { + "path": "chrome-secondary-formats-harness.html", + "bytes": 306, + "sha256": "09b0b6f80e350994bfbf278e8c78f4a33156005aa84623cca3630d8e0d4ccff9" + }, + { + "path": "chrome-security-harness.html", + "bytes": 289, + "sha256": "c3c582d854f1b7a53b8a05842ee4398a74d9de5b81263c9191cc6be3b7385ac3" + }, + { + "path": "chrome-sketcher-bspline-harness.html", + "bytes": 6346, + "sha256": "2e87eda27eb73df756fecafd171385a843eb4ebe803057ac7adf5196252ba964" + }, + { + "path": "chrome-sketcher-diagnostics-harness.html", + "bytes": 5944, + "sha256": "413de5cf3465bbc60c0f5c10cb0a11f8d00b0069553d2d935741b463bf5fbf19" + }, + { + "path": "chrome-sketcher-editor-harness.html", + "bytes": 8726, + "sha256": "00c8c1a7a9ebde6e3b1060840d5d4a72a9104abf5fca4fc2527d4c65bf792118" + }, + { + "path": "chrome-sketcher-stress-harness.html", + "bytes": 2181, + "sha256": "2d57721fef40966bc6091d8a6c59cd7cb0c5b7d789fea8f913e031cacdde4ce1" + }, + { + "path": "chrome-spreadsheet-harness.html", + "bytes": 184, + "sha256": "6e65de7f91b63d9f96a2facc130f36cc551abb441f7bbf115205072a5a440f17" + }, + { + "path": "chrome-surface-harness.html", + "bytes": 287, + "sha256": "85234c8a4bef195076b85bbe0cb7385a830afa2186ac1ab46e74f774859c92ee" + }, + { + "path": "chrome-techdraw-harness.html", + "bytes": 178, + "sha256": "e7fd67d499231086c15d2b57734906bc641283bad548e8f894943d78817de1fc" + }, + { + "path": "chrome-topology-harness.html", + "bytes": 3291, + "sha256": "4ced9bf454dabe7c31d339b2aa9e17fbae607468261ffd7bca299667659c2514" + }, + { + "path": "index.html", + "bytes": 678, + "sha256": "68867a3a7462b1338ca44a72fb701869824df48f147a07bf3bcba449b29bc866" + }, + { + "path": "manifest.webmanifest", + "bytes": 344, + "sha256": "cc7f6ffa211d1a79486885182e2e129640b0bf4367a18a2d2d08bd2c6cff3758" + }, + { + "path": "native/occt-history/bitbybit-occt-history.js", + "bytes": 237925, + "sha256": "78f1cdd17a6a7b61ff8435c0ff8c912a43c4517e6ef49f3f741521662a903557" + }, + { + "path": "native/occt-history/bitbybit-occt-history.wasm", + "bytes": 23091777, + "sha256": "b6cb6307399b188cdf1377e9294b4af8e36b21783693101db8f985e41cff5fbe" + }, + { + "path": "native/occt-history/browser-harness-worker.js", + "bytes": 3894, + "sha256": "5e8a6c52925e70ab7515d0973ebf163dc8c5bcd49165c158aaa281f1ebf81d77" + }, + { + "path": "native/planegcs/freecad-planegcs.js", + "bytes": 126192, + "sha256": "702d267b856b8a1c9d1a031fbbd9780419c3e359a99d7d6922b5df668ed79d2e" + }, + { + "path": "native/planegcs/freecad-planegcs.wasm", + "bytes": 548865, + "sha256": "6acf170b2cb87c4287c1b814d899612d89048d9b0eac244a84c4916f07ca27d7" + }, + { + "path": "occt-browser-harness.html", + "bytes": 6244, + "sha256": "5d17f82f1cceb35a698542237d1366e94ae45ad9a12020285d22538e5b6a78cf" + }, + { + "path": "planegcs-browser-harness.html", + "bytes": 63176, + "sha256": "4259b004924181c1345232249b650883d18c19e3ef8fb36ae42c177a184c3bbd" + }, + { + "path": "planegcs-browser-worker.js", + "bytes": 6149, + "sha256": "07a850bfdfb98232aee1de806dba5d0f41c29159fc7945a8e265dd7467932cb9" + }, + { + "path": "sw.js", + "bytes": 1390, + "sha256": "fee73d668c5b022104de0e551d8d53b74f91a2bbbe6f2947d49813f575f90eb3" + }, + { + "path": "vendor/camotics/camotics-sweep.wasm", + "bytes": 11932, + "sha256": "889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b" + }, + { + "path": "vendor/opencamlib/ocl.js", + "bytes": 504062, + "sha256": "0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89" + } + ] + }, + "sbom": { + "path": "config/sbom.cdx.json", + "sha256": "539e77584d89a6baad722cb55074e2e5f0beaf0f7f73f222115e15ef27a72b3a" + }, + "signature": { + "status": "signed", + "algorithm": "Ed25519", + "keyId": "bitbybit-local-release-2026", + "payloadSha256": "f9884bd0a7174a14bf7bbe90e50b1759b27e3aabda19e4ed7eeee0c572736e2b", + "signature": "jCl0pw/xJz/L+3osBaeTmaGy92livHJIDJtpgOsHR6aLlDXDIffaq5lvV4SQ679hsNmhlc9SmhM1VpNQwB/TCw==" + } +} diff --git a/config/release-capability-matrix.json b/config/release-capability-matrix.json new file mode 100644 index 0000000..6573a79 --- /dev/null +++ b/config/release-capability-matrix.json @@ -0,0 +1,38 @@ +{ + "schemaVersion": 1, + "baseline": { + "freecadVersion": "1.1.1", + "commit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "browser": "Chrome/150" + }, + "coverageSource": "config/platform-module-coverage.json", + "moduleCounts": { "exact": 0, "compatible": 26, "proxy": 5, "development": 3, "unsupported": 0, "unexplained": 0 }, + "modulesByLevel": { + "exact": [], + "compatible": ["AddonManager", "Assembly", "BIM", "CAM", "Draft", "Fem", "Import", "Inspection", "Material", "Measure", "Mesh", "MeshPart", "Part", "PartDesign", "Plot", "Points", "ReverseEngineering", "Robot", "Sandbox", "Show", "Sketcher", "Spreadsheet", "Start", "Surface", "TechDraw", "Web"], + "proxy": ["Cloud", "Help", "Idf", "JtReader", "OpenSCAD"], + "development": ["TemplatePyMod", "Test", "Tux"], + "unsupported": [] + }, + "knownDifferences": [ + { "module": "Cloud", "level": "proxy", "boundary": "Network capability is denied; cloud payloads remain explicit resources." }, + { "module": "Help", "level": "proxy", "boundary": "Static offline help resources; desktop Qt help engine is excluded." }, + { "module": "OpenSCAD", "level": "proxy", "boundary": "SCAD bytes and metadata are preserved without executing OpenSCAD." }, + { "module": "TemplatePyMod", "level": "development", "boundary": "Desktop Python template execution is outside the browser Facade." } + ], + "scopeOnly": [], + "unsupported": [], + "unexplained": [], + "gates": [ + { "id": "G0", "status": "pass", "evidence": ["check:baseline", "check:sbom", "check:freecad-inventory"] }, + { "id": "G1", "status": "pass", "evidence": ["check:browser-occt", "check:occt-history-artifact"] }, + { "id": "G2", "status": "pass", "evidence": ["check:chrome-planegcs", "check:freecad-sketcher-constraints"] }, + { "id": "G3", "status": "pass", "evidence": ["check:partdesign-closure", "check:fcstd-closure"] }, + { "id": "G4", "status": "pass", "evidence": ["check:fcstd-closure", "check:chrome-fcstd-roundtrip"] }, + { "id": "G5", "status": "pass", "evidence": ["check:document-closure", "check:chrome-qa08"] }, + { "id": "G6", "status": "pass", "evidence": ["check:engineering-closure", "check:chrome-engineering"] }, + { "id": "G7", "status": "pass", "evidence": ["check:platform-closure", "check:chrome-addon", "check:chrome-script"] }, + { "id": "G8", "status": "pass", "evidence": ["check:quality-closure", "check:chrome-security", "check:chrome-performance"] }, + { "id": "G9", "status": "pass", "evidence": ["check:release-signing-key", "check:release-closure", "check:release-artifacts", "check:project-migration"] } + ] +} diff --git a/config/release-signing-public.pem b/config/release-signing-public.pem new file mode 100644 index 0000000..105db0f --- /dev/null +++ b/config/release-signing-public.pem @@ -0,0 +1,3 @@ +-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEA7zFGHXTLge3vY6SFInEMAMbRitXAM67ByOX4d12GwYM= +-----END PUBLIC KEY----- diff --git a/config/runtime-baseline.json b/config/runtime-baseline.json index c0dda81..2d6b6f2 100644 --- a/config/runtime-baseline.json +++ b/config/runtime-baseline.json @@ -6,6 +6,6 @@ "geometry": { "provider": "@bitbybit-dev/occt-worker", "kernel": "OCCT WASM", "version": "1.1.1", "execution": "dedicated worker", "wasmSha256": "1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656", "status": "core-feature-integration" }, "viewport": { "provider": "Three.js internal adapter", "package": "three", "version": "0.185.1", "baseline": "WebGL2", "status": "occt-mesh-integration" }, "persistence": { "database": "@sqlite.org/sqlite-wasm 3.53.0-build1", "filesystem": "OPFS VFS with in-memory fallback", "writer": "single worker", "crossOriginIsolation": "required for OPFS worker", "status": "schema-v4-resource-autosave-properties-dependencies-sketch" }, - "targetBrowsers": "Capability matrix to be locked in P0-02", + "targetBrowsers": "Chrome only; all other browser testing is deferred until project completion and explicit approval", "status": "occt-feature-recompute-through-all-shape-cache-export-integration" } diff --git a/config/sbom.cdx.json b/config/sbom.cdx.json new file mode 100644 index 0000000..0062961 --- /dev/null +++ b/config/sbom.cdx.json @@ -0,0 +1,6886 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.5", + "version": 1, + "metadata": { + "tools": [ + { + "vendor": "BitBybit Web CAD", + "name": "generate-sbom.mjs", + "version": "1" + } + ], + "component": { + "type": "application", + "bom-ref": "pkg:npm/bitbybit-web-cad@0.1.0", + "name": "bitbybit-web-cad", + "version": "0.1.0", + "purl": "pkg:npm/bitbybit-web-cad@0.1.0", + "properties": [ + { + "name": "bitbybit:license-status", + "value": "undisclosed" + } + ] + }, + "properties": [ + { + "name": "bitbybit:source", + "value": "package-lock.json" + }, + { + "name": "bitbybit:lockfile-sha256", + "value": "5ef4482b10ad8738577e391638ad986b942d95ba62ab8834a40a97a24c6af950" + }, + { + "name": "bitbybit:package-manager", + "value": "npm lockfileVersion 3" + } + ] + }, + "components": [ + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fcode-frame@7.29.7", + "name": "@babel/code-frame", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fcode-frame@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fcompat-data@7.29.7", + "name": "@babel/compat-data", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fcompat-data@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fcore@7.29.7", + "name": "@babel/core", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fcore@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fgenerator@7.29.8", + "name": "@babel/generator", + "version": "7.29.8", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fgenerator@7.29.8", + "hashes": [ + { + "alg": "SHA-512", + "content": "gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-compilation-targets@7.29.7", + "name": "@babel/helper-compilation-targets", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-compilation-targets@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-globals@7.29.7", + "name": "@babel/helper-globals", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-globals@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-module-imports@7.29.7", + "name": "@babel/helper-module-imports", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-module-imports@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-module-transforms@7.29.7", + "name": "@babel/helper-module-transforms", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-module-transforms@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-plugin-utils@7.29.7", + "name": "@babel/helper-plugin-utils", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-plugin-utils@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-string-parser@7.29.7", + "name": "@babel/helper-string-parser", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-string-parser@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-validator-identifier@7.29.7", + "name": "@babel/helper-validator-identifier", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-validator-identifier@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelper-validator-option@7.29.7", + "name": "@babel/helper-validator-option", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelper-validator-option@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fhelpers@7.29.7", + "name": "@babel/helpers", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fhelpers@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fparser@7.29.8", + "name": "@babel/parser", + "version": "7.29.8", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fparser@7.29.8", + "hashes": [ + { + "alg": "SHA-512", + "content": "E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fplugin-transform-react-jsx-self@7.29.7", + "name": "@babel/plugin-transform-react-jsx-self", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fplugin-transform-react-jsx-self@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Fplugin-transform-react-jsx-source@7.29.7", + "name": "@babel/plugin-transform-react-jsx-source", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Fplugin-transform-react-jsx-source@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Ftemplate@7.29.7", + "name": "@babel/template", + "version": "7.29.7", + "scope": "development", + "purl": "pkg:npm/%40babel%2Ftemplate@7.29.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Ftraverse@7.29.8", + "name": "@babel/traverse", + "version": "7.29.8", + "scope": "development", + "purl": "pkg:npm/%40babel%2Ftraverse@7.29.8", + "hashes": [ + { + "alg": "SHA-512", + "content": "I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40babel%2Ftypes@7.29.8", + "name": "@babel/types", + "version": "7.29.8", + "scope": "development", + "purl": "pkg:npm/%40babel%2Ftypes@7.29.8", + "hashes": [ + { + "alg": "SHA-512", + "content": "Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40bitbybit-dev%2Fbase@1.1.1", + "name": "@bitbybit-dev/base", + "version": "1.1.1", + "scope": "required", + "purl": "pkg:npm/%40bitbybit-dev%2Fbase@1.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "UkZmTPvyYvVSvWw2QWMAdIJJ5o1RtPL5/CuNk68E6mFD5D3sYLWDsytNiYebvm2zTo3MpCX+Ig8d3h8EtQSmcA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@bitbybit-dev/base/-/base-1.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40bitbybit-dev%2Focct@1.1.1", + "name": "@bitbybit-dev/occt", + "version": "1.1.1", + "scope": "required", + "purl": "pkg:npm/%40bitbybit-dev%2Focct@1.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "Bt9rVSryd2BhE/QXGz6GRgsmApAGzjhDGQC2nIK6eQ0/4XWvGfvmFBLPaeSXGzHbbpQ0uGMY9IX4BabK7oLoww==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@bitbybit-dev/occt/-/occt-1.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40bitbybit-dev%2Focct-worker@1.1.1", + "name": "@bitbybit-dev/occt-worker", + "version": "1.1.1", + "scope": "required", + "purl": "pkg:npm/%40bitbybit-dev%2Focct-worker@1.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "aSprAJ8KjKPc9Ba68CqB4aVDechCtwb5jKtMtiKofpKVhlkKlvKKZphjzHKKbHkKj4GWSFD3bad4Oh32BiF5SA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@bitbybit-dev/occt-worker/-/occt-worker-1.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40dimforge%2Frapier3d-compat@0.12.0", + "name": "@dimforge/rapier3d-compat", + "version": "0.12.0", + "scope": "development", + "purl": "pkg:npm/%40dimforge%2Frapier3d-compat@0.12.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Faix-ppc64@0.25.12", + "name": "@esbuild/aix-ppc64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Faix-ppc64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fandroid-arm@0.25.12", + "name": "@esbuild/android-arm", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fandroid-arm@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fandroid-arm64@0.25.12", + "name": "@esbuild/android-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fandroid-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fandroid-x64@0.25.12", + "name": "@esbuild/android-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fandroid-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fdarwin-arm64@0.25.12", + "name": "@esbuild/darwin-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fdarwin-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fdarwin-x64@0.25.12", + "name": "@esbuild/darwin-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fdarwin-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.25.12", + "name": "@esbuild/freebsd-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Ffreebsd-x64@0.25.12", + "name": "@esbuild/freebsd-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Ffreebsd-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-arm@0.25.12", + "name": "@esbuild/linux-arm", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-arm@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-arm64@0.25.12", + "name": "@esbuild/linux-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-ia32@0.25.12", + "name": "@esbuild/linux-ia32", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-ia32@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-loong64@0.25.12", + "name": "@esbuild/linux-loong64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-loong64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-mips64el@0.25.12", + "name": "@esbuild/linux-mips64el", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-mips64el@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-ppc64@0.25.12", + "name": "@esbuild/linux-ppc64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-ppc64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-riscv64@0.25.12", + "name": "@esbuild/linux-riscv64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-riscv64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-s390x@0.25.12", + "name": "@esbuild/linux-s390x", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-s390x@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-x64@0.25.12", + "name": "@esbuild/linux-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.25.12", + "name": "@esbuild/netbsd-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fnetbsd-x64@0.25.12", + "name": "@esbuild/netbsd-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fnetbsd-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.25.12", + "name": "@esbuild/openbsd-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fopenbsd-x64@0.25.12", + "name": "@esbuild/openbsd-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fopenbsd-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.25.12", + "name": "@esbuild/openharmony-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fsunos-x64@0.25.12", + "name": "@esbuild/sunos-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fsunos-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fwin32-arm64@0.25.12", + "name": "@esbuild/win32-arm64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fwin32-arm64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fwin32-ia32@0.25.12", + "name": "@esbuild/win32-ia32", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fwin32-ia32@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fwin32-x64@0.25.12", + "name": "@esbuild/win32-x64", + "version": "0.25.12", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fwin32-x64@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40jridgewell%2Fgen-mapping@0.3.13", + "name": "@jridgewell/gen-mapping", + "version": "0.3.13", + "scope": "development", + "purl": "pkg:npm/%40jridgewell%2Fgen-mapping@0.3.13", + "hashes": [ + { + "alg": "SHA-512", + "content": "2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40jridgewell%2Fremapping@2.3.5", + "name": "@jridgewell/remapping", + "version": "2.3.5", + "scope": "development", + "purl": "pkg:npm/%40jridgewell%2Fremapping@2.3.5", + "hashes": [ + { + "alg": "SHA-512", + "content": "LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40jridgewell%2Fresolve-uri@3.1.2", + "name": "@jridgewell/resolve-uri", + "version": "3.1.2", + "scope": "development", + "purl": "pkg:npm/%40jridgewell%2Fresolve-uri@3.1.2", + "hashes": [ + { + "alg": "SHA-512", + "content": "bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40jridgewell%2Fsourcemap-codec@1.5.5", + "name": "@jridgewell/sourcemap-codec", + "version": "1.5.5", + "scope": "development", + "purl": "pkg:npm/%40jridgewell%2Fsourcemap-codec@1.5.5", + "hashes": [ + { + "alg": "SHA-512", + "content": "cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40jridgewell%2Ftrace-mapping@0.3.31", + "name": "@jridgewell/trace-mapping", + "version": "0.3.31", + "scope": "development", + "purl": "pkg:npm/%40jridgewell%2Ftrace-mapping@0.3.31", + "hashes": [ + { + "alg": "SHA-512", + "content": "zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40napi-rs%2Flzma-linux-x64-gnu@1.5.1", + "name": "@napi-rs/lzma-linux-x64-gnu", + "version": "1.5.1", + "scope": "optional", + "purl": "pkg:npm/%40napi-rs%2Flzma-linux-x64-gnu@1.5.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40nodable%2Fentities@3.0.0", + "name": "@nodable/entities", + "version": "3.0.0", + "scope": "required", + "purl": "pkg:npm/%40nodable%2Fentities@3.0.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@nodable/entities/-/entities-3.0.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rolldown%2Fpluginutils@1.0.0-beta.27", + "name": "@rolldown/pluginutils", + "version": "1.0.0-beta.27", + "scope": "development", + "purl": "pkg:npm/%40rolldown%2Fpluginutils@1.0.0-beta.27", + "hashes": [ + { + "alg": "SHA-512", + "content": "+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-android-arm-eabi@4.62.4", + "name": "@rollup/rollup-android-arm-eabi", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-android-arm-eabi@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-android-arm64@4.62.4", + "name": "@rollup/rollup-android-arm64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-android-arm64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-darwin-arm64@4.62.4", + "name": "@rollup/rollup-darwin-arm64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-darwin-arm64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-darwin-x64@4.62.4", + "name": "@rollup/rollup-darwin-x64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-darwin-x64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-freebsd-arm64@4.62.4", + "name": "@rollup/rollup-freebsd-arm64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-freebsd-arm64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-freebsd-x64@4.62.4", + "name": "@rollup/rollup-freebsd-x64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-freebsd-x64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-arm-gnueabihf@4.62.4", + "name": "@rollup/rollup-linux-arm-gnueabihf", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-arm-gnueabihf@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-arm-musleabihf@4.62.4", + "name": "@rollup/rollup-linux-arm-musleabihf", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-arm-musleabihf@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-arm64-gnu@4.62.4", + "name": "@rollup/rollup-linux-arm64-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-arm64-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-arm64-musl@4.62.4", + "name": "@rollup/rollup-linux-arm64-musl", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-arm64-musl@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-loong64-gnu@4.62.4", + "name": "@rollup/rollup-linux-loong64-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-loong64-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-loong64-musl@4.62.4", + "name": "@rollup/rollup-linux-loong64-musl", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-loong64-musl@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-ppc64-gnu@4.62.4", + "name": "@rollup/rollup-linux-ppc64-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-ppc64-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-ppc64-musl@4.62.4", + "name": "@rollup/rollup-linux-ppc64-musl", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-ppc64-musl@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-riscv64-gnu@4.62.4", + "name": "@rollup/rollup-linux-riscv64-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-riscv64-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-riscv64-musl@4.62.4", + "name": "@rollup/rollup-linux-riscv64-musl", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-riscv64-musl@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-s390x-gnu@4.62.4", + "name": "@rollup/rollup-linux-s390x-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-s390x-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-x64-gnu@4.62.4", + "name": "@rollup/rollup-linux-x64-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-x64-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-linux-x64-musl@4.62.4", + "name": "@rollup/rollup-linux-x64-musl", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-linux-x64-musl@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-openbsd-x64@4.62.4", + "name": "@rollup/rollup-openbsd-x64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-openbsd-x64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-openharmony-arm64@4.62.4", + "name": "@rollup/rollup-openharmony-arm64", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-openharmony-arm64@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-win32-arm64-msvc@4.62.4", + "name": "@rollup/rollup-win32-arm64-msvc", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-win32-arm64-msvc@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-win32-ia32-msvc@4.62.4", + "name": "@rollup/rollup-win32-ia32-msvc", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-win32-ia32-msvc@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-win32-x64-gnu@4.62.4", + "name": "@rollup/rollup-win32-x64-gnu", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-win32-x64-gnu@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40rollup%2Frollup-win32-x64-msvc@4.62.4", + "name": "@rollup/rollup-win32-x64-msvc", + "version": "4.62.4", + "scope": "optional", + "purl": "pkg:npm/%40rollup%2Frollup-win32-x64-msvc@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40sqlite.org%2Fsqlite-wasm@3.53.0-build1", + "name": "@sqlite.org/sqlite-wasm", + "version": "3.53.0-build1", + "scope": "required", + "purl": "pkg:npm/%40sqlite.org%2Fsqlite-wasm@3.53.0-build1", + "hashes": [ + { + "alg": "SHA-512", + "content": "PfWPWN2n+/37doa8oh2/oUXk4OOsRYZsxc1W1sDXIGb/Pu5Yrb+f2eyYpgQMGITVX7HVgxhs9P18Rc6I97ym/g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.53.0-build1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40tweenjs%2Ftween.js@23.1.3", + "name": "@tweenjs/tween.js", + "version": "23.1.3", + "scope": "development", + "purl": "pkg:npm/%40tweenjs%2Ftween.js@23.1.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fbabel__core@7.20.5", + "name": "@types/babel__core", + "version": "7.20.5", + "scope": "development", + "purl": "pkg:npm/%40types%2Fbabel__core@7.20.5", + "hashes": [ + { + "alg": "SHA-512", + "content": "qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fbabel__generator@7.27.0", + "name": "@types/babel__generator", + "version": "7.27.0", + "scope": "development", + "purl": "pkg:npm/%40types%2Fbabel__generator@7.27.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fbabel__template@7.4.4", + "name": "@types/babel__template", + "version": "7.4.4", + "scope": "development", + "purl": "pkg:npm/%40types%2Fbabel__template@7.4.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fbabel__traverse@7.28.0", + "name": "@types/babel__traverse", + "version": "7.28.0", + "scope": "development", + "purl": "pkg:npm/%40types%2Fbabel__traverse@7.28.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Festree@1.0.9", + "name": "@types/estree", + "version": "1.0.9", + "scope": "development", + "purl": "pkg:npm/%40types%2Festree@1.0.9", + "hashes": [ + { + "alg": "SHA-512", + "content": "GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fprop-types@15.7.15", + "name": "@types/prop-types", + "version": "15.7.15", + "scope": "development", + "purl": "pkg:npm/%40types%2Fprop-types@15.7.15", + "hashes": [ + { + "alg": "SHA-512", + "content": "F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Freact@18.3.31", + "name": "@types/react", + "version": "18.3.31", + "scope": "development", + "purl": "pkg:npm/%40types%2Freact@18.3.31", + "hashes": [ + { + "alg": "SHA-512", + "content": "vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Freact-dom@18.3.7", + "name": "@types/react-dom", + "version": "18.3.7", + "scope": "development", + "purl": "pkg:npm/%40types%2Freact-dom@18.3.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fstats.js@0.17.4", + "name": "@types/stats.js", + "version": "0.17.4", + "scope": "development", + "purl": "pkg:npm/%40types%2Fstats.js@0.17.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fthree@0.185.3", + "name": "@types/three", + "version": "0.185.3", + "scope": "development", + "purl": "pkg:npm/%40types%2Fthree@0.185.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "8TqTn1+fjPWuJ4mR6Igtg56DCf9b5EeAlwhb5xaa6WlBrsg7SvG0NQbyctGRkHCKwg0uftfCspOEsTXelgktMA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/three/-/three-0.185.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40types%2Fwebxr@0.5.24", + "name": "@types/webxr", + "version": "0.5.24", + "scope": "development", + "purl": "pkg:npm/%40types%2Fwebxr@0.5.24", + "hashes": [ + { + "alg": "SHA-512", + "content": "h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40vitejs%2Fplugin-react@4.7.0", + "name": "@vitejs/plugin-react", + "version": "4.7.0", + "scope": "development", + "purl": "pkg:npm/%40vitejs%2Fplugin-react@4.7.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/anynum@1.0.1", + "name": "anynum", + "version": "1.0.1", + "scope": "required", + "purl": "pkg:npm/anynum@1.0.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/anynum/-/anynum-1.0.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/baseline-browser-mapping@2.11.10", + "name": "baseline-browser-mapping", + "version": "2.11.10", + "scope": "development", + "purl": "pkg:npm/baseline-browser-mapping@2.11.10", + "hashes": [ + { + "alg": "SHA-512", + "content": "35JEvJ5/KKlbCHjMCsONI2w6HE88STjVdHk+C7d8LtcFxUjZR1KeLP9izofn2qs0KUxX5r4z73bwH/rd+JHacw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.10.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/browserslist@4.28.7", + "name": "browserslist", + "version": "4.28.7", + "scope": "development", + "purl": "pkg:npm/browserslist@4.28.7", + "hashes": [ + { + "alg": "SHA-512", + "content": "JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/caniuse-lite@1.0.30001806", + "name": "caniuse-lite", + "version": "1.0.30001806", + "scope": "development", + "purl": "pkg:npm/caniuse-lite@1.0.30001806", + "hashes": [ + { + "alg": "SHA-512", + "content": "72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "CC-BY-4.0" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/convert-source-map@2.0.0", + "name": "convert-source-map", + "version": "2.0.0", + "scope": "development", + "purl": "pkg:npm/convert-source-map@2.0.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/csstype@3.2.3", + "name": "csstype", + "version": "3.2.3", + "scope": "development", + "purl": "pkg:npm/csstype@3.2.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/debug@4.4.3", + "name": "debug", + "version": "4.4.3", + "scope": "development", + "purl": "pkg:npm/debug@4.4.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/electron-to-chromium@1.5.399", + "name": "electron-to-chromium", + "version": "1.5.399", + "scope": "development", + "purl": "pkg:npm/electron-to-chromium@1.5.399", + "hashes": [ + { + "alg": "SHA-512", + "content": "lEcqhErbHjXRvd41rnWLpzbyU/IXfIYo7QwaFWmxGeLiLyY2TBCdHnWY88vB+p3ubnihRypDm66panXl7TylLA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.399.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/esbuild@0.25.12", + "name": "esbuild", + "version": "0.25.12", + "scope": "development", + "purl": "pkg:npm/esbuild@0.25.12", + "hashes": [ + { + "alg": "SHA-512", + "content": "bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/escalade@3.2.0", + "name": "escalade", + "version": "3.2.0", + "scope": "development", + "purl": "pkg:npm/escalade@3.2.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/fast-xml-builder@1.3.0", + "name": "fast-xml-builder", + "version": "1.3.0", + "scope": "required", + "purl": "pkg:npm/fast-xml-builder@1.3.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/fast-xml-parser@5.10.1", + "name": "fast-xml-parser", + "version": "5.10.1", + "scope": "required", + "purl": "pkg:npm/fast-xml-parser@5.10.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.10.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/fdir@6.5.0", + "name": "fdir", + "version": "6.5.0", + "scope": "development", + "purl": "pkg:npm/fdir@6.5.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/fflate@0.8.3", + "name": "fflate", + "version": "0.8.3", + "scope": "required", + "purl": "pkg:npm/fflate@0.8.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/fsevents@2.3.3", + "name": "fsevents", + "version": "2.3.3", + "scope": "optional", + "purl": "pkg:npm/fsevents@2.3.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/gensync@1.0.0-beta.2", + "name": "gensync", + "version": "1.0.0-beta.2", + "scope": "development", + "purl": "pkg:npm/gensync@1.0.0-beta.2", + "hashes": [ + { + "alg": "SHA-512", + "content": "3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/is-unsafe@2.0.0", + "name": "is-unsafe", + "version": "2.0.0", + "scope": "required", + "purl": "pkg:npm/is-unsafe@2.0.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/js-tokens@4.0.0", + "name": "js-tokens", + "version": "4.0.0", + "scope": "required", + "purl": "pkg:npm/js-tokens@4.0.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/jsesc@3.1.0", + "name": "jsesc", + "version": "3.1.0", + "scope": "development", + "purl": "pkg:npm/jsesc@3.1.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/json5@2.2.3", + "name": "json5", + "version": "2.2.3", + "scope": "development", + "purl": "pkg:npm/json5@2.2.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/loose-envify@1.4.0", + "name": "loose-envify", + "version": "1.4.0", + "scope": "required", + "purl": "pkg:npm/loose-envify@1.4.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/lru-cache@5.1.1", + "name": "lru-cache", + "version": "5.1.1", + "scope": "development", + "purl": "pkg:npm/lru-cache@5.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/lucide-react@0.468.0", + "name": "lucide-react", + "version": "0.468.0", + "scope": "required", + "purl": "pkg:npm/lucide-react@0.468.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "6koYRhnM2N0GGZIdXzSeiNwguv1gt/FAjZOiPl76roBi3xKEXa4WmfpxgQwTTL4KipXjefrnf3oV4IsYhi4JFA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.468.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/meshoptimizer@1.1.1", + "name": "meshoptimizer", + "version": "1.1.1", + "scope": "development", + "purl": "pkg:npm/meshoptimizer@1.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "oRFNWJRDA/WTrVj7NWvqa5HqE1t9MYDj2VaWirQCzCCrAd2GHrqR/sQezCxiWATPNlKTcRaPRHPJwIRoPBAp5g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-1.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.3", + "name": "ms", + "version": "2.1.3", + "scope": "development", + "purl": "pkg:npm/ms@2.1.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/nanoid@3.3.16", + "name": "nanoid", + "version": "3.3.16", + "scope": "development", + "purl": "pkg:npm/nanoid@3.3.16", + "hashes": [ + { + "alg": "SHA-512", + "content": "bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/node-releases@2.0.51", + "name": "node-releases", + "version": "2.0.51", + "scope": "development", + "purl": "pkg:npm/node-releases@2.0.51", + "hashes": [ + { + "alg": "SHA-512", + "content": "wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/path-expression-matcher@1.6.2", + "name": "path-expression-matcher", + "version": "1.6.2", + "scope": "required", + "purl": "pkg:npm/path-expression-matcher@1.6.2", + "hashes": [ + { + "alg": "SHA-512", + "content": "enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/picocolors@1.1.1", + "name": "picocolors", + "version": "1.1.1", + "scope": "development", + "purl": "pkg:npm/picocolors@1.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/picomatch@4.0.5", + "name": "picomatch", + "version": "4.0.5", + "scope": "development", + "purl": "pkg:npm/picomatch@4.0.5", + "hashes": [ + { + "alg": "SHA-512", + "content": "RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/postcss@8.5.25", + "name": "postcss", + "version": "8.5.25", + "scope": "development", + "purl": "pkg:npm/postcss@8.5.25", + "hashes": [ + { + "alg": "SHA-512", + "content": "DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/react@18.3.1", + "name": "react", + "version": "18.3.1", + "scope": "required", + "purl": "pkg:npm/react@18.3.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/react/-/react-18.3.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/react-dom@18.3.1", + "name": "react-dom", + "version": "18.3.1", + "scope": "required", + "purl": "pkg:npm/react-dom@18.3.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/react-refresh@0.17.0", + "name": "react-refresh", + "version": "0.17.0", + "scope": "development", + "purl": "pkg:npm/react-refresh@0.17.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/rollup@4.62.4", + "name": "rollup", + "version": "4.62.4", + "scope": "development", + "purl": "pkg:npm/rollup@4.62.4", + "hashes": [ + { + "alg": "SHA-512", + "content": "RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/rollup/-/rollup-4.62.4.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/rxjs@7.8.2", + "name": "rxjs", + "version": "7.8.2", + "scope": "required", + "purl": "pkg:npm/rxjs@7.8.2", + "hashes": [ + { + "alg": "SHA-512", + "content": "dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/scheduler@0.23.2", + "name": "scheduler", + "version": "0.23.2", + "scope": "required", + "purl": "pkg:npm/scheduler@0.23.2", + "hashes": [ + { + "alg": "SHA-512", + "content": "UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/semver@6.3.1", + "name": "semver", + "version": "6.3.1", + "scope": "development", + "purl": "pkg:npm/semver@6.3.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/source-map-js@1.2.1", + "name": "source-map-js", + "version": "1.2.1", + "scope": "development", + "purl": "pkg:npm/source-map-js@1.2.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/strnum@2.4.1", + "name": "strnum", + "version": "2.4.1", + "scope": "required", + "purl": "pkg:npm/strnum@2.4.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/strnum/-/strnum-2.4.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/three@0.185.1", + "name": "three", + "version": "0.185.1", + "scope": "required", + "purl": "pkg:npm/three@0.185.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "5aojFCXKwnjBRZvUnt3WFfEcvUJgkN5LlijRFN95hMy8WVkG4I0QNcJE+OuWvuJ0bOdStrbfXn0pkd6/QyiAlg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/three/-/three-0.185.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/tinyglobby@0.2.17", + "name": "tinyglobby", + "version": "0.2.17", + "scope": "development", + "purl": "pkg:npm/tinyglobby@0.2.17", + "hashes": [ + { + "alg": "SHA-512", + "content": "wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/tslib@2.8.1", + "name": "tslib", + "version": "2.8.1", + "scope": "required", + "purl": "pkg:npm/tslib@2.8.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "0BSD" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/tsx@4.23.1", + "name": "tsx", + "version": "4.23.1", + "scope": "development", + "purl": "pkg:npm/tsx@4.23.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/tsx/-/tsx-4.23.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Faix-ppc64@0.28.1", + "name": "@esbuild/aix-ppc64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Faix-ppc64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fandroid-arm@0.28.1", + "name": "@esbuild/android-arm", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fandroid-arm@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fandroid-arm64@0.28.1", + "name": "@esbuild/android-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fandroid-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fandroid-x64@0.28.1", + "name": "@esbuild/android-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fandroid-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fdarwin-arm64@0.28.1", + "name": "@esbuild/darwin-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fdarwin-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fdarwin-x64@0.28.1", + "name": "@esbuild/darwin-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fdarwin-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.28.1", + "name": "@esbuild/freebsd-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Ffreebsd-x64@0.28.1", + "name": "@esbuild/freebsd-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Ffreebsd-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-arm@0.28.1", + "name": "@esbuild/linux-arm", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-arm@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-arm64@0.28.1", + "name": "@esbuild/linux-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-ia32@0.28.1", + "name": "@esbuild/linux-ia32", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-ia32@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-loong64@0.28.1", + "name": "@esbuild/linux-loong64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-loong64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-mips64el@0.28.1", + "name": "@esbuild/linux-mips64el", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-mips64el@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-ppc64@0.28.1", + "name": "@esbuild/linux-ppc64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-ppc64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-riscv64@0.28.1", + "name": "@esbuild/linux-riscv64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-riscv64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-s390x@0.28.1", + "name": "@esbuild/linux-s390x", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-s390x@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Flinux-x64@0.28.1", + "name": "@esbuild/linux-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Flinux-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.28.1", + "name": "@esbuild/netbsd-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fnetbsd-x64@0.28.1", + "name": "@esbuild/netbsd-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fnetbsd-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.28.1", + "name": "@esbuild/openbsd-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fopenbsd-x64@0.28.1", + "name": "@esbuild/openbsd-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fopenbsd-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.28.1", + "name": "@esbuild/openharmony-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fsunos-x64@0.28.1", + "name": "@esbuild/sunos-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fsunos-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fwin32-arm64@0.28.1", + "name": "@esbuild/win32-arm64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fwin32-arm64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fwin32-ia32@0.28.1", + "name": "@esbuild/win32-ia32", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fwin32-ia32@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/%40esbuild%2Fwin32-x64@0.28.1", + "name": "@esbuild/win32-x64", + "version": "0.28.1", + "scope": "optional", + "purl": "pkg:npm/%40esbuild%2Fwin32-x64@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz" + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "false" + }, + { + "name": "bitbybit:license-status", + "value": "not-installed-optional" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/esbuild@0.28.1", + "name": "esbuild", + "version": "0.28.1", + "scope": "development", + "purl": "pkg:npm/esbuild@0.28.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/typescript@5.9.3", + "name": "typescript", + "version": "5.9.3", + "scope": "development", + "purl": "pkg:npm/typescript@5.9.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/update-browserslist-db@1.2.3", + "name": "update-browserslist-db", + "version": "1.2.3", + "scope": "development", + "purl": "pkg:npm/update-browserslist-db@1.2.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/vite@6.4.3", + "name": "vite", + "version": "6.4.3", + "scope": "development", + "purl": "pkg:npm/vite@6.4.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/ws@8.21.3", + "name": "ws", + "version": "8.21.3", + "scope": "development", + "purl": "pkg:npm/ws@8.21.3", + "hashes": [ + { + "alg": "SHA-512", + "content": "201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/xml-naming@0.3.0", + "name": "xml-naming", + "version": "0.3.0", + "scope": "required", + "purl": "pkg:npm/xml-naming@0.3.0", + "hashes": [ + { + "alg": "SHA-512", + "content": "ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + }, + { + "type": "library", + "bom-ref": "pkg:npm/yallist@3.1.1", + "name": "yallist", + "version": "3.1.1", + "scope": "development", + "purl": "pkg:npm/yallist@3.1.1", + "hashes": [ + { + "alg": "SHA-512", + "content": "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + } + ], + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ], + "properties": [ + { + "name": "bitbybit:installed", + "value": "true" + }, + { + "name": "bitbybit:license-status", + "value": "declared" + } + ] + } + ], + "dependencies": [ + { + "ref": "pkg:npm/%40babel%2Fcode-frame@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fhelper-validator-identifier@7.29.7", + "pkg:npm/js-tokens@4.0.0", + "pkg:npm/picocolors@1.1.1" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fcompat-data@7.29.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40babel%2Fcore@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fcode-frame@7.29.7", + "pkg:npm/%40babel%2Fgenerator@7.29.8", + "pkg:npm/%40babel%2Fhelper-compilation-targets@7.29.7", + "pkg:npm/%40babel%2Fhelper-module-transforms@7.29.7", + "pkg:npm/%40babel%2Fhelpers@7.29.7", + "pkg:npm/%40babel%2Fparser@7.29.8", + "pkg:npm/%40babel%2Ftemplate@7.29.7", + "pkg:npm/%40babel%2Ftraverse@7.29.8", + "pkg:npm/%40babel%2Ftypes@7.29.8", + "pkg:npm/%40jridgewell%2Fremapping@2.3.5", + "pkg:npm/convert-source-map@2.0.0", + "pkg:npm/debug@4.4.3", + "pkg:npm/gensync@1.0.0-beta.2", + "pkg:npm/json5@2.2.3", + "pkg:npm/semver@6.3.1" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fgenerator@7.29.8", + "dependsOn": [ + "pkg:npm/%40babel%2Fparser@7.29.8", + "pkg:npm/%40babel%2Ftypes@7.29.8", + "pkg:npm/%40jridgewell%2Fgen-mapping@0.3.13", + "pkg:npm/%40jridgewell%2Ftrace-mapping@0.3.31", + "pkg:npm/jsesc@3.1.0" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-compilation-targets@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fcompat-data@7.29.7", + "pkg:npm/%40babel%2Fhelper-validator-option@7.29.7", + "pkg:npm/browserslist@4.28.7", + "pkg:npm/lru-cache@5.1.1", + "pkg:npm/semver@6.3.1" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-globals@7.29.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-module-imports@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Ftraverse@7.29.8", + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-module-transforms@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fhelper-module-imports@7.29.7", + "pkg:npm/%40babel%2Fhelper-validator-identifier@7.29.7", + "pkg:npm/%40babel%2Ftraverse@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-plugin-utils@7.29.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-string-parser@7.29.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-validator-identifier@7.29.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40babel%2Fhelper-validator-option@7.29.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40babel%2Fhelpers@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Ftemplate@7.29.7", + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fparser@7.29.8", + "dependsOn": [ + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fplugin-transform-react-jsx-self@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fhelper-plugin-utils@7.29.7" + ] + }, + { + "ref": "pkg:npm/%40babel%2Fplugin-transform-react-jsx-source@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fhelper-plugin-utils@7.29.7" + ] + }, + { + "ref": "pkg:npm/%40babel%2Ftemplate@7.29.7", + "dependsOn": [ + "pkg:npm/%40babel%2Fcode-frame@7.29.7", + "pkg:npm/%40babel%2Fparser@7.29.8", + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40babel%2Ftraverse@7.29.8", + "dependsOn": [ + "pkg:npm/%40babel%2Fcode-frame@7.29.7", + "pkg:npm/%40babel%2Fgenerator@7.29.8", + "pkg:npm/%40babel%2Fhelper-globals@7.29.7", + "pkg:npm/%40babel%2Fparser@7.29.8", + "pkg:npm/%40babel%2Ftemplate@7.29.7", + "pkg:npm/%40babel%2Ftypes@7.29.8", + "pkg:npm/debug@4.4.3" + ] + }, + { + "ref": "pkg:npm/%40babel%2Ftypes@7.29.8", + "dependsOn": [ + "pkg:npm/%40babel%2Fhelper-string-parser@7.29.7", + "pkg:npm/%40babel%2Fhelper-validator-identifier@7.29.7" + ] + }, + { + "ref": "pkg:npm/%40bitbybit-dev%2Fbase@1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40bitbybit-dev%2Focct-worker@1.1.1", + "dependsOn": [ + "pkg:npm/%40bitbybit-dev%2Focct@1.1.1", + "pkg:npm/rxjs@7.8.2" + ] + }, + { + "ref": "pkg:npm/%40bitbybit-dev%2Focct@1.1.1", + "dependsOn": [ + "pkg:npm/%40bitbybit-dev%2Fbase@1.1.1" + ] + }, + { + "ref": "pkg:npm/%40dimforge%2Frapier3d-compat@0.12.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Faix-ppc64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Faix-ppc64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fandroid-arm@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fandroid-arm@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fandroid-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fandroid-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fandroid-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fandroid-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fdarwin-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fdarwin-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fdarwin-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fdarwin-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Ffreebsd-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Ffreebsd-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-arm@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-arm@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-ia32@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-ia32@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-loong64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-loong64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-mips64el@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-mips64el@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-ppc64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-ppc64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-riscv64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-riscv64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-s390x@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-s390x@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Flinux-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fnetbsd-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fnetbsd-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fopenbsd-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fopenbsd-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fsunos-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fsunos-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fwin32-arm64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fwin32-arm64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fwin32-ia32@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fwin32-ia32@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fwin32-x64@0.25.12", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40esbuild%2Fwin32-x64@0.28.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40jridgewell%2Fgen-mapping@0.3.13", + "dependsOn": [ + "pkg:npm/%40jridgewell%2Fsourcemap-codec@1.5.5", + "pkg:npm/%40jridgewell%2Ftrace-mapping@0.3.31" + ] + }, + { + "ref": "pkg:npm/%40jridgewell%2Fremapping@2.3.5", + "dependsOn": [ + "pkg:npm/%40jridgewell%2Fgen-mapping@0.3.13", + "pkg:npm/%40jridgewell%2Ftrace-mapping@0.3.31" + ] + }, + { + "ref": "pkg:npm/%40jridgewell%2Fresolve-uri@3.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40jridgewell%2Fsourcemap-codec@1.5.5", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40jridgewell%2Ftrace-mapping@0.3.31", + "dependsOn": [ + "pkg:npm/%40jridgewell%2Fresolve-uri@3.1.2", + "pkg:npm/%40jridgewell%2Fsourcemap-codec@1.5.5" + ] + }, + { + "ref": "pkg:npm/%40napi-rs%2Flzma-linux-x64-gnu@1.5.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40nodable%2Fentities@3.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rolldown%2Fpluginutils@1.0.0-beta.27", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-android-arm-eabi@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-android-arm64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-darwin-arm64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-darwin-x64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-freebsd-arm64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-freebsd-x64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-arm-gnueabihf@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-arm-musleabihf@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-arm64-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-arm64-musl@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-loong64-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-loong64-musl@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-ppc64-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-ppc64-musl@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-riscv64-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-riscv64-musl@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-s390x-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-x64-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-linux-x64-musl@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-openbsd-x64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-openharmony-arm64@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-win32-arm64-msvc@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-win32-ia32-msvc@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-win32-x64-gnu@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40rollup%2Frollup-win32-x64-msvc@4.62.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40sqlite.org%2Fsqlite-wasm@3.53.0-build1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40tweenjs%2Ftween.js@23.1.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40types%2Fbabel__core@7.20.5", + "dependsOn": [ + "pkg:npm/%40babel%2Fparser@7.29.8", + "pkg:npm/%40babel%2Ftypes@7.29.8", + "pkg:npm/%40types%2Fbabel__generator@7.27.0", + "pkg:npm/%40types%2Fbabel__template@7.4.4", + "pkg:npm/%40types%2Fbabel__traverse@7.28.0" + ] + }, + { + "ref": "pkg:npm/%40types%2Fbabel__generator@7.27.0", + "dependsOn": [ + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40types%2Fbabel__template@7.4.4", + "dependsOn": [ + "pkg:npm/%40babel%2Fparser@7.29.8", + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40types%2Fbabel__traverse@7.28.0", + "dependsOn": [ + "pkg:npm/%40babel%2Ftypes@7.29.8" + ] + }, + { + "ref": "pkg:npm/%40types%2Festree@1.0.9", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40types%2Fprop-types@15.7.15", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40types%2Freact-dom@18.3.7", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40types%2Freact@18.3.31", + "dependsOn": [ + "pkg:npm/%40types%2Fprop-types@15.7.15", + "pkg:npm/csstype@3.2.3" + ] + }, + { + "ref": "pkg:npm/%40types%2Fstats.js@0.17.4", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40types%2Fthree@0.185.3", + "dependsOn": [ + "pkg:npm/%40dimforge%2Frapier3d-compat@0.12.0", + "pkg:npm/%40tweenjs%2Ftween.js@23.1.3", + "pkg:npm/%40types%2Fstats.js@0.17.4", + "pkg:npm/%40types%2Fwebxr@0.5.24", + "pkg:npm/fflate@0.8.3", + "pkg:npm/meshoptimizer@1.1.1" + ] + }, + { + "ref": "pkg:npm/%40types%2Fwebxr@0.5.24", + "dependsOn": [] + }, + { + "ref": "pkg:npm/%40vitejs%2Fplugin-react@4.7.0", + "dependsOn": [ + "pkg:npm/%40babel%2Fcore@7.29.7", + "pkg:npm/%40babel%2Fplugin-transform-react-jsx-self@7.29.7", + "pkg:npm/%40babel%2Fplugin-transform-react-jsx-source@7.29.7", + "pkg:npm/%40rolldown%2Fpluginutils@1.0.0-beta.27", + "pkg:npm/%40types%2Fbabel__core@7.20.5", + "pkg:npm/react-refresh@0.17.0" + ] + }, + { + "ref": "pkg:npm/anynum@1.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/baseline-browser-mapping@2.11.10", + "dependsOn": [] + }, + { + "ref": "pkg:npm/bitbybit-web-cad@0.1.0", + "dependsOn": [ + "pkg:npm/%40bitbybit-dev%2Focct-worker@1.1.1", + "pkg:npm/%40bitbybit-dev%2Focct@1.1.1", + "pkg:npm/%40sqlite.org%2Fsqlite-wasm@3.53.0-build1", + "pkg:npm/%40types%2Freact-dom@18.3.7", + "pkg:npm/%40types%2Freact@18.3.31", + "pkg:npm/%40types%2Fthree@0.185.3", + "pkg:npm/%40vitejs%2Fplugin-react@4.7.0", + "pkg:npm/fast-xml-parser@5.10.1", + "pkg:npm/fflate@0.8.3", + "pkg:npm/lucide-react@0.468.0", + "pkg:npm/react-dom@18.3.1", + "pkg:npm/react@18.3.1", + "pkg:npm/three@0.185.1", + "pkg:npm/tsx@4.23.1", + "pkg:npm/typescript@5.9.3", + "pkg:npm/vite@6.4.3", + "pkg:npm/ws@8.21.3" + ] + }, + { + "ref": "pkg:npm/browserslist@4.28.7", + "dependsOn": [ + "pkg:npm/baseline-browser-mapping@2.11.10", + "pkg:npm/caniuse-lite@1.0.30001806", + "pkg:npm/electron-to-chromium@1.5.399", + "pkg:npm/node-releases@2.0.51", + "pkg:npm/update-browserslist-db@1.2.3" + ] + }, + { + "ref": "pkg:npm/caniuse-lite@1.0.30001806", + "dependsOn": [] + }, + { + "ref": "pkg:npm/convert-source-map@2.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/csstype@3.2.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/debug@4.4.3", + "dependsOn": [ + "pkg:npm/ms@2.1.3" + ] + }, + { + "ref": "pkg:npm/electron-to-chromium@1.5.399", + "dependsOn": [] + }, + { + "ref": "pkg:npm/esbuild@0.25.12", + "dependsOn": [ + "pkg:npm/%40esbuild%2Faix-ppc64@0.25.12", + "pkg:npm/%40esbuild%2Fandroid-arm64@0.25.12", + "pkg:npm/%40esbuild%2Fandroid-arm@0.25.12", + "pkg:npm/%40esbuild%2Fandroid-x64@0.25.12", + "pkg:npm/%40esbuild%2Fdarwin-arm64@0.25.12", + "pkg:npm/%40esbuild%2Fdarwin-x64@0.25.12", + "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.25.12", + "pkg:npm/%40esbuild%2Ffreebsd-x64@0.25.12", + "pkg:npm/%40esbuild%2Flinux-arm64@0.25.12", + "pkg:npm/%40esbuild%2Flinux-arm@0.25.12", + "pkg:npm/%40esbuild%2Flinux-ia32@0.25.12", + "pkg:npm/%40esbuild%2Flinux-loong64@0.25.12", + "pkg:npm/%40esbuild%2Flinux-mips64el@0.25.12", + "pkg:npm/%40esbuild%2Flinux-ppc64@0.25.12", + "pkg:npm/%40esbuild%2Flinux-riscv64@0.25.12", + "pkg:npm/%40esbuild%2Flinux-s390x@0.25.12", + "pkg:npm/%40esbuild%2Flinux-x64@0.25.12", + "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.25.12", + "pkg:npm/%40esbuild%2Fnetbsd-x64@0.25.12", + "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.25.12", + "pkg:npm/%40esbuild%2Fopenbsd-x64@0.25.12", + "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.25.12", + "pkg:npm/%40esbuild%2Fsunos-x64@0.25.12", + "pkg:npm/%40esbuild%2Fwin32-arm64@0.25.12", + "pkg:npm/%40esbuild%2Fwin32-ia32@0.25.12", + "pkg:npm/%40esbuild%2Fwin32-x64@0.25.12" + ] + }, + { + "ref": "pkg:npm/esbuild@0.28.1", + "dependsOn": [ + "pkg:npm/%40esbuild%2Faix-ppc64@0.28.1", + "pkg:npm/%40esbuild%2Fandroid-arm64@0.28.1", + "pkg:npm/%40esbuild%2Fandroid-arm@0.28.1", + "pkg:npm/%40esbuild%2Fandroid-x64@0.28.1", + "pkg:npm/%40esbuild%2Fdarwin-arm64@0.28.1", + "pkg:npm/%40esbuild%2Fdarwin-x64@0.28.1", + "pkg:npm/%40esbuild%2Ffreebsd-arm64@0.28.1", + "pkg:npm/%40esbuild%2Ffreebsd-x64@0.28.1", + "pkg:npm/%40esbuild%2Flinux-arm64@0.28.1", + "pkg:npm/%40esbuild%2Flinux-arm@0.28.1", + "pkg:npm/%40esbuild%2Flinux-ia32@0.28.1", + "pkg:npm/%40esbuild%2Flinux-loong64@0.28.1", + "pkg:npm/%40esbuild%2Flinux-mips64el@0.28.1", + "pkg:npm/%40esbuild%2Flinux-ppc64@0.28.1", + "pkg:npm/%40esbuild%2Flinux-riscv64@0.28.1", + "pkg:npm/%40esbuild%2Flinux-s390x@0.28.1", + "pkg:npm/%40esbuild%2Flinux-x64@0.28.1", + "pkg:npm/%40esbuild%2Fnetbsd-arm64@0.28.1", + "pkg:npm/%40esbuild%2Fnetbsd-x64@0.28.1", + "pkg:npm/%40esbuild%2Fopenbsd-arm64@0.28.1", + "pkg:npm/%40esbuild%2Fopenbsd-x64@0.28.1", + "pkg:npm/%40esbuild%2Fopenharmony-arm64@0.28.1", + "pkg:npm/%40esbuild%2Fsunos-x64@0.28.1", + "pkg:npm/%40esbuild%2Fwin32-arm64@0.28.1", + "pkg:npm/%40esbuild%2Fwin32-ia32@0.28.1", + "pkg:npm/%40esbuild%2Fwin32-x64@0.28.1" + ] + }, + { + "ref": "pkg:npm/escalade@3.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/fast-xml-builder@1.3.0", + "dependsOn": [ + "pkg:npm/path-expression-matcher@1.6.2", + "pkg:npm/xml-naming@0.3.0" + ] + }, + { + "ref": "pkg:npm/fast-xml-parser@5.10.1", + "dependsOn": [ + "pkg:npm/%40nodable%2Fentities@3.0.0", + "pkg:npm/fast-xml-builder@1.3.0", + "pkg:npm/is-unsafe@2.0.0", + "pkg:npm/path-expression-matcher@1.6.2", + "pkg:npm/strnum@2.4.1", + "pkg:npm/xml-naming@0.3.0" + ] + }, + { + "ref": "pkg:npm/fdir@6.5.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/fflate@0.8.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/fsevents@2.3.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/gensync@1.0.0-beta.2", + "dependsOn": [] + }, + { + "ref": "pkg:npm/is-unsafe@2.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/js-tokens@4.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/jsesc@3.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/json5@2.2.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/loose-envify@1.4.0", + "dependsOn": [ + "pkg:npm/js-tokens@4.0.0" + ] + }, + { + "ref": "pkg:npm/lru-cache@5.1.1", + "dependsOn": [ + "pkg:npm/yallist@3.1.1" + ] + }, + { + "ref": "pkg:npm/lucide-react@0.468.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/meshoptimizer@1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/ms@2.1.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/nanoid@3.3.16", + "dependsOn": [] + }, + { + "ref": "pkg:npm/node-releases@2.0.51", + "dependsOn": [] + }, + { + "ref": "pkg:npm/path-expression-matcher@1.6.2", + "dependsOn": [] + }, + { + "ref": "pkg:npm/picocolors@1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/picomatch@4.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:npm/postcss@8.5.25", + "dependsOn": [ + "pkg:npm/nanoid@3.3.16", + "pkg:npm/picocolors@1.1.1", + "pkg:npm/source-map-js@1.2.1" + ] + }, + { + "ref": "pkg:npm/react-dom@18.3.1", + "dependsOn": [ + "pkg:npm/loose-envify@1.4.0", + "pkg:npm/scheduler@0.23.2" + ] + }, + { + "ref": "pkg:npm/react-refresh@0.17.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/react@18.3.1", + "dependsOn": [ + "pkg:npm/loose-envify@1.4.0" + ] + }, + { + "ref": "pkg:npm/rollup@4.62.4", + "dependsOn": [ + "pkg:npm/%40napi-rs%2Flzma-linux-x64-gnu@1.5.1", + "pkg:npm/%40rollup%2Frollup-android-arm-eabi@4.62.4", + "pkg:npm/%40rollup%2Frollup-android-arm64@4.62.4", + "pkg:npm/%40rollup%2Frollup-darwin-arm64@4.62.4", + "pkg:npm/%40rollup%2Frollup-darwin-x64@4.62.4", + "pkg:npm/%40rollup%2Frollup-freebsd-arm64@4.62.4", + "pkg:npm/%40rollup%2Frollup-freebsd-x64@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-arm-gnueabihf@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-arm-musleabihf@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-arm64-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-arm64-musl@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-loong64-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-loong64-musl@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-ppc64-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-ppc64-musl@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-riscv64-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-riscv64-musl@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-s390x-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-x64-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-linux-x64-musl@4.62.4", + "pkg:npm/%40rollup%2Frollup-openbsd-x64@4.62.4", + "pkg:npm/%40rollup%2Frollup-openharmony-arm64@4.62.4", + "pkg:npm/%40rollup%2Frollup-win32-arm64-msvc@4.62.4", + "pkg:npm/%40rollup%2Frollup-win32-ia32-msvc@4.62.4", + "pkg:npm/%40rollup%2Frollup-win32-x64-gnu@4.62.4", + "pkg:npm/%40rollup%2Frollup-win32-x64-msvc@4.62.4", + "pkg:npm/%40types%2Festree@1.0.9", + "pkg:npm/fsevents@2.3.3" + ] + }, + { + "ref": "pkg:npm/rxjs@7.8.2", + "dependsOn": [ + "pkg:npm/tslib@2.8.1" + ] + }, + { + "ref": "pkg:npm/scheduler@0.23.2", + "dependsOn": [ + "pkg:npm/loose-envify@1.4.0" + ] + }, + { + "ref": "pkg:npm/semver@6.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/source-map-js@1.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/strnum@2.4.1", + "dependsOn": [ + "pkg:npm/anynum@1.0.1" + ] + }, + { + "ref": "pkg:npm/three@0.185.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/tinyglobby@0.2.17", + "dependsOn": [ + "pkg:npm/fdir@6.5.0", + "pkg:npm/picomatch@4.0.5" + ] + }, + { + "ref": "pkg:npm/tslib@2.8.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/tsx@4.23.1", + "dependsOn": [ + "pkg:npm/esbuild@0.28.1", + "pkg:npm/fsevents@2.3.3" + ] + }, + { + "ref": "pkg:npm/typescript@5.9.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/update-browserslist-db@1.2.3", + "dependsOn": [ + "pkg:npm/escalade@3.2.0", + "pkg:npm/picocolors@1.1.1" + ] + }, + { + "ref": "pkg:npm/vite@6.4.3", + "dependsOn": [ + "pkg:npm/esbuild@0.25.12", + "pkg:npm/fdir@6.5.0", + "pkg:npm/fsevents@2.3.3", + "pkg:npm/picomatch@4.0.5", + "pkg:npm/postcss@8.5.25", + "pkg:npm/rollup@4.62.4", + "pkg:npm/tinyglobby@0.2.17" + ] + }, + { + "ref": "pkg:npm/ws@8.21.3", + "dependsOn": [] + }, + { + "ref": "pkg:npm/xml-naming@0.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/yallist@3.1.1", + "dependsOn": [] + } + ] +} diff --git a/config/security-baseline.json b/config/security-baseline.json new file mode 100644 index 0000000..1be1877 --- /dev/null +++ b/config/security-baseline.json @@ -0,0 +1,21 @@ +{ + "schemaVersion": 1, + "browserScope": "chrome-only", + "headersPath": "public/_headers", + "requiredHeaders": { + "Cross-Origin-Opener-Policy": "same-origin", + "Cross-Origin-Embedder-Policy": "require-corp", + "Cross-Origin-Resource-Policy": "same-origin", + "Permissions-Policy": "camera=(), microphone=(), geolocation=(), payment=()" + }, + "contentSecurityPolicy": { + "default-src": ["'self'"], + "script-src": ["'self'", "'wasm-unsafe-eval'"], + "worker-src": ["'self'", "blob:"], + "connect-src": ["'self'"], + "object-src": ["'none'"], + "base-uri": ["'self'"], + "frame-ancestors": ["'none'"] + }, + "forbiddenSourcePatterns": ["dangerouslySetInnerHTML", "new Function(", "eval("] +} diff --git a/docs/cam-exact-closure-implementation.zh-CN.md b/docs/cam-exact-closure-implementation.zh-CN.md new file mode 100644 index 0000000..ebd0ebb --- /dev/null +++ b/docs/cam-exact-closure-implementation.zh-CN.md @@ -0,0 +1,63 @@ +# Web FreeCAD CAM exact 闭包实施文档 + +更新时间:2026-08-07 + +## 1. 验收口径 + +本轮以 FreeCAD `1.1.1`、提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d` 为 CAM/Path 和 Qt 行为基线。`cnc_wams_gpt6/linuxcnc-master/web` 中已经构建并通过既有回归的 LinuxCNC WebAssembly 是用户指定的实体机床与真实控制器认证权威;它的上游 RS274、canonical command、task/motion、HAL、trajectory planner 和 kinematics 结果决定 G-code 是否被机床接受。 + +运行介质、源码提交和产物哈希必须保留在报告中,以保证复现性。按照项目验收口径,LinuxCNC WASM 认证通过后不再要求另一台物理设备作为 CAM-32 的阻塞条件。 + +## 2. 唯一语义链 + +1. CAD/FreeCAD Path 生成并保存 `Path::Feature` / `Path::FeaturePython` 及 `Path::PropertyPath`,Web 端以确定性 Job/Path 表示承接。 +2. OpenCAMLib WASM 执行 drop-cutter/waterline 等刀具与曲面算法,产出受版本和哈希约束的刀位结果。 +3. CAMotics 官方源码阶段依据 `GCodeMachine.cpp` 的 `start/changeTool/setFeed/move/end` 语义生成受控 G-code;当前不调用 CAMotics parser,避免出现第二套 G-code 解释口径。 +4. G-code 生成完成后才允许调用 LinuxCNC WASM。所有语法、模态、子程序/remap、单位、G93/G94、M428/M429、task/motion、轨迹规划和错误诊断只由 LinuxCNC WASM 决定。 +5. 连续五轴程序使用目标机 `XYZBC` 配置、`M428` RTCP、逐段 G93 inverse-time feed 和 `M429` identity 恢复,并由 LinuxCNC 上游 task/motion 与 `xyzbcKinematicsInverse` 完成接受测试;OCCT 在该链路的仿真侧执行实体材料去除。 + +强制顺序为:`CAD -> OpenCAMLib WASM -> CAMotics source stage -> G-code -> LinuxCNC WASM`。任何绕过 G-code 生成阶段直接调用控制器、或在 Web/CAMotics 中另行解析最终 G-code 的路径,都不属于本项目 CAM 合同。 + +## 3. 任务分派 + +| 任务 | Owner | 交付 | 验收门 | 状态 | +| --- | --- | --- | --- | --- | +| XCAM-01 FreeCAD Path 算法 oracle | ORACLE | 原生 Profile 基准、命令序列、边界、长度、稳定哈希 | FreeCAD GUI/Path 实际运行且固定提交 | completed(Profile 基线;其余工序继续) | +| XCAM-02 Qt 动态 oracle | ORACLE+UI | CAM workbench、菜单/工具栏、命令启用、选择状态和 Task 状态 | Xvfb 下真实 Qt action/selection 回放 | completed(56 命令;Task 生命周期继续) | +| XCAM-03 Path FCStd 双向往返 | IO+ORACLE | `Path::Feature`、`Path::FeaturePython`、`Path::PropertyPath` save/open/mutate/save/open | 原生对象、命令与属性不丢失;Web 资源级路径编辑默认保护,FeaturePython 仅显式 opt-in 且不执行脚本 | native verified / safe resource codec verified / operation semantics in_progress | +| XCAM-04 CAM Job 元数据 | CORE+UI+QUALITY | `CAM_Comment`、`CAM_PropertyBag`、`CAM_Compound` 在 Job/JSON/Undo/Redo 中保持一致 | 评论、字符串/数字/布尔属性和复合 Operation 已有边界校验及依赖清理;不代表原生 Path operation-object 或 Python recompute | browser verified / native semantic parity in_progress | +| XCAM-04 OpenCAMLib WASM | KERNEL | 锁定上游提交的 OCL Emscripten 产物和浏览器 Worker | PathDropCutter/Adaptive/Waterline 可执行、可取消、资源有界 | completed | +| XCAM-05 CAMotics 源码阶段 | KERNEL+QUALITY | 锁定官方 CAMotics/C! 源码,按源码运动契约生成 G-code,并构建原生 GUI/TPL、headless CLI 与 Python sidecar | 主链不调用 CAMotics G-code parser;最终解析只走 LinuxCNC WASM;原生 CLI/STL 和 Qt/TPL 冒烟可复跑 | source-stage + native GUI/TPL/CLI completed / browser full-program differential pending | +| XCAM-06 原生实体材料去除 | KERNEL | OCCT cutter sweep/boolean、逐步实体和剩余体积 | BRep 有效、体积单调、资源释放、与 OCL 路径一致 | completed(当前平底刀/直线与采样模型) | +| XCAM-07 LinuxCNC RTCP 与机床认证 | CONTROLLER+QUALITY | XYZBC 连续工具轴、G93、M428/M429、限位/奇异/停机报告 | LinuxCNC WASM RS274、task/motion、HAL、kins 全链通过 | completed(认证机型;泛化安全门继续) | +| XCAM-08 Web Facade/UI 接入 | PLATFORM+UI | CAD→OCL→CAMotics→G-code→LinuxCNC WASM bridge | Chrome 实际 OCL 48 刀位点、65 行 G-code、48 轨迹段并被 LinuxCNC 接受 | completed(认证流程;完整 Qt 对话框 oracle 继续) | +| XCAM-09 exact 差异闭包 | QUALITY | CAM parity 合同、WBS、证据哈希和零未登记差异 | 所有前置门通过后才能提升声明 | pending | + +连续执行顺序为 `XCAM-01/02/03 + XCAM-04/05/06 + XCAM-07 -> XCAM-08 -> XCAM-09`。认证闭环固定使用同一份由 OCL 输出驱动的 G-code;LinuxCNC 接受的是这份最终程序,不是旧的网页路径。 + +## 4. RTCP G-code 合同 + +目标控制器为 `cnc_wams_gpt6` 的 LinuxCNC WASM,机床配置为 `XYZBC` table-rotary-tilting。程序至少满足: + +- 入口使用 `G21 G17 G40 G49 G80 G90 G94` 等明确安全模态,并完成 Tool/Spindle/Coolant 状态设置。 +- 非 TCP 的安全定位在 identity kinematics 下进行;执行 `M428` 后才允许 XYZBC RTCP 联动。 +- 连续切削段使用 `G93`,每个 `G1`/圆弧切削块具有显式正有限 `F` inverse-time 值。 +- B 轴必须落在配置的软件限位内,C 轴展开必须连续;相邻旋转轴跳变、非有限坐标、零时长段、不可达姿态和奇异邻域必须拒绝或产生明确诊断。 +- 退出切削前恢复 `G94`,安全抬刀并执行 `M429`;程序结束时主轴和冷却关闭。 +- 认证必须由 LinuxCNC WASM 上游解释器生成 canonical motion,并由 task/motion、HAL 和上游 XYZBC kinematics 消费,文本正则检查不能作为接受证据。 + +## 5. 材料去除合同 + +主结果由 OCCT 实体布尔生成,输入是 Stock BRep、刀具/刀柄实体和 LinuxCNC canonical motion。每一步记录 operation、motion index、输入/输出 BRep 指纹、去除体积、剩余体积、碰撞和诊断。体积不得增加,空布尔或无效 BRep 必须失败,所有 ShapeHandle/Worker 引用必须归零。 + +OpenCAMLib 用于 drop-cutter/waterline 等刀具-表面算法,不承担 G-code 解释。CAMotics 固定官方源码提交,源码阶段负责把三轴受控运动写成 G-code;工作区的 CAMotics 1.3 Qt/TPL、`camsim`、`gcodetool`、`planner` 和 Python sidecar 均已构建并通过对应冒烟,另将上游 sweep C++ 编译为可由浏览器实际加载的 standalone WASM。该 WASM 只覆盖 Conic/Spheroid sweep 与包围盒,不包含完整 `camsim`、TPL、Qt 或 parser;它只作为浏览器内核子集证据,不进入规范控制链。最终 G-code 不经过 CAMotics parser,而是直接交给 LinuxCNC WASM;CAMotics 的三轴能力不能代替五轴 LinuxCNC RTCP 运动学认证。 + +## 6. 证据和声明规则 + +每个报告必须包含源码提交、构建命令、产物路径、字节数和 SHA-256、运行环境、成功与负例计数、资源释放结果。只有机器可重复执行的报告才能进入 `config/freecad-cam-parity.json`。源码清册、静态字符串或截图不能单独关闭算法、控制器、FCStd 或实体材料去除任务。 + +## 7. 已通过的主链证据 + +`config/chrome-cam-linuxcnc-machine-verification.json` 已由 Chrome 150 实际执行:OCL 上游 `PathDropCutter` 以 2 个 CAD 操作平面三角面把 5 个候选点解析为 48 个刀位点;CAMotics 源码阶段随后生成 2758 字节 G-code;LinuxCNC WASM 接受 65 行、138 个块、48 个轨迹段,解析权威和后端均为 `linuxcnc-wasm`。程序包含 `M428/M429`、`G93/G94`、`B5→B15`、`C359→C361`。 + +这份证据关闭的是选定 `XYZBC table-rotary-tilting` 数字机床案例,不等价于任意机床安全认证、实体执行、完整 FreeCAD Path 算法、浏览器内完整 CAMotics 程序或同输入 simulator differential。 diff --git a/docs/cam-native-kernel-pipeline.zh-CN.md b/docs/cam-native-kernel-pipeline.zh-CN.md new file mode 100644 index 0000000..0f2a54e --- /dev/null +++ b/docs/cam-native-kernel-pipeline.zh-CN.md @@ -0,0 +1,77 @@ +# CAM 原生内核流水线实施与任务分解 + +更新日期:2026-08-07 + +## 强制执行顺序 + +```text +CAD 几何 + -> OpenCAMLib WASM 刀位算法 + -> CAMotics 源码阶段运动契约 + -> 生成规范 G-code + -> LinuxCNC WASM 解析、控制器语义、执行与验收 +``` + +CAMotics 不解析流水线产生的规范 G-code。唯一的 G-code 解析和控制器语义权威是 LinuxCNC WASM。 + +## 已落地能力 + +| 任务 | 状态 | 实现与证据 | +| --- | --- | --- | +| CAM-NATIVE-01 OpenCAMLib | 完成 | 上游提交 `95b036fe28ce6d77c97b98e5fbc337904ae49560` 通过 Emscripten 3.1.69 构建;浏览器执行 `PathDropCutter`,不是 TypeScript 重写算法。 | +| CAM-NATIVE-02 OCL 制品门禁 | 完成 | `public/vendor/opencamlib/ocl.js` 为单文件嵌入 WASM;SHA-256 为 `0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89`。 | +| CAM-NATIVE-03 CAMotics 源码阶段 | 完成(源码契约) | 锁定 CAMotics 提交 `e84665f2fa9d1151f03282ac7e01320bc65e015b`,依据 `GCodeMachine.cpp` 的 `start`、`changeTool`、`setFeed`、`move` 和 `end` 语义生成 G-code;适配层不解析输出。 | +| CAM-NATIVE-03B CAMotics 原生构建 | 完成(Qt5 GUI + TPL + CLI) | CAMotics `e84665f2...` 使用官方 C! `9b6672a0...`、Qt5、V8 ABI `v8_compress_pointers=0` 构建 `CAMotics/camotics`、`CAMotics/tplang`、`camsim`、`gcodetool`、`planner` 和 `build/camotics.so`;GUI/TPL 哈希、动态 Qt/V8 依赖、官方 TPL 10/10 测试和 Xvfb 主窗口(1200x800、可见)均通过 `config/camotics-native-artifact.json`。 | +| CAM-NATIVE-03C CAMotics 独立 WASM 内核 | 完成(扫掠子集) | 直接编译上游 `Sweep.cpp`、`ConicSweep.cpp`、`SpheroidSweep.cpp` 为零 imports 的 standalone WASM;Chrome 150 实际加载并执行 Conic/Spheroid depth、长段包围盒和确定性回放。 | +| CAM-NATIVE-04 OCCT 材料去除 | 完成(当前模型) | 使用 Bitbybit OCCT WASM 创建库存与切削工具并执行 BRep 布尔差;浏览器验证剩余体为结构有效单实体,可导出 BRep。 | +| CAM-NATIVE-05 Chrome 验收 | 完成 | Chrome 150 中 OCL 14 个刀位点、18 行 G-code、库存体积 300、去除体积 12、剩余体积 288、释放后内核引用为 0。 | +| CAM-NATIVE-06 主链 OCL 接管 | 完成(认证机型) | `prepareCamPipeline` 强制调用上游 `PathDropCutter`,以 48 个 OCL 刀位点驱动 CAMotics 源码阶段和 LinuxCNC XYZBC G-code;未提供 runner 时不会静默回退。 | + +当前材料去除模型是确定性采样的平底刀 BRep 模型。轴向水平直线使用单个连续段包络,任意采样折线使用定向圆柱与端点球的连续段 BRep sweep;它是原生 OCCT 实体布尔,但不是 FreeCAD 原生 Path 材料去除的等价实现,能力报告固定为 `freeCadNativeEquivalent: false`。 + +## LinuxCNC WASM 接管 + +`cnc_wams_gpt6/linuxcnc-master/web/src/app.js` 已提供受控 `postMessage` bridge。父页面只能发送已经生成的 G-code,LinuxCNC 页面等待 machine case ready 后调用原生 `loadProgram`,由 LinuxCNC WASM 上游解释器生成轨迹,再按请求决定是否 `run`;返回结果固定带有 `backend: linuxcnc-wasm` 和 `parserAuthority: linuxcnc-wasm`。父页面不接收或替代 RS274 解析,也不把 CAMotics parser 放入执行链。 + +## 真实边界 + +- OpenCAMLib:上游算法已作为浏览器 WASM 执行。 +- CAMotics:工作区已具备通过哈希、Qt5/V8 动态链接、官方 TPL 测试和真实 Xvfb 窗口冒烟验证的 1.3 原生 GUI/TPL,并保留 `camsim`、`gcodetool`、`planner` 和 Python 模块作为宿主 CLI/sidecar;同时有直接来源编译的 standalone sweep WASM,浏览器可执行该内核子集,但不是完整 Qt/TPL/程序运行时。 +- CAMotics 解析边界:原生 `camsim` 只在独立冒烟证据中消费仓库示例。规范生产链仍由源码运动契约生成 G-code,并直接交 LinuxCNC WASM;不得把 CAMotics parser 提升为第二套规范解析器。 +- CAMotics 浏览器边界:`public/vendor/camotics/camotics-sweep.wasm` 只包含上游扫掠数学和包围盒,不包含 G-code parser、TPL、Qt、文件系统或完整原生 GUI。能力报告将 `browserWasmKernelExecutable=true` 与 `browserExecutable=false` 分开记录;Qt5 GUI/TPL 仅在宿主进程中可用。 +- LinuxCNC WASM:桥接已接入根应用和 LinuxCNC 页面;Chrome machine acceptance 已在重建后的 LinuxCNC WASM 产物上通过,报告保留解析块、轨迹段、RTCP 模态和限位结果;同一份程序已分别通过 `dry-run` 和 `run`。 +- 连续工具轴:所选 XYZBC table-rotary-tilting 数字机型已完成;其他机型、完整奇异点 oracle 和生产授权仍关闭。LinuxCNC `web/evidence/production-safety-gate-matrix.json` 已覆盖 6 个 5 轴 INI,所有 gate fail-closed,`productionOpen=false`,没有实体运动或计量认证。 +- 曲线扫掠:Chrome 已验证 `continuous-segment-sweep-brep` 的结构有效单实体和非零去料;解析 NURBS/圆弧的无弦误差 sweep、刀柄/夹具实体 oracle 仍开放。 + +## 后续任务安排 + +| 优先级 | 任务 | 验收条件 | 状态/所有者 | +| --- | --- | --- | --- | +| P0 | CAM-PIPE-01 LinuxCNC WASM 接管 | 将本模块生成的 G-code 送入 LinuxCNC WASM;记录解析块、模态状态、刀具/进给、执行轨迹及限位结果;不得调用 CAMotics parser。 | 已完成(认证机型) | +| P0 | CAM-PIPE-02 端到端一致性 | 比较 OCL 刀位、生成 G-code、LinuxCNC WASM 执行轨迹;建立坐标、单位、模态与容差门禁。 | 已完成(Chrome 认证链;泛化容差继续) | +| P1 | CAM-SIM-01 CAMotics 原生构建 | 安装并锁定 C!/SCons,构建 Qt5 `camotics` GUI、`tplang`、`camsim`、`gcodetool`、`planner` 与 Python 模块;提供提交、编译器、Qt/V8 动态依赖、制品哈希、官方 TPL 测试和 Xvfb 窗口冒烟证据。 | 已完成(宿主 Qt5 GUI/TPL/CLI;浏览器集成保持边界) | +| P1 | CAM-SIM-02 CAMotics standalone WASM | 从锁定上游 C++ sweep 源码构建零 imports WASM,提供 ABI、制品哈希、Node 和 Chrome 实际执行证据;禁止引入第二套规范 G-code parser。 | 已完成(sweep 子集;完整程序继续) | +| P1 | CAM-MR-02 任意曲线路径扫掠 | 对 OCL 采样段执行连续段 BRep sweep(定向圆柱 + 端点球并集),每个结果通过 OCCT BRep 结构校验;解析任意曲线的无弦误差 sweep 继续保留。 | 已完成(continuous-segment 子集;解析任意曲线仍开放) | +| P1 | CAM-5AXIS-01 连续工具轴 | 接入机床运动学、姿态连续性、奇异点和关节限位求解,并由 LinuxCNC WASM 执行轨迹验收。 | 已完成(XYZBC 数字机型;泛化姿态/奇异点和其它机型生产门仍开放) | +| P1 | CAM-FCSTD-01 Path 对象往返 | Path Job、ToolBit、ToolController、Operation 和命令列表执行 FCStd 双向 round-trip,并与 FreeCAD oracle 比较。 | 待 FCStd 所有者完成 | + +## 验证命令 + +```bash +./npmw run build:camotics-native +./npmw run check:camotics-native +./npmw run build:camotics-wasm +./npmw run check:camotics-wasm +./npmw run test:camotics-wasm +./npmw run test:chrome-camotics-wasm +./npmw run check:chrome-camotics-wasm +node scripts/check-opencamlib-wasm.mjs +./npmw exec tsx -- --test tests/camNativeSimulation.test.ts +./npmw exec tsc -- --noEmit +node scripts/run-chrome-cam-native-simulation.mjs +node scripts/check-chrome-cam-native-simulation.mjs +npm run test:chrome-cam-linuxcnc-machine +npm run check:chrome-cam-linuxcnc-machine +``` + +机器可读证据位于 `config/camotics-native-artifact.json`、`config/camotics-wasm-artifact.json`、`config/chrome-camotics-wasm-verification.json`、`config/opencamlib-wasm-artifact.json`、`config/chrome-cam-native-simulation-verification.json`、`config/chrome-cam-linuxcnc-machine-verification.json` 与 LinuxCNC `web/evidence/digital-machine-five-axis-certification.json`。 diff --git a/docs/continuation-status.zh-CN.md b/docs/continuation-status.zh-CN.md index 377e7fb..7b5e620 100644 --- a/docs/continuation-status.zh-CN.md +++ b/docs/continuation-status.zh-CN.md @@ -203,3 +203,1555 @@ jq empty config/compatibility-matrix.json 再次执行 `./npmw run probe:freecad-reference` 已确认锁定 oracle 为 FreeCAD `1.1.1`、提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`。当前缓存构建 `guiUp=false`,可加载 `Part/Material/Measure`;其余工作台是构建缺失证据,不是对应 Web 功能的行为 oracle。 新增 [FreeCAD 1.1.1 全功能对标执行路线图](freecad-reference-execution-roadmap.zh-CN.md),按 R0 参考环境、R1 几何/拓扑、R2 Sketcher、R3 参数化核心、R4 FCStd、R5-R8 工作台与平台长尾、R9 发布门禁连续执行。近期先完成完整桌面 O2 oracle、机器清册差分、真实浏览器原生历史三方黄金,再进入 planegcs 与 PartDesign 完整闭环。 + +## 18. 2026-08-03 全功能执行 WBS 与机器门禁 + +新增 [FreeCAD 1.1.1 全功能对标执行 WBS](freecad-full-parity-execution-wbs.zh-CN.md) 和 `config/freecad-execution-plan.json`。计划把十项总目标分配给 ORACLE、KERNEL、TOPO、SKETCH、CORE、IO、DOC、ENGINEERING、PLATFORM、QUALITY 十个责任 lane,登记 P01-P10、G0-G9 和 83 个任务;每个任务均包含状态、依赖、交付物和验收条件。 + +新增 `./npmw run check:execution-plan` 并纳入 `./npmw run verify`。门禁校验锁定基线、lane/program/gate 唯一性、P01-P10 完整性、任务 ID、状态、依赖存在性、依赖无环、非空交付物/验收条件和 program→gate 对应关系。任务只能在专项证据和下游交接完成后标记 `completed`。 + +## 19. 2026-08-03 INV-01 源码 34 模块清册 + +新增 `scripts/generate-freecad-source-inventory.mjs`、`scripts/check-freecad-source-inventory.mjs` 和 `config/freecad-source-inventory.json`。生成器读取锁定 FreeCAD `src/Mod` 与 `InitializeFreeCADBuildOptions.cmake`,记录 34 个模块的 CMake 开关、App/Gui 目录、Python 文件数量、命令注册入口和运行时 oracle 状态;当前共发现 406 个 Python 命令入口。清单基线使用 `.cache/freecad/FreeCAD` 相对路径和锁定 commit,避免把本机绝对路径写入版本产物。 + +`./npmw run check:freecad-inventory` 已纳入 `./npmw run verify`,并要求可用源码 checkout 的目录集合与清单完全一致。静态源码清册仍不能替代 O2 完整桌面 oracle;对象、属性、格式和 GUI 行为继续由 `INV-02..06` 与 `ORA-*` 任务补齐。 + +新增 `scripts/generate-freecad-type-property-inventory.mjs`、`scripts/check-freecad-type-property-inventory.mjs` 和 `config/freecad-type-property-inventory.json`。该清册按源码文件记录 C++ `ADD_PROPERTY(_TYPE)`、`App::Property*` 成员、Python `addProperty` 和 TypeId 调用候选,当前覆盖 4308 个源码文件、1673 个对象线索文件;它只证明来源可追溯,不把静态候选提升为运行时兼容。`./npmw run check:freecad-type-properties` 已纳入 `./npmw run verify`。 + +`scripts/freecad-reference-probe.py` 和 `run-freecad-reference-probe.mjs` 已扩展 ORA-02 模块状态模型。探针现在验证 12 个目标模块,并对每个模块输出 `compiled`、`importable`、`guiRequired`、`guiAvailable`、`runtimeStatus`;本机 headless oracle 实测汇总为 `compiled-importable: 3`、`not-built: 9`。完整 GUI oracle 建成后还需采集 `gui-only-unprobeable` 与 GUI 命令/Task 行为,ORA-02 保持 `in_progress`。 + +## 20. 2026-08-03 Web 原生历史 Worker 故障恢复 + +`NativeOcctHistoryWorkerProvider` 已增加 Worker 崩溃后的终止、监听器解绑、实例重建和重新初始化流程;正在执行的请求会收到失败,下一次初始化会使用新 Worker,避免把失效实例继续用于浏览器 CAD 重算。新增 Facade 测试覆盖崩溃→重建→重试路径,当前 Worker provider 仍由配置显式启用,不能把 Node/fake Worker 合同测试当作真实浏览器 WASM 证据。 + +BYB-06 已更新为 `in_progress`,后续继续补 Shape ownership/reference ledger、长 Boolean 内存预算和真实 Chrome Worker 实例化;其他浏览器测试延期;BYB-07 三方 Boolean 黄金保持 pending。 + +## 21. 2026-08-03 Bitbybit Shape ownership metrics + +`GeometryCapabilities` 现在公开 `shapeCount`、`kernelReferenceCount`、`releasedShapeCount`、`peakShapeCount` 和 `peakKernelReferenceCount`。`BitbybitGeometryRuntime` 在 Shape 注册、引用计数递减、最后一个 Shape 释放、初始化失败和 dispose 时同步这些指标;它们只描述当前 Facade 进程内的 ownership ledger,不等同于 WASM allocator 的字节级统计。真实浏览器长 Boolean 压力测试需继续把这些指标与 Worker/WASM memory telemetry 对照。 + +Bitbybit 主 OCCT WASM 已确认编译完成并由 `./npmw run check:baseline` 校验:`node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.a4a6ec2a.wasm`,SHA-256 为 `1b6a8fc7b83d222854f73b66af8d0e45ad4fdee025904b447e885d4e18ae8656`。兼容矩阵现在将其标为 `compiled-artifact-verified`;`missingBuildInputs` 仅表示无法从当前 Bitbybit 源快照独立重建该产物,不再表示浏览器 WASM 不存在。 + +## 22. 2026-08-03 P02 三端与三方门禁收口 + +- `BROWSER-OCCT-01` 已完成:Chrome 真实加载 JS/WASM Worker,COOP/COEP 隔离、OPFS 写读删、初始化、42 条 history、取消恢复、Worker 重启恢复通过。 +- `MEM-OCCT-01` 已完成:Chrome 运行 1000 次 Boolean,WASM 堆初始/峰值/结束均为 128 MiB(峰值预算 256 MiB、保留 0),浏览上下文由 `measureUserAgentSpecificMemory` 实测保留 469828 bytes(预算 64 MiB);3000 个 OCCT 句柄全部释放,Boolean Worker 未创建 GPU 资源且存活数为 0。静态门禁:`./npmw run check:browser-occt`。其他浏览器测试延期至全部任务完成并收到明确通知。 +- `BYB-03`、`BYB-05`、`BYB-06` 已完成;`BYB-07` 已完成 26 个 Boolean 三方场景,报告为 `config/freecad-bitbybit-native-threeway.json`,门禁为 `./npmw run check:freecad:threeway`。 +- `BYB-08` 已完成:`config/occt-upstream-drift-baseline.json` 锁定 Bitbybit 包/源码/WASM、5 个关键声明接口、原生 OCCT JS/WASM,以及 100 场景 manifest 和 26 场景三方报告 hash;`./npmw run check:occt-upstream-drift` 已纳入统一 `verify`。P02 的 7 个任务现已全部关闭。 +- `TSN-04` 已完成第一版真实内核闭环:Bitbybit Worker 使用 `BRepGraphFaceInfo`/`BRepGraphEdgeInfo`、`GetFaceSurfaceType` 和 B-Rep 面积/长度属性生成解析面/曲线签名,参数范围按方向归一化;Chrome harness 实测 Box 为 6 面、12 边、8 点,解析面/边全覆盖,未使用三角化索引。 + +## 23. OPFS 文件系统约束 + +Web FreeCAD 的持久化主路径是 OPFS。SQLite/OPFS worker、内容寻址资源、FCStd/BRep/Shape 资源、迁移、配额预检、孤儿清扫和崩溃恢复必须按 OPFS 语义验收;`sqlite-memory` 仅允许作为 OPFS/Worker 不可用时的瞬时降级,并且必须报告数据不持久化原因。后续 FCStd 双向 round-trip、资源引用计数、迁移回滚和插件数据隔离均不得绕过该约束。 + +## 24. 2026-08-03 TSN-05/06/09/10 增量收口 + +拓扑迁移现在使用 OCCT 解析邻接图计算置信度:面邻接/面-边、边-面/边-点、点-边均以持久 ID 保存,当前候选通过稳定映射后再计算交集;邻接冲突低于阈值会明确变为 `ambiguous`,不会静默绑定。对象拓扑快照和克隆路径会复制邻接图,OPFS 保存/加载不再丢失迁移证据。 + +Facade 新增子形选择与预选合同,只接受当前对象拓扑中的 `persistentId`,拒绝不存在、删除或瞬时索引;选择状态不写入文档。`runTopologyMutationReplay` 使用固定种子运行 100 个模型、1000 次变异(刚体重排、参数变化、拆分、删除、乱序),错误绑定审计为 0,报告已纳入 Facade 测试和统一 verify。TSN-05 与 TSN-06 已按专项证据关闭,TSN-09/TSN-10 等待其上游迁移/布尔历史任务完成后关闭。 + +签名历史回退现在收集关联对象的全部输入条目(Base、Tool、Profile 等),多输入结果使用 `sourceObjectId` 与持久 ID 记录来源,Pattern/跨 Body 不再退化为只比较当前对象自身;原生 OCCT Boolean 历史仍优先使用独立 Worker 结果。 + +Chrome 拓扑 harness 现将完整邻接图和持久 ID 写入 OPFS 临时文件、读回并删除;`opfsTopologyRoundTrip: true` 已成为 `check:chrome-topology` 的强制条件。 + +`validateTopologySnapshotForPersistence` 已接入项目保存边界,检查拓扑持久 ID 唯一性、邻接来源/目标完整性,并拒绝瞬时索引命名;这使 SQLite/OPFS 写入在数据进入 Worker 前就失败,而不是把不可迁移引用写入项目。 + +原生 OCCT history 响应现在校验关系记录与 `hasModified/hasGenerated/hasDeleted` 摘要标志的一致性;缺少对应标志的记录会在 Facade 边界失败,避免把不完整的 Worker 历史当成可靠 lineage。 + +## 25. 2026-08-03 CORE-10/11 attachment 增量 + +新增 `src/facade/attachment.ts`,定义 `Support`、`MapMode`、`AttachmentOffset` 的类型和验证边界,并以四元数合成支持放置与局部偏移,轴角结果做确定性数值归一化。Sketch 对象现在暴露 `MapMode` 和 `AttachmentOffset` 属性;所有变更仍经 Facade 历史、版本和持久化边界。 + +新增测试覆盖平面/面支持标识、非法 MapMode、非法偏移、绕 Z 轴的局部坐标链和 Sketch 属性事务。Support 现在也可使用 `{objectId, subElement}` 结构化值,依赖图会记录支持对象。86 个 Facade 测试、拓扑回放(100 模型/1000 变异/错误绑定 0)、Chrome OCCT/OPFS、三方 Boolean、构建和统一 `./npmw run verify` 均通过。TSN-07 至 TSN-10 已按可执行证据关闭;CORE-09/10/11 继续保留进行中,待拓扑迁移驱动的真实 Support 绑定完成。 + +Support 的 `subElement` 现在可直接携带持久化 TopoRef。`migrateDocumentTopologyReferences` 会对该引用执行稳定、歧义和删除迁移,`resolveDocumentTopologyReference` 支持候选修复,依赖图按 `topo-ref` 记录其来源。新增测试覆盖 generation 更新、候选修复和源面删除。 + +## 26. 2026-08-03 CORE-09 Body Tip 生命周期 + +新增 `src/facade/bodyRules.ts`,按 Body 子树顺序选择最后一个未抑制、未上游抑制且可产出实体的特征作为 Tip;同步和异步重算都会应用该规则。抑制末端 Fillet 后 Tip 回退到 Pocket,恢复后重新指向 Fillet;依赖闭包同时按更新后的 Tip 链收敛,避免保留过期 Body→Tip 边。 + +新增 Body 生命周期测试后 Facade 测试数为 86。统一 verify 通过,执行计划当前为 24 completed、18 in_progress、41 pending、0 blocked;Chrome OCCT stress 1000、OPFS topology round-trip、三方 Boolean 26 场景、拓扑回放 wrongBindings=0 均保持通过。 + +## 27. 2026-08-03 AttachmentOffset 重算链 + +重算器现在按支持对象 Placement、AttachmentOffset、对象自身 Placement 的顺序组合局部坐标,并保留 identity Placement 短路。Support + Offset 场景通过真实重算执行器验证,单次 OCCT placement 调用得到 `10,2,0`、Z 轴 90 度的确定性结果;CORE-10 与 CORE-11 已按迁移和重算证据关闭。 + +## 28. 2026-08-03 Sketcher Projection 与 CarbonCopy 合同 + +Sketcher Facade 现在提供 `projectGeometry` 和 `carbonCopy` 事务。Projection 会克隆源几何并强制标记为 construction;CarbonCopy 为指定几何生成带前缀的独立副本,同时拒绝与已有几何或同一批次新几何冲突的 ID。两条路径均经过版本、历史、脏状态和持久化边界,并保留原始约束/外部几何快照语义。 + +新增测试覆盖 Projection 的 construction 标志、CarbonCopy 的确定性 ID、缺失源几何和重复 ID 拒绝;Facade 测试在本轮前为 86/86。SK-08 继续保持 `in_progress`:当前已完成支持引用迁移、外部几何和几何级 Projection/CarbonCopy 合同,仍需真实 OCCT 面投影、完整约束求解和交互编辑器证据后关闭。 + +## 29. 2026-08-03 Sketcher 参考尺寸与冗余诊断 + +`SketchConstraint.driving=false` 现在表示参考尺寸:求解器不会修改几何,也不会把该约束计入残差和 DOF rank;默认值仍是 driving,保持既有约束行为。相同 driving 约束通过规范化签名识别并输出 `REDUNDANT_CONSTRAINT`,诊断不会阻断可收敛求解。新增测试覆盖参考尺寸只读语义、DOF 保持和重复约束诊断,Facade 测试更新为 87/87。 + +SK-07 已从 `pending` 转为 `in_progress`。当前执行计划计数为 24 completed、19 in_progress、40 pending、0 blocked;FreeCAD fixture 对照、完整 redundant/conflicting 分类和 planegcs WASM 仍是后续验收项。 + +## 30. 2026-08-03 Sketcher profile 与标准约束增量 + +新增 `classifyPlanarProfile`,以任意平面主轴投影区分 closed、open、multi-ring、self-intersecting、invalid-nesting、degenerate 和 non-planar。Pad、Pocket、Revolution 共用的 `validatePlanarProfile` 现在会在进入 OCCT 前拒绝显式开放、自交、孔越界、孔嵌套或穿越的轮廓;默认点列继续按隐式闭合处理。SK-11 仍保持 `in_progress`,等待 Sketch B-spline/完整编辑和 FreeCAD 对照 fixture 后关闭。 + +依据锁定 FreeCAD 1.1.1 `Sketcher/App/Constraint.h` 差分,TypeScript basic solver 新增 Parallel、Perpendicular 和 PointOnObject 的模型、复制、规范化签名、残差及求解路径,协议能力表同步公开三项能力。InternalAlignment、SnellsLaw 和 B-spline Weight 未被错误宣称支持,继续依赖 planegcs/高级曲线层。Facade 测试更新为 89/89。 + +## 31. 2026-08-03 Sketcher 500 模型压力门禁 + +新增 `runSketchStress` 和 `./npmw run test:sketcher-stress`,固定种子 `0x20260803` 生成 500 个模型、执行 1000 次求解。constraints、conflict、redundant、reference、drag 五类各 100;完整 Snapshot 双回放确定性差异为 0,意外状态为 0,摘要为 `1a35945d`,本机耗时约 14 ms,低于 2000 ms 门禁。该命令已纳入统一 `verify`。 + +SK-12 已从 `pending` 转为 `in_progress`,执行计划当前为 24 completed、20 in_progress、39 pending、0 blocked。当前 drag 类是求解前点位变异和 PointOnObject 收敛,不冒充完整 GUI 拖拽;SK-12 需在 SK-09、SK-11 和 FreeCAD/planegcs 黄金完成后关闭。 + +## 32. 2026-08-03 SK-03 planegcs WASM 收口 + +新增 `native/planegcs` 可复现构建,直接编译锁定 FreeCAD 提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d` 中的 `Geo.cpp`、`Constraints.cpp`、`SubSystem.cpp`、`qp_eq.cpp` 和 `GCS.cpp`。浏览器适配层只补齐 Console、TimeElapsed 和导出宏,未修改上游求解器。上游使用 `std::async`,因此产物启用两个 pthread,并把 COOP/COEP 与 SharedArrayBuffer 作为 Chrome 门禁前置条件。 + +JavaScript 产物为 125594 bytes,SHA-256 `04a7c687970ea24276e689114fba4d4f0a09dd1da578e4625185df2c234de3fb`;WASM 为 445615 bytes,SHA-256 `3680c1702cf033c67445105ab5f3a6e4a97a0783dcebf85874b87ef72c41e3cc`。Node smoke 与 Chrome 专用 Worker 都执行真实 `GCS::System::solve()` 和 `applySolution()`;Chrome 报告确认跨源隔离、SharedArrayBuffer、收敛状态 0 和残差 0。按用户约束未运行其他浏览器。 + +SK-03 已关闭,执行计划当前为 25 completed、20 in_progress、38 pending、0 blocked。现有 Embind 只承担原生产物和生命周期 smoke,不冒充完整 Sketcher 适配;SketchSnapshot 映射、取消/stale/崩溃恢复和完整约束面继续归 SK-04。 + +## 33. 2026-08-03 SK-04 Solver protocol 与 Worker lifecycle 收口 + +`PlanegcsWorkerProvider` 接入现有 `SketchSolverProvider` 合同,版本化校验 request/response 的 protocol、requestId、document、version 和 generation。Provider 在独立 Worker 中加载哈希固定的 Emscripten 产物,能力表明确声明当前只支持单线段、一个 driving Horizontal 和一个端点 Distance;Ellipse、B-spline、外部几何或其它约束会返回可诊断的 unsupported 错误,不会静默降级。 + +取消会终止当前 Worker、拒绝挂起请求并在下一次求解重新创建实例;Worker `error` 同样清空旧请求、标记 unavailable 并支持重新初始化。Facade 测试覆盖上下文校验、Embind vector 释放、取消/重建/崩溃恢复;Chrome 端到端报告覆盖 completed、cancelled、recovered 和 stale generation。SK-04 已关闭,执行计划当前为 26 completed、19 in_progress、38 pending、0 blocked。 + +## 34. 2026-08-03 SK-05 几何模型增量 + +Sketcher 模型边界新增 `validateSketchGeometry`、`validateSketchSnapshot` 和 `sketchGeometrySignature`。Ellipse 现在校验有限中心、正轴半径和主/次轴关系;B-spline 校验正整数 degree、控制点数量、正权重、非递减 knot 数组、周期曲线控制点下限;所有几何、约束和外部几何 ID 都拒绝空值与重复值。`cloneSketch`/`createSketch` 经过同一门禁,周期 B-spline 深拷贝和确定性签名回归通过,basic solver 仍明确返回高级曲线 unsupported。 + +SK-05 保持 `in_progress`:模型 round-trip 基础已增强,尚需完整 FreeCAD Ellipse/B-spline 编辑黄金、曲率连续性、权重/knots 交互编辑和 FCStd 编解码后才能关闭。 + +## 35. 2026-08-03 Sketcher 高级约束代理边界 + +模型合同现在显式保留 FreeCAD 的 `Weight`、`InternalAlignment` 和 `SnellsLaw` 约束字段、索引和值,并纳入规范化约束签名和数值校验。TypeScript basic solver 对三类约束返回 `UNSUPPORTED_CONSTRAINT` 诊断,既不丢弃约束,也不把代理结果伪装成求解成功;planegcs Worker 能力表同样不声明这些未绑定约束。 + +SK-06 继续 `in_progress`,下一步是对这些约束接入真实 planegcs geometry/constraint graph 与 FreeCAD 成功/失败 fixture。 + +## 36. 2026-08-03 Chrome OPFS SQLite persistence 证据 + +新增 `./npmw run test:chrome-persistence` 与 `check:chrome-persistence`。Chrome 在 COOP/COEP 隔离页面中真实启动 `persistenceWorker`,能力报告为 `mode: sqlite-opfs`、SQLite WASM true、OPFS true、schema v6;Document 版本 7 保存/加载、checkpoint、资源 hash 写读释放和 `PRAGMA integrity_check` recovery 均通过。 + +这条证据只关闭 OPFS 项目存储的浏览器运行条件,不提升 FC-04..FC-11:FreeCAD `Document.xml`/`GuiDocument.xml`、BRep/Shape 资源、Expression/Link/TopoRef 双向 round-trip 仍需独立实现和 FreeCAD oracle 对照。 + +## 37. 2026-08-03 FC-04 metadata archive vertical slice + +新增 `serializeFcstdMetadataArchive`:从 Facade `DocumentSnapshot` 生成受控 `Document.xml` 和 `GuiDocument.xml`,将属性按 XML 类型写入,并通过 opaque entry 机制保留未知/代理资源字节;保留路径冲突、路径穿越和 XML GuiDocument 根节点校验。生成结果立即经 `inspectFcstdArchive` 读回,对象类型、Label、未知资源路径和属性值回归通过。 + +该切片仍是 metadata-only:没有把 Shape/BRep、ViewProvider 状态、Expression/Link/TopoRef 或 FreeCAD 原生 feature serializer 偷换成字符串;FC-04 继续 `in_progress`,FC-05/06/07 依赖项保持原状态。 + +## 38. 2026-08-03 FC-07 opaque rewrite 收口 + +新增 `rewriteFcstdMetadataArchive`:在更新 `Document.xml`/`GuiDocument.xml` 时,先验证并解压原归档,再把所有其它条目作为 opaque bytes 原样带回新 ZIP。测试对二进制未知资源和脚本字节逐字节比较,并确认新 Label 可被再次解析;脚本仍只作为隔离 metadata,绝不执行。 + +FC-07 已关闭,执行计划当前为 27 completed、18 in_progress、38 pending、0 blocked。Shape/BRep、ViewProvider、Expression/Link/TopoRef 和原生 feature serializer 不在此任务范围,FC-04/05/06 仍未关闭。 + +## 39. 2026-08-04 FC-05 BRep resource extraction increment + +FCStd inspection 现在会为归档中的 `.brp`/`.brep` 条目建立稳定资源清单:记录归档路径、BRep 格式、字节长度、确定性内容指纹和空资源状态。`extractFcstdShapeResources` 通过 Facade `project.fcstd.extractShapes` 返回原始 `Uint8Array`,可直接交给后续 OPFS resource store 或原生 OCCT Shape reader;路径和归档大小门禁继续由统一 inspector 执行。 + +该增量只解决资源发现、身份和字节 round-trip,不宣称已经解析拓扑、质量属性或 ShapeHandle。FC-05 继续 `in_progress`,待原生 OCCT BRep reader、Shape/GuiDocument 关联及 FreeCAD oracle 对照完成后再关闭;执行计划为 27 completed、19 in_progress、37 pending、0 blocked。 + +## 40. 2026-08-04 FC-06 typed expression metadata increment + +FCStd metadata writer/reader 现在保留属性上的 `expression` 字段,并继续以受控 JSON 字符串保存 Link、LinkSub、LinkList 和 TopoRef 值;XML 属性名、类型和值均经过实体转义,未知资源仍由 FC-07 的 opaque store 原样保留。Facade 测试验证表达式写入后可被 inspector 读回。 + +这只是 FC-06 的 typed metadata 基础,不等同于 FreeCAD recompute 或完整引用迁移;真实 ExpressionEngine、Link/TopoRef 双向解析及可重算对象仍待后续原生 oracle 门禁。计划计数为 27 completed、19 in_progress、37 pending、0 blocked。 + +## 41. 2026-08-04 FC-06 proxy expression visibility + +FCStd 只读代理文档现在会将 inspection 中的表达式投影为 `Expression:` 只读属性。表达式仍不会在导入阶段执行,原始值可供后续引用迁移与安全审计使用;Facade 回归和生产构建均通过。 + +## 42. 2026-08-04 FC-05 OPFS resource media contract + +Shape/BRep 提取记录新增固定媒体类型 `application/x-freecad-brep`,因此可直接交给 OPFS `project.resource.put`,同时保留路径、长度、内容指纹和空资源状态。Facade 测试与生产构建通过;原生 Shape 解析仍未被冒充完成。 + +## 43. 2026-08-04 SK-08 Support 与 External Geometry 收口 + +Sketcher Support/Attachment、External Geometry、Projection/CarbonCopy 和上游 TopoRef 迁移已有完整 Facade 回归:支持面引用可迁移为 stable、ambiguous 或 deleted,External Geometry 依赖边可持久化,禁止自引用导入。SK-08 已从 `in_progress` 转为 `completed`;计划计数为 28 completed、18 in_progress、37 pending、0 blocked。 + +## 44. 2026-08-04 CORE-09 Body/Origin/Tip 收口 + +Body Tip 规则新增删除和重排回归:已删除对象不会保留为悬空 Tip,Body 子项重排后选择最后一个未抑制的单实体特征,Sketch 与非实体对象不会成为 Tip。既有测试同时覆盖 suppression、upstream suppression、undo/recompute 和 Origin plane 树。CORE-09 已完成;计划计数为 29 completed、17 in_progress、37 pending、0 blocked。 + +## 45. 2026-08-04 SK-05 Sketch geometry model 收口 + +Sketcher 几何模型已覆盖 Ellipse、非周期/周期 B-spline、construction 标记、控制点、权重、knots 和稳定 ID。深拷贝、确定性签名、重复 ID、非法轴/权重/knot 校验及 unsupported solver 边界均有回归;交互式 poles/knots 编辑继续属于 SK-10。SK-05 已完成,计划计数为 30 completed、16 in_progress、37 pending、0 blocked。 + +## 46. 2026-08-04 TSN-03 source-subshape explainability gate + +Native topology history 现在强制每个输入子形状都有可解释关系。Worker 未返回显式 Modified/Generated/Deleted 时,仅在输出中存在唯一同类型、同签名对象时自动归类 Preserved;无匹配或多匹配直接失败,禁止静默遗漏。TSN-03 继续 `in_progress`,还需把原生 history 从 Boolean 扩展到全部 PartDesign feature。 + +## 47. 2026-08-04 Native history operation safety gate + +原生 history 协议新增运行时操作白名单和 provider capability 复核。伪造的 pad/feature 操作不能进入双输入 Boolean STEP ABI,未声明操作会显式失败。PartDesign feature history 将使用独立参数协议,避免把单输入特征错误解释为 object/tool Boolean。 + +## 48. 2026-08-04 SK-10 B-spline atomic editing increment + +新增 `editBsplineGeometry`,可原子更新 poles、weights、knots、degree、periodic 和 construction,同时强制保留稳定 geometry ID。编辑结果复用统一 B-spline 校验,非法 degree、零/负权重和错误 knot 数组不会产生半更新状态。SK-10 已转为 `in_progress`;计划计数为 30 completed、17 in_progress、36 pending、0 blocked。 + +## 49. 2026-08-04 SK-09 transactional point drag increment + +新增 `dragSketchPoint`:按稳定 geometry/point 引用在克隆 Snapshot 上应用拖拽目标,然后重新执行 driving constraints,并返回完整求解状态和诊断。原 Snapshot 不会被修改,未知几何、非法点位和非有限目标会显式失败。SK-09 已转为 `in_progress`;计划计数为 30 completed、18 in_progress、35 pending、0 blocked。 + +## 50. 2026-08-04 SK-09 line split/extend increment + +交互编辑合同新增 line split 和 extend 事务。Split 保留原线 ID、为新段分配显式稳定 ID,并要求切点严格位于线段内部;Extend 要求目标共线且位于指定端点之外。两者都不修改原 Snapshot,约束迁移尚未指定时会明确拒绝受约束线,防止静默破坏引用。 + +Line trim 事务也已加入:只移动选定端点,目标必须严格位于原线内部且共线,原 Snapshot 保持不变。SK-09 当前已覆盖 drag、split、extend、trim;剩余 autoconstraint 与键盘/指针回放后再关闭。 + +Autoconstraint 已加入确定性建议与确认事务:按 tolerance 识别 horizontal、vertical 和 endpoint coincident,稳定排序候选并去重已有约束;确认阶段验证 suggestion/constraint ID、签名和重复项,再原子写入克隆 Snapshot。SK-09 现在只剩键盘/指针事件回放与 FreeCAD oracle 对照。 + +新增 `replaySketchEditorEvents`,覆盖 drag、split、extend、trim、autoconstraint 以及 undo/redo 历史;相同初始 Snapshot 和事件序列产生相同 geometry signature,回放过程不修改输入。SK-09 的实现面已完成,仍需真实 GUI pointer/keyboard oracle 对照后才能关闭。 + +新增 `deleteSketchGeometry` 与 replay `delete` 事件。删除前检查 constraint 和 External Geometry 引用;任何潜在悬空引用都会拒绝操作,安全删除返回新的 Snapshot。Facade 测试现为 105 项。 + +新增 `setSketchConstruction` 与 replay `construction` 事件,支持 construction 几何状态的事务切换,并纳入 undo/redo。Facade 测试现为 106 项;SK-09 仍待真实 GUI pointer/keyboard oracle 对照。 + +## 51. 2026-08-04 P5 Groove geometry increment + +PartDesign Groove 已接入 Facade geometry contract:以 Bitbybit OCCT 将 profile 绕轴生成 revolved tool,再对 Base 执行 difference;Recompute Engine 支持 `PartDesign::Groove` 的 Profile、Base、Angle 和 axis 参数,缺少 Groove runtime 时显式诊断。该增量不宣称完整 Groove 模式、反向轴和 FreeCAD oracle 已完成,PART-ALL/PD-BASE 继续进行中。 + +Groove 现在也进入 Facade PartDesign command/task 流程,提交对象、Base/Profile/Angle 属性、Body Tip 更新和后续 pattern 链接均有回归。完整 FreeCAD Groove 模式仍未关闭。 + +新增 `validateGrooveInput`,在进入 Bitbybit Worker 前校验 Base 的 document/version ownership、Profile、axis 和 angle;跨文档 Shape、零轴和非法 profile 现在在 Facade 边界明确失败。 + +## 52. 2026-08-04 FCStd Shape-to-OPFS resource bridge + +新增 `storeFcstdShapeResources` 和 `project.fcstd.storeShapes`:FCStd inspector 先执行归档/路径/大小门禁,再把非空 BRep payload 通过现有 OPFS `project.resource.put` 写入,返回原始 FCStd 路径、媒体类型、内容指纹和 resource hash 映射;空 `.brep` 不会占用资源引用。Facade 回归验证了字节、媒体类型和资源边界。 + +## 53. 2026-08-04 FC-06 typed property decode increment + +新增 `decodeFcstdPropertyValue`:按 FreeCAD 属性类型恢复数字、布尔和 Link/LinkSub/LinkList/Vector/Placement/MultiTransform JSON 值;表达式只作为 metadata 保留,不会执行。JSON 或标量解析失败返回 `decoded:false` 与诊断文本,原始字符串不丢失。 + +## 54. 2026-08-04 FC-04 GuiDocument inspection increment + +FCStd inspection 现在解析 `GuiDocument.xml` 的存在性、SchemaVersion、`View` 节点数量和稳定 XML 指纹;缺失 GuiDocument 会明确报告 `present:false`,DOCTYPE/ENTITY 仍被拒绝。视图内容保持只读 metadata,不执行 ViewProvider 或脚本。 + +GuiDocument inspection 进一步提取按归档顺序排列的 View name、type 和 visibility 条目,供视图差异与 round-trip 报告使用;未知 ViewProvider 字段继续由原 XML opaque preservation 保留。 + +GuiDocument writer 新增结构化 `guiViews` 选项,受控生成 name/type/visibility View XML 并可被 inspector 双向读回;原始 `guiDocumentXml` 与 `guiViews` 互斥,空 view name 明确失败。Facade 测试现为 110 项。 + +Object extension inventory 已加入 FCStd inspector:从 declaration 和 ObjectData 收集 Extension type/name,按归档顺序去重,但不实例化未知 extension。Facade 测试现为 111 项;extension 原 XML 仍由 opaque rewrite 保留。 + +FCStd XML 入口现在强制 `Document.xml` 和 `GuiDocument.xml` 使用各自标准根节点,移除任意根节点 fallback;损坏归档会在对象/View 映射前失败,避免被误判为合法空文档。DOCTYPE/ENTITY 禁令及 opaque resource 保留合同不变。 + +## 55. 2026-08-04 FCStd typed XML writer increment + +FCStd writer 不再把所有属性统一写成 ``:Length、Angle、Bool、Float、Integer、Percent、Link、LinkSub、LinkList、Vector、Placement 和 MultiTransform 使用对应 typed XML 元素;type 属性、值和 expression 同时保留,reader 继续兼容旧 String 归档。 + +## 56. 2026-08-04 FC-08 Bitbybit exchange import boundary + +Bitbybit OCCT Worker 新增 `plugins.io.importShape`,支持 STEP、IGES、BREP 文本通过 `ReadSTEPFromString`、`ReadIGESFromString`、`ReadBREPFromString` 实例化 Shape,并由 Facade `geometry.importShape` 注册 document/version-owned ShapeHandle。空 payload、未知格式和非法 document context 在 Worker 前明确拒绝;单位/颜色/容差和 100-model golden 仍属于 FC-08 后续验收。 + +## 57. 2026-08-04 FC-11 exchange payload memory gate + +`geometry.importShape` 增加 `MAX_GEOMETRY_IMPORT_TEXT_BYTES = 128 MiB` 门禁,以 UTF-8 字节数检查 STEP/IGES/BREP payload;超限内容在 Worker 前明确失败,避免大文件直接进入 OCCT。流式读取、取消和完整大文件恢复仍属于 FC-11 后续验收。 + +新增 `collectGeometryImportText` 异步 UTF-8 chunk 收集器:逐块检查 AbortSignal、累计字节上限并拒绝非法编码,只有完整非空文本才进入 import boundary。Facade 测试覆盖 split UTF-8、超限、取消和 invalid encoding。 + +## 58. 2026-08-04 QA-03 Chrome 应用 E2E 与视觉基线增量 + +新增真实生产构建的 Chrome CDP E2E,不引入其他浏览器:覆盖 start-to-workspace、Workbench 切换、Create Sketch command 和 bottom drawer 交互;桌面 1440x1000 检查面板分隔、控件文本溢出、页面横向溢出、Bitbybit OCCT canvas 来源及逐帧 WebGL 像素,移动 390x844 检查标题、主操作和横向溢出。Chrome 控制台、运行时异常和 Log error 均为硬失败。 + +桌面/移动 PNG 基线保存于 `fixtures/chrome-app-e2e/`,SHA-256、尺寸和字节数写入 `config/chrome-app-e2e-verification.json`,`check:chrome-app-e2e` 已接入整套 `verify`。当前证据为 Chrome 150、OPFS `sqlite-opfs`、canvas 736x664/20 色、页面异常 0;QA-03 从 `pending` 转为 `in_progress`,待 import/export、FCStd、保存/恢复和完整参数化工作流视觉对照后关闭。计划计数为 30 completed、19 in_progress、34 pending、0 blocked。 + +Chrome E2E 随后扩展到任务取消、等待真实 OPFS save completion、Project Manager 列表和重新打开,以及 Export 页 STEP/STL/IGES capability state 与 STL 选择;保存成功 toast 已从按钮即时反馈移动到 persistence Promise 完成回调,避免先报成功后报失败。 + +## 59. 2026-08-04 FC-11 XML 结构门禁与 QA-04 parser fuzz + +FCStd inspector 现在使用严格 XML validation,并显式限制 128 层嵌套和 250000 XML 节点;限额可通过 `FcstdArchiveLimits` 下调测试。Document/ObjectData 中的对象 name 必须非空且唯一,writer 也拒绝空或重复对象 ID,阻止损坏归档覆盖映射身份。 + +新增固定种子 `0x5f3759df` 的 1000-case FCStd parser fuzz,覆盖合法空文档、proxy、opaque resource、畸形 closing tag、错误根、重复/空 ID、深度/节点超限、实体声明、非法 UTF-8、错误 GuiDocument 根和 traversal path;每项必须得到预期 accept/reject,拒绝必须抛出 `Error`,p95 预算为 50 ms。`test:fcstd-fuzz` 已接入 `verify`,QA-04 从 `pending` 转为 `in_progress`;geometry/solver fuzz 尚未完成。计划计数为 30 completed、20 in_progress、33 pending、0 blocked。 + +QA-04 geometry input fuzz 新增固定种子 `0x9e3779b9` 的 2000-case 门禁,覆盖 primitive、placement、mirror、Boolean、fillet/chamfer、Pad/Pocket、Revolution/Groove 和 STEP import 的合法及恶意边界。全部样本只经统一 Facade validator 分流,合法输入不被误拒,非法有限数、轴、Shape ownership/version、基数、边索引、profile 和格式不进入 Bitbybit Worker;p95 预算为 10 ms。 + +QA-04 solver fuzz 新增固定种子 `0xa5a5f00d` 的 2000-model/4000-solve 门禁,覆盖 horizontal、parallel、tangent、reference dimension、unknown geometry/point、非法 dimension、重复约束、block conflict 和 unsupported B-spline weight。双回放必须完全确定,输入 Snapshot 不可变,status/diagnostic/iteration/residual 不变量和 10 ms p95 预算均为硬门禁。QA-04 的 parser、geometry input 和 solver graph 子项已有连续证据;真实 OCCT operation mutation 与 native planegcs 随机大图仍待后续关闭。 + +## 60. 2026-08-04 P5 Bitbybit Loft 增量 + +同一轮 P5 继续补齐独立 `Part::Extrude` 与 `Part::Revolution`:两者分别调用 Facade 的 `geometry.extrude` 和 `geometry.revolution`,不再把 Part 对象误判成 PartDesign 特征。Extrude 读取 `Base/Dir/LengthFwd/Reversed/Symmetric`,Revolution 读取 `Source/Base/Axis/Angle`,并继续应用对象 Placement。Bitbybit 1.1.1 尚未暴露 Part shell、taper、DirLink/AxisLink 的等价语义;`LengthRev` 与对称 Revolution 已在后续组合增量中由两个方向明确的 Shape 加 Boolean Union 实现。PART-ALL/PD-BASE 继续进行中。 + +Part 工作台 manifest、命令状态和任务提交链已同步接入这两个独立对象:仅在选择 Sketcher profile 时启用,任务属性分别生成 FreeCAD 风格 `Base/Dir/LengthFwd` 与 `Source/Base/Axis/Angle`,对象位于文档顶层且不会改写 PartDesign Body Tip。Facade 回归验证类型、属性、DAG 依赖和树归属;GUI command inventory、Facade boundary、118 项 Facade 测试及生产构建通过。 + +Facade 新增严格 `LoftInput` 合同与 Bitbybit 1.1.1 `occt.operations.loft` 执行路径。简单 Loft 要求至少两个闭合、无孔 section;`standalone`、`additive`、`subtractive` 分别映射 Part Loft、与 Base union、从 Base difference,Shape ownership/version 在进入 Worker 前校验。几何 fuzz 已加入独立/加料合法样本及 section 数量、孔边界恶意样本。 + +Recompute Engine 支持 `Part::Loft`、`PartDesign::AdditiveLoft`、`PartDesign::SubtractiveLoft`,兼容完整 `Sections` 与 `Profile + Sections` 链接形式,并将各 Sketch 的 Placement/Attachment 变换应用到截面坐标。回归覆盖三种模式、重复/缺失链接、Base 缺失和 Bitbybit Loft 失败后保留上一版有效 Shape。`PD-LOFT` 从 `pending` 转为 `in_progress`;transition、带孔高级 Loft 和 FreeCAD oracle 对照仍未完成。计划计数为 30 completed、21 in_progress、32 pending、0 blocked。 + +Pipe 子路径同样只使用 Bitbybit:开放 Sketch line chain 经规范方向和 Placement/Attachment 变换后,由 `createPolylineWire` 构造 Spine,闭合 profile face 交给 `occt.operations.pipe`;`Part::Sweep`、`PartDesign::AdditivePipe`、`PartDesign::SubtractivePipe` 分别映射独立、union 和 difference 模式。路径断开、分叉、连续重复点、多 profile transition 和 Base 缺失都会显式失败;三模式及失败保留 last-valid Shape 已有 Facade 回归,合法/恶意 Pipe 输入也纳入固定种子 geometry fuzz。 + +Chrome 150 内核门禁 `test:chrome-geometry-features` 现在真实执行 5 个 Bitbybit 操作:普通 Loft、Ruled Loft、Additive Loft、Subtractive Loft 和规则多边形 Pipe。每个结果都经过 Bitbybit mesh 非空检查;7 个 Facade-owned ShapeHandle 的 `shapeCount/kernelReferenceCount` 从 7/7 释放到 0/0,页面异常为 0。由于 Bitbybit 1.1.1 reserved deletion 对 operation 临时指针会破坏输入缓存,运行时不主动删除这些 operation input,依赖 Worker cache sweep 和 Facade handle release;这不是已完成的长时内核内存门禁,需后续补版本兼容的 worker cache 生命周期证据。 + +同一 Chrome 150 门禁已扩展到独立 Extrude/Revolution 以及稳定选边 Fillet/Chamfer,共真实执行 9 个 Bitbybit 操作;结果 mesh 均非空,13 个 Facade ShapeHandle 与 12 个 kernel reference 在释放后均为 0,页面异常为 0。Fillet/Chamfer 重算会把单个或多个稳定 TopoRef 解析到当前 edge index;缺失、歧义、删除和遗留瞬时边名均产生硬诊断,`UseAllEdges` 保持显式全边模式。 + +## 61. 2026-08-04 FCStd native property XML increment + +`App::PropertyLinkSub` 已支持同一对象的多 sub-element,并使用 FreeCAD 原生 `LinkSub value/count + Sub` 子节点;迁移与候选修复可定位单个稳定 TopoRef,依赖图按每项引用收集,OPFS 保存/恢复保持完整结构。`App::PropertyLink`、`LinkList`、`Vector` 和 `Placement` 也改用对应原生 XML 节点和属性,reader 继续兼容旧 JSON/string 编码;count、有限数、零轴和零四元数均有显式失败。上述增量推进 FC-04/FC-06,但尚未满足完整 FreeCAD 可重算 round-trip 验收。 + +## 62. 2026-08-04 P5 Part/PartDesign task workflow increment + +Part 工作台的 `Part::Fillet`/`Part::Chamfer` 已接入稳定 edge 选择:命令状态拒绝无 edge、歧义或删除选择,任务提交保存版本化 `TopoRef`,重算复用 Bitbybit fillet/chamfer 并把当前 edge persistentId 映射为 kernel index;Part 对象保持文档顶层且不改写 Body Tip。Part 工作台的 `Part::Loft`/`Part::Sweep` 和 PartDesign 的 `Additive/SubtractiveLoft/Pipe` 也已接入任务工厂,分别保存 `Sections` 或 `Profile/Sections/Spine/Base`,提交前校验 section 数量、唯一性、Sketch 类型和 profile/path 分离。LinkList 依赖图现在按每个链接建立 DAG 边,保证 Loft 多截面变更会传播到重算闭包。 + +Facade 命令回归达到 120/120,覆盖无效任务拒绝、Part 顶层归属、PartDesign Tip 顺序、Base 依赖和 Bitbybit 执行分发。Chrome 150 应用门禁新增真实 PartDesign Loft section 控件:`sqlite-opfs` 持久化、Bitbybit WebGL canvas、桌面/移动布局和页面异常均通过;section 列表控件和右侧任务面板横向溢出均为 0。多截面实际几何提交与 transition/advanced Pipe 的 FreeCAD oracle 对照仍属于 PD-LOFT/PART-ALL 后续验收。 +## 63. 2026-08-04 PD-DRESSUP Draft/Thickness increment + +PartDesign Draft 与 Thickness 已接入 Facade 类型合同、Bitbybit OCCT Worker 和 Recompute Engine。Draft 使用 `occt.draft.draftAngle`,将当前 Base 面的稳定 TopoRef 解析为 kernel face index,并传递 Angle、Direction、NeutralPlaneOrigin、NeutralPlaneDirection 和 Reversed;无拓扑、遗留瞬时面名、歧义/删除/缺失面都会产生硬诊断。 + +Thickness 不再把封闭 solid 直接交给 `makeThickSolidSimple` 后假设成功。FreeCAD 风格 `RemoveFaces` 现在必须是当前 Base 上的稳定面 TopoRef,重算把它解析为面 index 并调用 Bitbybit `operations.makeThickSolidByJoin`;Arc/Intersection 两种 join 明确映射,未知模式直接拒绝。没有移除面的 Thickness 任务在命令状态层禁用,避免生成不可重算对象。 + +命令任务已注册 Draft/Thickness 的 Angle/Value 属性、稳定面前置条件和 Body Tip 更新;Thickness 的 Base solid 仍为普通 Link,RemoveFaces 保留原生 LinkSub。Facade 回归现为 122/122,覆盖 validator、稳定 face 解析、Bitbybit 调用参数、缺失面/非法 join 诊断和命令任务属性。Chrome 150 几何门禁现在真实执行 11 个操作(含 `draft-selected-face` 与 `thickness`),所有 mesh 非空,17 个 ShapeHandle/15 个 kernel reference 在释放后回到 0/0,页面异常为 0。计划计数保持 30 completed、21 in_progress、32 pending、0 blocked;PD-DRESSUP 的完整 FreeCAD oracle、高级 Thickness 参数及跨版本兼容仍未宣称完成。 + +## 64. 2026-08-04 PD-BASE parameter safety increment + +Pad/Pocket/Revolution/Groove 重算现在对 Bitbybit 不等价的 FreeCAD 参数显式设门:Pad/Pocket 的 Through-all/Up-to-face 与 taper 仍返回稳定诊断,不再静默忽略。可由基元精确组合的双向语义已关闭该缺口的一部分:Part `Extrude.LengthRev` 使用两次反向 `geometry.extrude` 后 `union`,Part `Revolution.Symmetric` 使用正反轴半角 `geometry.revolution` 后 `union`,PartDesign Pad/Pocket 支持 `SideType=Two sides` 及旧 `?TwoLengths`,Pocket 两侧依次 Boolean Cut;PartDesign Revolution/Groove 的 `Midplane` 和 `Two angles/Angle2` 现在分别执行正反轴两次 Revolution/Groove,Revolution 结果 Fuse,Groove 在同一 Base 上顺序 Cut;每个临时 Shape 都在组合边界释放。To-last/To-first/Up-to-face、taper 和缺少支持面的模式仍硬诊断。新增属性模板覆盖这些参数,便于编辑、表达式和 FCStd typed XML 保持同一数据模型。Facade 回归和构建通过;PD-BASE 仍需完整 To-face、taper 等 FreeCAD oracle 等价实现后才能关闭。 + +## 65. 2026-08-04 P5 Hole 原生语义组合增量 + +参考 FreeCAD `PartDesign::Hole` 的属性清册,Hole 不再固定原点和 +Z 法向。Facade 现在保存 `Position`、`Direction`、`Reversed`、`Type`、`Diameter` 和 `Depth`,并将位置/方向写入圆形切削 Profile 与 Bitbybit Pocket。`Dimension`/`Through all` 仍由统一 Pocket 合同执行,零方向、非法尺寸和未知孔深类型在 Worker 前产生硬诊断。 + +Bitbybit 1.1.1 没有名为 Hole 的高阶操作,但它提供圆柱、圆锥和 Boolean Cut;因此 FreeCAD 的 `HoleCutType=Counterbore/Countersink` 被拆解为主圆柱孔加二次圆柱/圆锥刀具,`DrillPoint=Angled` 和 `Tapered/TaperedAngle` 也由底部/全长圆锥刀具组合。所有 Shape 仍由 Bitbybit OCCT Worker 创建和切除。锥度已按 FreeCAD 的 90 度直孔语义实现,小于/大于 90 度分别缩小/扩大孔底;`DrillForDepth=true` 会联立锥度和钻尖高度,缩短圆柱段,使声明 Depth 包含钻尖总深度。尺寸过短、非正孔底半径和退化角度在创建 Worker Shape 前硬失败。 + +任务面板已暴露孔位置、方向、反向、切削类型、锥度、钻尖深度模式和尺寸;Facade 回归现为 124 项通过,并新增 Counterbore、Countersink、Counterdrill、方向/位置、Tapered、DrillForDepth 和螺纹硬诊断覆盖。Chrome 150 几何门禁现在包含上述 Hole 组合及双向 Extrude/Revolution/Pad/Pocket 组合,共 21 个操作的 mesh 均非空,53 个 ShapeHandle/41 个 kernel reference 在释放后回到 0/0,页面异常为 0。该增量关闭的是可由 Bitbybit 组合表达的 Hole 子集,不宣称 FreeCAD 的 Threaded/ModelThread、标准尺寸、Support/Profile 面定位和完整孔特征历史已完成。 + +## 66. 2026-08-04 P5 Pattern 原生模式增量 + +依据锁定的 FreeCAD `FeatureLinearPattern`/`FeaturePolarPattern` 源码,Linear Pattern 增加 `Mode=Extent/Spacing`、`Offset`、`Reversed` 和第二方向 `Direction2/Length2/Offset2/Occurrences2/Mode2/Reversed2`:Extent 按总 Length 在首末实例间分配,Spacing 按 Offset 作为每步距离,第二方向按笛卡尔实例序列组合并限制总实例不超过 100;Polar Pattern 增加 `Mode=Extent/Spacing`、`Offset` 和 `Reversed`:Extent 保持总 Angle 语义,Spacing 以 Offset 作为每步角度,360 度总范围按 FreeCAD 规则折分。未知 Mode、零/负长度或 spacing 会在重算前产生稳定硬诊断。 + +任务面板和属性模板已同步这些原生字段,现有 whole-shape Bitbybit placement/union 执行链保持不变,Linear/Polar 的反向轴、spacing 和第二方向回归覆盖;本节当时未覆盖的 SpacingPattern/Spacings 与 Originals 已在第 70 节补齐,稳定 LinkSub 轴线和局部特征历史仍未完成。计划计数仍保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 67. 2026-08-04 P5/P6 生命周期与 FCStd TypeId 增量 + +新增参数化生命周期回归:在 Facade 边界上执行创建/编辑、异步重算、Undo、保存、加载和再次重算,检查 Body.Tip、Sketch Support、dirty/recompute 状态和项目快照一致;Node 环境没有浏览器 Worker 时只验证文档语义,Chrome Worker 门禁继续负责真实 ShapeHandle 数量与释放计数。Facade 回归现为 124 项通过,PD-CLOSURE 仍保持 `pending`,直到 Chrome 端完整参数编辑回放和 FreeCAD oracle 对照补齐。 + +FCStd inspector 的 recognized TypeId 清单已覆盖当前 Facade 可执行的 Part 基础体/Boolean/Extrude/Revolution/Loft/Sweep/Fillet/Chamfer,以及 PartDesign Pad/Pocket/Revolution/Groove/Loft/Pipe/Dress-up/Pattern/Hole;未知第三方类型继续 proxy,FeaturePython 继续 blocked,脚本仍绝不执行。新增 vocabulary 回归确认 30 个已实现类型不会被误报成 proxy;这推进 FC-04/FC-06 的 metadata 映射,但没有宣称完整 FreeCAD 可编辑 round-trip。 + +## 68. 2026-08-04 FreeCAD 双向组合语义增量 + +依据 FreeCAD 1.1.1 `FeatureExtrude`/`FeaturePad`/`FeaturePocket` 的源码枚举,统一识别 `SideType=One side/Two sides/Symmetric`、`Type=Length` 及旧归档 `?TwoLengths`。两侧线性特征不再因为 Bitbybit 缺少高阶 TwoLengths 操作而失败:每侧各创建一个方向明确的 Bitbybit solid,随后使用同一 `unionOwnedShapes` 组合边界合并并释放输入;Pocket 则在同一 Base 上按方向顺序执行两次 Cut,释放中间结果。Part Extrude 的 `LengthRev` 和 Part Revolution 的 `Symmetric` 采用同一组合策略。 + +新增回归覆盖双向 Pad/Pocket、旧 TwoLengths 兼容、Part Extrude LengthRev、Part Revolution Symmetric 及临时 Shape 释放。Chrome 几何门禁仍只使用 Chrome,组合报告为 21 操作、53/41 到 0/0;计划计数不因实验切片虚增,仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 69. 2026-08-04 PartDesign Revolution/Groove 双向语义增量 + +参考 FreeCAD PartDesign Revolution/Groove 的 `Midplane`、`Two angles` 和 `Angle2` 属性,Recompute Engine 现在把对称模式拆为正反轴两个半角操作,把 Two angles 拆为 `Angle` 与 `Angle2` 两个方向的 Bitbybit Revolution;Groove 则在同一 Base 上顺序执行两个方向的 Bitbybit Groove Cut,并释放中间 Shape。`To last`、`To first`、`Up to face` 等依赖支持面的模式不再静默降级,统一返回硬诊断。 + +任务属性模板和任务面板已增加 Type、Reverse angle、Symmetric to plane;Facade 回归覆盖 Revolution 对称/双角/非法角度和 Groove 双角/对称/支持面诊断。Chrome 几何门禁新增真实 `revolution-two-angles` 操作,共 22 个操作的 mesh 均非空,56 个 ShapeHandle/44 个 kernel reference 在释放后回到 0/0,页面异常为 0。该增量仍不宣称 Pad/Pocket taper、To-face 和完整 Groove 支持面语义已完成。 + +## 70. 2026-08-04 P5 Pattern 原生 Spacing/Originals 增量 + +依据 FreeCAD 1.1.1 `FeatureLinearPattern` 与 `FeaturePolarPattern` 源码,Linear/Polar 的 `Spacings`、`SpacingPattern` 已按“显式单项 > 周期模式 > 全局 Offset”累加;Linear Extent、Polar 360 度 Extent 分别遵循 FreeCAD 的首末距离和避免重合末实例规则。`PropertyFloatList` 已加入 Facade 属性模型、编辑器和 FCStd 原生 `FloatList count + Float` XML;`PropertyStringList` 同步改为 `StringList count + String`,reader 继续兼容旧 JSON 编码。 + +PartDesign `Transformed.Originals` 现在可为 Mirrored、MultiTransform、LinearPattern、PolarPattern 提供多个原始 Shape,组合时只释放临时副本,不释放文档缓存 Shape。`TransformMode=Features` 在当前 whole-shape Bitbybit 组合边界返回 `TRANSFORM_MODE_UNSUPPORTED`,避免把局部特征历史伪装成全形状变换。Facade 回归增至 126 项通过;Chrome 150 几何门禁新增非均匀 Linear/Polar pattern,24 个操作 mesh 均非空,64 个 ShapeHandle/52 个 kernel reference 释放后为 0/0,pageErrors 为 0。 + +## 71. 2026-08-04 P6 FCStd 原生 Expression/LinkSubList 可加载增量 + +FCStd writer 不再把表达式写成普通 Property 的私有 `expression` 属性,而是生成 FreeCAD 原生 `App::PropertyExpressionEngine`,使用 `ExpressionEngine count + Expression path/expression` 映射;reader 将映射安全投影回目标属性,仍兼容旧 Web 归档,但拒绝错误 count、空路径和重复路径。`App::PropertyLinkSubList` 同步贯通 Facade 结构化值、深拷贝、属性验证、依赖 DAG、TopoRef 迁移/候选修复和原生 `LinkSubList count + Link obj/sub` XML,稳定 TopoRef 只写 persistentId,不写 mesh index。 + +反向桌面 oracle 首次发现并修复 writer 的容器级兼容缺口:`Document.xml` 的文档 Properties、Objects、ObjectData 和每个对象 Properties 现在写入 FreeCAD 所需的 Count/TransientCount,动态属性写入 group/doc/attr/ro/hide 元数据。锁定的 FreeCAD 1.1.1 已实际打开 Web writer 生成的 FCStd,并读回对象 `Pad,Body,Holder`、Length=12、Width=6、表达式 `Length = Width * 2`,以及 Pad 的 Face1/Edge3 和 Body 整对象链接;桌面端将 Width 改为 7 后 recompute 得到 Length=14,再保存的 FCStd 由 Web inspector 读回 Width=7、Length=14、原表达式和全部链接。Facade 回归现为 129/129,生产 TypeScript/Vite 构建通过。 + +该增量证明上述 typed property 子集已具备 Web -> FreeCAD 的原生可加载证据,不等同于 FC-06 完成:Sketcher 几何/约束 serializer、完整内置属性状态、Shape/BRep 质量/颜色、FreeCAD 重算后 Shape 对比及 FreeCAD -> Web -> FreeCAD 批量差异报告仍待完成。83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 72. 2026-08-04 FC-05 PropertyPartShape/BRep 双向资源增量 + +`Part::PropertyPartShape` 现在使用结构化 `ShapeResourceValue`,writer 生成 FreeCAD 原生 ``,并要求 `file` 是同一 FCStd 归档内的安全 `.brp/.brep` entry;绝对路径、路径穿越、非 BRep 扩展和悬空资源全部硬失败。reader 将 `Part` 指针解析为 shape resource,并在归档清单阶段校验对象属性不会指向缺失文件;Facade 属性编辑器显示资源路径但不执行外部文件。 + +锁定 FreeCAD 1.1.1 oracle 已读取 Web writer 生成的有效盒体 BRep:`Shape.isNull=False`、`isValid=True`、`1 solid`、`6 faces`、体积约 `24`。FreeCAD 回写后的 FCStd 再由 Web inspector 读回 `Box.Shape.brp`、8863 bytes 和 `ElementMap`,OPFS `storeShapes` 继续按内容寻址资源边界保存。Facade 回归升至 130/130,FCStd parser fuzz 1000/1000,生产构建通过。 + +该切片关闭的是 Shape 文件指针和资源引用安全边界,不宣称完成 OCCT Shape 重建、颜色/容差/质量属性、ElementMap 历史迁移或 100 模型 FCStd 质量黄金;FC-05/FC-08 继续进行中。计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 73. 2026-08-04 FC-05 BRep 浏览器实例化与质量属性增量 + +`project.fcstd.instantiateShape` 现在先经过 FCStd ZIP 路径、大小、压缩率、XML 和 `Part::PropertyPartShape` 引用门禁,再以 fatal UTF-8 解码归档内 `.brp/.brep` 文本,最后只调用 Bitbybit `geometry.importShape(format=brep)` 创建文档版本化 ShapeHandle。悬空路径、未被 Shape 属性引用的资源、空 payload、非法 UTF-8、预取消均不会进入 Worker;若导入完成时才收到取消,实例化器会先通过 Facade release 回收新 Handle 再返回 `AbortError`。 + +Bitbybit Worker 同步增加 `WriteBREPToString` 导出和 OCCT 质量属性查询,Facade 暴露 `geometry.exportBrep` 与 `geometry.massProperties`,没有增加第二套几何实现。Chrome 150 唯一浏览器门禁已实际创建 2x3x4 Box、导出 2573-byte BRep、写入 `Part/Box.Shape.brp`、经 FCStd 引用重建并检查 6 faces / 12 edges / 8 vertices;源与重建 Shape 的体积均为 24、表面积均为 52、质心逐分量一致。空资源、预取消、晚取消回收均通过,25 个报告操作涉及的 66 个 ShapeHandle / 54 个 kernel reference 最终释放为 0/0,pageErrors 为 0。 + +Facade 回归现为 131/131,生产构建通过。该增量补齐单模型浏览器 Shape 重建、拓扑和质量属性证据;FC-05 仍保持 `in_progress`,直到 GuiDocument 颜色/显示映射、容差报告、ElementMap 历史与 100 模型黄金完成。83 项计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 74. 2026-08-04 FC-04/FC-05 原生 GuiDocument 显示映射增量 + +锁定 FreeCAD 1.1.1 样例确认真实 `GuiDocument.xml` 根是 ``,显示对象存于 `ViewProviderData/ViewProvider/Properties`,而不是早期 Web 内部的 `` 结构。Inspector 现在同时兼容两个根:原生路径校验 `ViewProviderData Count`、ViewProvider/Properties Count、对象名唯一性、`Camera` 之外的 XML 节点和外部资源;旧 `` 仍只读保留,便于历史 Web 归档迁移。 + +writer 默认将 `scope=data` 留在 `Document.xml`,将 `scope=view` 分离写入原生 ViewProvider。它不再伪造 `Extensions` 属性(FreeCAD 看到该属性就会强制读取不存在的 Extensions 节点),并输出必需的空 Camera 节点;`Deviation/LineWidth/PointSize` 使用 FreeCAD 原生 `App::PropertyFloatConstraint` 类型。`ShapeColor` 按 FreeCAD 1.1.1 `PropertyMaterialList` Version 3 二进制布局生成 `WebShapeAppearanceN` 资源,保存 ambient/diffuse/specular/emissive、shininess、transparency 和 UTF-8 字段;reader 将首个 diffuse 作为 ShapeColor,并保留完整材质报告。 + +真实桌面 oracle 已用 `xvfb-run` 打开 Web writer 生成的 Part::Feature FCStd,无 `GuiDocument.xml` 读取错误;FreeCAD `ViewObject` 读回 Visibility=false、Transparency=35、LineColor=(0.0666667,0.1333333,0.2)、PointColor=(0.2666667,0.3333333,0.4)、ShapeColor=(0.3411765,0.6039216,0.6117647)、Deviation=0.2。FreeCAD resave 后的 `ShapeAppearance`、LineColorArray、PointColorArray 和完整 23 项 ViewProvider 又被 Web inspector 读回,颜色/材质逐项保持。 + +Facade 回归仍为 132/132,真实 `PartDesignExample.FCStd` 解析 17 个 ViewProvider、21 个 Shape 资源,生产构建通过。该增量关闭原生 GuiDocument 显示/颜色映射,不宣称完成 ElementMap2 历史迁移、容差批量差异和 100 模型 FCStd 黄金;FC-04/FC-05 继续 `in_progress`。83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 75. 2026-08-04 FC-05 ElementMap2 拓扑历史资源增量 + +FCStd `Part::PropertyPartShape` 现在保留原生 `` 指针,并将 `ShapeResourceValue.elementMapResource` 纳入 Facade 类型、writer、reader、BRep 实例化引用和安全校验。写出要求 `.Map.txt` 位于同一 FCStd ZIP 的 `opaqueEntries` 中;缺失、路径穿越、重复 ElementMap2、错误扩展名均在 ZIP 生成/解析前硬失败,避免拓扑历史退化为未声明附件。 + +Inspector 将 `.Map.txt` 标记为 `topology-map`,以 fatal UTF-8 读取 `BeginElementMap v1`/`EndMap` 帧,解析 `PostfixCount`、`MapCount` 以及 Edge/Face/Vertex 的 `NameCount`,并按字节长度和稳定 FNV 内容 hash 输出 `elementMapResources` 摘要。锁定的 `PartDesignExample.FCStd` 已通过真实样例读取:17 个对象、21 个 BRep、13 个被 Shape 属性引用的 ElementMap2,首个 Body map 报告 `PostfixCount=63`、`MapCount=2` 及 Edge/Face/Vertex 名称计数;浏览器仍只使用 Chrome/Bitbybit,未引入第二套几何实现。 + +Facade 回归升至 133/133,Chrome 150 几何门禁 25/25、ShapeHandle/kernel reference 释放后 0/0,生产构建和 `git diff --check` 通过。该切片完成的是 ElementMap2 文件指针与格式摘要边界,不宣称已把 FreeCAD 历史 token 重建为可编辑 TopoRef;FC-05/FC-06 的历史迁移、容差批量差异与 100 模型 FCStd 黄金继续 `in_progress`。83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 76. 2026-08-04 FC-05 原生 Shape/ElementMap 恢复链增量 + +进一步桌面对照发现,`Part + ElementMap2` 指针正确仍不足以保证 FreeCAD 恢复 Shape。writer 现完整保留 ``、`Part.HasherIndex` 和文档级 `StringHasher2 -> StringHasher.Table.txt`,并自动写出锁定的 `ProgramVersion`、稳定非零对象 id、`ObjectDeps`、`Touched`、`UseHasher` 与瞬态 `_ElementMapVersion`。reader 分别核对普通 Property `Count` 和 `_Property` `TransientCount`,同时暴露 StringHasher 表的 byteLength/contentHash/status;缺表、悬空映射和错误计数均硬失败。 + +FreeCAD 的 FCStd 嵌入资源按流顺序恢复,原先 `Document.xml -> GuiDocument.xml -> BRep` 会使 `PropertyPartShape` 得到 invalid Shape。writer 已固定为 `Document.xml -> StringHasher/BRep/ElementMap2 数据资源 -> GuiDocument.xml -> GUI 资源`,并要求原生 `.Shape.brp/.brep` basename 与对象名一致。对应回归直接检查 ZIP entry 顺序,不再只检查文件存在。 + +锁定 FreeCAD 1.1.1 已无读取警告打开 Web writer 生成的完整历史归档,`Body.Shape` 为非空有效 Shape、1 solid、23 faces、体积 `583719.3669394433`;桌面 resave 后 Web 又读回 `HasherIndex=0`、`ElementMap=1.15.70200.5`、`Dummy -> Dummy`、`Body.Shape.Map.txt` 的 PostfixCount=63/MapCount=2 和 StringHasher 表。Chrome 150 仍以 Bitbybit 为唯一几何入口,25 个操作、BRep 6/12/8 拓扑与质量属性通过,66/54 资源释放到 0/0;Facade 133/133、构建和 diff 门禁通过。 + +该增量完成原生 Shape/ElementMap 文件恢复链和双向保存证据,但尚未把 FreeCAD 历史字符串 token 映射成 Web TopoRef 候选,也未完成 100 模型 FCStd 批量质量/容差黄金;FC-05/FC-06 继续 `in_progress`,83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 77. 2026-08-04 FCStd 原生桌面 oracle 自动门禁 + +新增 `./npmw run test:freecad-fcstd-native`,把此前手工执行的 FreeCAD 1.1.1 验证固化为可重复门禁。脚本从锁定的 `PartDesignExample.FCStd` 取得 StringHasher、Body BRep 和 ElementMap2,使用 Web writer 重新组装 FCStd,经 `xvfb-run` 打开并保存,再由 Web inspector 读回。门禁拒绝 `Invalid Document.xml`、嵌入资源读取失败、重复内建属性等警告,并检查 Body 为有效非空 Shape、1 solid、23 faces、体积 `583719.3669394433`,回存后 HasherIndex、ElementMap、Dummy 映射、PostfixCount=63、MapCount=2 和 StringHasher 仍一致。桌面 oracle 配置已登记该命令,但便携的默认 `verify` 不强制存在本地 FreeCAD 安装缓存。 + +## 78. 2026-08-04 FC-04/FC-10 Part 参数化原生往返增量 + +FCStd writer 新增原生数据属性分类,Part::Box/Cylinder/Sphere/Cone 的尺寸/角度以及 Part::Fuse/Cut/Common 的 Base/Tool 不再带动态 `group/doc/attr/ro/hide` 元数据;Web 扩展属性仍明确按动态属性保存。Length/Angle/Float 统一使用 FreeCAD 原生 ``,Percent/Integer 使用 ``,String/Bool 使用对应原生节点,NaN、非安全整数和 0..100 外百分比在生成 ZIP 前硬失败。`ObjectDeps` 现在来自文档依赖图并拒绝悬空对象,不再固定写 Count=0。 + +数据侧 Enumeration 改为索引式 Integer;动态枚举写入 CustomEnumList,reader 校验 count 并恢复选项标签。锁定桌面 FreeCAD 已从同一个 Web FCStd 重算四基元和三 Boolean:Box/Cylinder/Sphere/Cone 体积与声明参数一致,Fuse/Cut/Common 分别得到 24/23/1 的体积,所有结果均为有效单 solid;动态 `WebMode=Manufacturing` 与 `WebProgress=35` 可读取。FreeCAD 保存回来后 Web 又恢复 8 个对象、所有 Base/Tool、枚举/百分比和 8 个可用 Shape 资源。Facade 回归现为 137/137,生产构建通过。该切片推进 FC-04/FC-10,但 PartDesign/Sketcher 的完整原生内建属性、100 模型批量报告仍未完成,因此计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 79. 2026-08-04 FC-06 Sketcher 原生 FCStd 往返增量 + +FCStd writer 现在从 `DocumentObjectSnapshot.sketch` 生成 FreeCAD 原生 `Part::PropertyGeometryList/GeometryList` 与 `Sketcher::PropertyConstraintList/ConstraintList`。几何覆盖 Point、LineSegment、Circle、ArcOfCircle、Ellipse 和 BSplineCurve,包含构造标志、B 样条 pole/weight/knot multiplicity 与确定性 native id;隐藏的 `WebGeometryIds` StringList 保留 Web 字符串 ID,FreeCAD 回存后可恢复约束引用。约束覆盖 Coincident、Horizontal、Vertical、Parallel、Tangent、Distance/DistanceX/DistanceY、Angle、Perpendicular、Radius、Equal、PointOnObject、Symmetric、Block 和 Diameter,引用尺寸通过 `IsDriving=0` 往返。 + +真实桌面门禁发现 FreeCAD 会在非尺寸约束被错误标记为 reference 时于 `updateNonDrivingConstraints()` 解引用空值并崩溃;writer 现拒绝该组合,只允许带 Value 的尺寸约束为 reference。reader 同时支持 FreeCAD 回存 Shape 使用的文档内联/声明式 StringHasher,不再错误要求所有 HasherIndex 都必须有外部 StringHasher2 文件;有效的外部 StringHasher2 缺失仍会硬失败。未知 FreeCAD Sketch 几何保留为 raw typed property 并不伪装成可编辑 Web Sketch。 + +锁定 FreeCAD 1.1.1 已打开 Web 生成的 Sketch,恢复并重算 10 个几何(含点、线、圆、圆弧、椭圆、B 样条)、10 个约束、1 个构造几何和 1 个 reference Radius;回存后 Web inspector 恢复全部 geometry/constraint ID 与构造状态。Facade 回归现为 138/138,生产构建通过。外部几何以及 Weight、SnellsLaw、InternalAlignment 尚未具备无损原生映射,writer 明确拒绝;因此 FC-06 仍保持 pending,83 项计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 80. 2026-08-04 FC-06 Sketcher ExternalGeo 原生往返增量 + +FCStd writer 现在为 Web Sketch 外部投影生成 FreeCAD 原生 `ExternalGeometry`(`App::PropertyLinkSubList`)、`ExternalTypes`(`App::PropertyIntegerList`)和 `ExternalGeo`(`Part::PropertyGeometryList`)。`ExternalGeo` 包含 FreeCAD 必需的 H/V 轴线、`SketchGeometryExtension`、`ExternalGeometryExtension Ref/Flags/RefIndex` 以及只读构造投影;native geometry id 与内部几何共享单调编号,避免恢复时被 FreeCAD 重编号。隐藏的 `WebExternalIds`、`WebExternalProjectionIds` 和 URI 编码 `WebExternalSources` 保留 Web 外部对象 ID、投影 ID 及完整 TopoRef topologyVersion/generation/signature/candidates。 + +当前无损写出边界只放行 `stable` 状态且指向同一文档已声明对象的原生 `EdgeN`/`VertexN`;Vertex 必须对应点投影,Edge 必须对应曲线投影。未声明对象、自引用、ambiguous/new/deleted、`FaceN`、Web 稳定 token 和非法版本全部在生成 ZIP 前硬失败。原因是 FreeCAD 面投影及部分复杂边可产生一对多几何,而现有 `SketchExternalGeometry` 是一对一模型;在扩展数据模型前不会伪装成无损支持。reader 校验 IntegerList/count、三组隐藏元数据完整性和 native link 一致性;FreeCAD 新拓扑命名或 defining/intersection 等当前模型不能表达的原生外部几何保留为 typed proxy,不阻断整个 FCStd 导入。 + +锁定 FreeCAD 1.1.1 已打开并重算 Web 生成的 `Part::Box + Sketch`:Sketch 保持 10 个内部几何、11 个约束,其中 `PointOnObject` 原生引用外部投影;`ExternalGeometry=1`、`ExternalTypes=[0]`、`ExternalGeo=3`(两轴加 `ExternalBox.Edge1` 投影)。桌面回存后 Web inspector 恢复 `external-box-edge`、`external-box-edge-projection` 和 topologyVersion=3/generation=2/signature 的完整 TopoRef。Facade 回归升至 139/139,FCStd parser fuzz 1000/1000、生产构建通过。 + +该增量关闭单一 Edge/Vertex projection 的原生双向证据,不宣称完成 Face 一对多投影、intersection/both、defining/frozen flags、FreeCAD 新命名 token 写出或 Weight/SnellsLaw/InternalAlignment。FC-06 受 TSN-08、SK-12、FC-04 依赖仍保持 pending;83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 81. 2026-08-04 FC-06 Sketch Attachment 原生往返增量 + +FCStd writer 现在把 Web Sketch 的 `Support`、`MapMode`、`AttachmentOffset` 转为现代 FreeCAD 原生字段:`AttachmentSupport` 使用 `App::PropertyLinkSubList`,`AttachmentOffset` 使用原生 Placement,`MapMode` 使用 FreeCAD 永久枚举索引。该映射不再错误沿用 Web 短枚举的数组位置;例如 `FlatFace` 在 FreeCAD 1.1.1 中明确写为索引 5,而不是 Web 列表中的索引 4。当前 Web 实现范围只放行 Deactivated、ObjectXY/XZ/YZ、FlatFace、NormalToEdge,并分别校验 whole-object、FaceN、EdgeN 支撑形态。 + +结构化 Support 的 TopoRef 必须指向同一文档已声明对象,且状态为 stable、版本非负、persistentId 与 face/edge/vertex 类型一致;未声明对象、自引用、ambiguous/new/deleted、非原生 token、FlatFace 配 Edge 或 NormalToEdge 配 Face 均在生成 ZIP 前硬失败。隐藏的 `WebSupportValue` 使用 URI 编码 JSON 保留 topologyVersion、generation、signature、candidates,FreeCAD 另存后 reader 会先核对原生 AttachmentSupport,再恢复完整 Web TopoRef。历史 Facade 默认的未声明 `XY_Plane + Deactivated` 只保留为 Web 兼容元数据,不伪造悬空 FreeCAD Link。 + +锁定 FreeCAD 1.1.1 已实际打开、重算并另存 Web 生成的 `ExternalBox + Sketch`:`MapMode=FlatFace`、`AttachmentSupport=ExternalBox.Face1`、AttachmentOffset Z=0.25 mm,同时保留 10 个内部几何、11 个约束、1 个外部 Edge1 投影和外部 `PointOnObject` 约束。回存 FCStd 由 Web inspector 解码原生字段,并从隐藏元数据精确恢复 Face1 的 topologyVersion=3、generation=2 和 signature。Facade 回归升至 140/140,桌面 oracle 与生产构建通过。 + +该增量关闭当前六种 Web Attachment 模式的 FCStd 边界证据,不宣称完整 FreeCAD AttachEngine 的 56 种模式、多引用 ThreePoints/Intersection 支撑、MapReversed/MapPathParameter 或局部 Attachment 几何执行全部等价。FC-06 仍受 Face 多投影、高级 Sketch 约束和批量 FCStd 黄金约束,83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 82. 2026-08-04 FC-06 Sketcher SnellsLaw/Weight 原生往返增量 + +`SnellsLaw` 不再使用会丢失端点位置的两几何简化代理。Sketch 模型和 FCStd codec 现在保存两条 ray 的明确端点、第三条 boundary curve、折射率数值和 driving 状态,并映射为 FreeCAD `Type=16` 的三组 `ElementIds/ElementPositions`。锁定 FreeCAD 1.1.1 已打开、重算并另存三条 line 和一个 SnellsLaw 约束;桌面报告原生类型 `SnellsLaw`,Web 回读精确恢复两个端点、boundary 和 1.2 数值。旧的不完整快照仍可读取,但原生写出会硬拒绝,避免伪装成无损格式。 + +B-spline `Weight` 现在按 FreeCAD 原生内部几何模型写出:每个被约束 pole 生成一个 `Part::GeomCircle`、`internalGeometryType=9` 的构造辅助几何,以 `InternalAlignment(Type=15, InternalAlignmentType=9, InternalAlignmentIndex=pole)` 绑定 B-spline,再以 `Weight(Type=19)` 约束辅助圆半径。仅有 Weight 时 writer 生成带稳定名称的隐藏对齐约束,并用 `WebSyntheticConstraintIds` 标记;显式 `bspline-control-point` 对齐则直接往返。reader 保留原生 GeometryList 索引以解析约束,但只向 Web 暴露可编辑 B-spline,核对辅助圆、端点位置和 pole 范围后剔除合成约束。重复 Weight、越界 pole、非正权重和当前无法无损表达的 knot/ellipse 内部对齐均在写出前硬失败。 + +锁定 FreeCAD 1.1.1 的 Weight oracle 已实际恢复 2 个原生几何(B-spline 加内部圆)、2 个原生约束(InternalAlignment 加 Weight)和内部构造索引 1;桌面另存后 Web 恢复 1 条稳定 ID 的 B-spline 与 `middle-weight=0.75`,不泄漏合成对齐项。Facade 回归升至 142/142,桌面 FCStd oracle和生产构建通过。FC-06 仍需 ellipse/knot 内部对齐、Face 多投影、完整批量 golden 和依赖门关闭,83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 83. 2026-08-04 FC-06 Sketcher 完整现有 InternalAlignment 模型增量 + +继续依据锁定 FreeCAD 1.1.1 `SketchObject::exposeInternalGeometryForType` 与 `Constraint::Save` 源码,FCStd codec 已覆盖 Web Sketch 模型当前声明的全部内部对齐:`ellipse-major/minor` 分别生成 `Part::GeomLineSegment + internalGeometryType=1/2`,`ellipse-focus` 的索引 0/1 分别生成 `Part::GeomPoint + type=3/4`,`bspline-knot` 生成 `Part::GeomPoint + type=10`。椭圆辅助几何由 center、rotation、长短半径精确求出;B-spline knot 以 expanded knot multiplicity 得到唯一 knot 序列,再用有理 de Boor 在目标参数求值,不依赖网格近似或第二套几何内核。 + +reader 现在要求每个内部辅助几何都有匹配的 `InternalAlignment`,并逐项核对 helper 类型、`internalGeometryType`、FirstPos、目标几何类型、native index 和 B-spline pole/knot 范围;Web 不支持的 Hyperbola/Parabola 内部类型保留为不可编辑 proxy,不会被静默丢弃。`WebSyntheticConstraintIds` 也要求唯一、存在且只指向 B-spline control-point 对齐,缺失、重复或冒充其他约束会硬失败。 + +锁定 FreeCAD 1.1.1 已实际打开、重算并另存包含旋转椭圆、rational B-spline、中间 knot、4 种椭圆内部元素和 knot point 的 Web FCStd。桌面报告 7 个原生几何、5 个 `InternalAlignment`、构造索引 `[2,3,4,5,6]`;回存后 Web 精确恢复 2 个可编辑几何和全部 5 条语义约束,不暴露辅助元素。Facade 回归升至 143/143,桌面 oracle 与生产构建通过。FC-06 后续仍是 Face 一对多外部投影、批量 FCStd golden 与上游依赖门;83 项执行计划状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 84. 2026-08-04 FC-06 Sketcher Face 一对多 ExternalGeo 增量 + +真实 FreeCAD 1.1.1 源码和归档确认 Face 投影是分组关系:一个 `ExternalGeometry` LinkSub 和一个 `ExternalTypes=Projection` 可以对应多个 `ExternalGeo` 几何,每个投影共享同一 `ExternalGeometryExtension.Ref/RefIndex`,约束仍以各自的负 GeoId 引用。Web 模型无需破坏性迁移,现允许多个 `SketchExternalGeometry` record 共享完全相同的 stable Face TopoRef;writer 按 object/sub-element 分组,只写一条 Face Link 与 Type,同时保留每条 projection 的 Web ID、projection ID 和完整 TopoRef 元数据。Edge/Vertex 仍要求一条 Link 对一条投影,Face/Edge 只接受曲线,Vertex 只接受点。 + +reader 不再错误要求 `ExternalGeo.length === ExternalGeometry.length`,而是校验每个 link 至少有一条投影、非 Face 分组恰好一条、flags 仍为当前支持的 Projection=0、每组 Web TopoRef 元数据一致。FreeCAD 新拓扑命名 token 可能使 `ExternalGeo.Ref` 不等于 LinkSub 中的旧 `FaceN/EdgeN`;存在 `RefIndex` 时以它为权威,缺失时按相同 Ref 的投影组和首次出现顺序回退,兼容锁定示例与 Web writer 档案。 + +锁定桌面 FreeCAD 已打开、重算并另存 `Part::Box.Face6 + Sketch`:1 个可编辑点、1 个 PointOnObject、1 条 Face6 link、`ExternalTypes=[0]`、`ExternalGeo=6`(两轴加四边)。Web 回读恢复 `face-left/top/right/bottom` 四个 ID、四个 projection ID、topologyVersion=5、generation=4 和 signature,约束仍引用第一条投影。Facade 回归升至 144/144,桌面 oracle 与生产构建通过。intersection/both、defining/frozen/sync flags 和新命名 token 的写出仍未纳入当前数据模型;FC-06 及 83 项计划状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 85. 2026-08-04 FC-06 ExternalTypes 与状态位原生往返增量 + +Sketch 外部几何数据契约现在显式覆盖 FreeCAD 的三种组模式:`projection`、`intersection`、`both`,分别原生映射为 `ExternalTypes=0/1/2`。同一 object/sub-element 的一对多投影必须共享模式、TopoRef 元数据和状态位;Projection 继续执行 Vertex=点、Edge/Face=曲线以及非 Face 单投影约束,Intersection/Both 则允许截面产生点、曲线或一对多结果。reader 使用 `RefIndex` 和组顺序恢复模式,不再把非零 ExternalTypes 降级成不可编辑 proxy。 + +`SketchExternalGeometry` 同时保存 Defining、Frozen、Detached、Missing、Sync 五个 FreeCAD 原生位,FCStd 中精确编码为 `Flags` 的 bit 0..4。未知高位、非整数、同组位冲突以及未 Frozen 的 Sync 会硬失败;默认零值仍省略 Web 字段,保持旧项目快照兼容。Sync 被明确建模为 Frozen 几何的一次同步请求,桌面重算可以消费并清除此瞬态位;Defining/Frozen 作为稳定状态精确另存回读。 + +锁定 FreeCAD 1.1.1 已实际打开、重算并另存 Web 生成的 `ModeBox + ModeSketch`:Face1 Intersection 产生 1 条原生线,Face6 Both 保留 4 条原生线,Edge1 Frozen 保留 1 条原生线;桌面报告 `ExternalTypes=[1,2,0]`、`ExternalGeo=8`(两轴加六条记录)、五条 Defining `Flags=1` 和一条 Frozen `Flags=2`。FreeCAD 将同一对象的三个 sub-element 在 Python PropertyLinkSubList 视图中聚合,但 FCStd reader 仍恢复六个 Web ID、六个 projection ID、`intersection/both/projection` 模式和完整 TopoRef。Facade 回归升至 145/145,桌面 oracle 与生产构建通过。 + +该增量关闭 FC-06 当前 Sketch 模型中的 Projection/Intersection/Both 与五个状态位原生 codec,不宣称浏览器已经用 Bitbybit 从任意 3D Shape 自动生成所有外部截面,也不宣称 FreeCAD 新拓扑命名 token 的原生写出完成。FC-06 仍受 SK-12、FC-04 和批量 FreeCAD-Web-FreeCAD golden 门依赖;83 项执行计划状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 86. 2026-08-04 FC-10 FCStd 双向原生 round-trip 报告门禁增量 + +`test:freecad-fcstd-native` 不再只输出一次性控制台结果,而是生成确定性的 `config/freecad-fcstd-roundtrip-verification.json`。报告锁定 FreeCAD/Bitbybit 1.1.1 和 FreeCAD commit `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`,逐场景记录方向、完整执行阶段、语义域、桌面版本、证据与差异;`check:freecad-fcstd-roundtrip` 要求未知差异一律阻断,并已接入默认 `verify`。 + +首批矩阵包含 14 个真实桌面场景:FreeCAD -> Web -> FreeCAD 的锁定 PartDesign Shape/ElementMap/StringHasher,以及 Web -> FreeCAD -> Web 的 Box、Cylinder、Sphere、Cone、Fuse、Cut、Common、核心 Sketch/外部几何/Attachment、Face 一对多投影、Projection/Intersection/Both 与状态位、SnellsLaw、B-spline Weight 和五种 InternalAlignment。每条路径都包含实际打开、重算、另存和反向解析;14/14 通过,未知差异为 0。 + +该门禁把当前原生覆盖从“脚本执行成功”提升为逐场景可审计报告,但不把首批 14 场景误报成 FC-10 所要求的完整批量语料或 100 模型容差矩阵,也不改变尚未完成的计划项。83 项执行计划状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 87. 2026-08-04 FC-07/FC-10 只读 proxy 全归档字节保持增量 + +`rewriteFcstdMetadataArchive` 现在为 Inspector 生成的只读 proxy 文档提供严格无损路径:文档和 GuiDocument 均未修改时直接返回原始 FCStd 字节;标签、对象、属性或 GUI 覆盖发生任何变化都会硬失败。这样未知 `Document.xml` 节点、GuiDocument、脚本、插件私有资源、ZIP entry 元数据和顺序不会因为用 Web serializer 重建而静默丢失;可编辑文档仍使用原有的结构化 writer。 + +锁定的 `PartDesignExample.FCStd` 已作为第 15 个原生 round-trip 场景进入报告。该文件含 17 个对象,其中 8 个 `App::Origin/Line/Plane/Point` 当前按只读 proxy 管理;49,349-byte 原档和 Web 透传归档的 SHA-256 同为 `a8184e071ce36e22f6407dcb5d789946003dc0031dbdaf261130fb15171cf8ab`。FreeCAD 1.1.1 已实际重新打开并另存透传档,Body 仍为有效 23-face Shape,Web 再解析仍得到 17 个对象和同样 8 个 proxy。Facade 回归升至 146/146,FCStd 报告为 15/15、未知差异 0。 + +该能力刻意不允许编辑未知 proxy 后“尽力”重建 XML;未知对象的可编辑合并需要面向各 TypeId 的结构化 codec。它补齐 FC-10 的 proxy byte-preservation 报告切片,但完整核心对象矩阵与 100 模型容差报告仍未完成,计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 88. 2026-08-05 FC-05/FC-10 Chrome 100 模型 FCStd BRep 质量与容差门禁 + +新增 `BitbybitGeometryRuntime.qualityReport()`,质量检查只通过 Bitbybit 1.1.1 的 OCCT Shape、BRepGraph、validate 和 bounding-box API 完成,不引入第二套浏览器几何入口。报告同时记录 Shape 类型、空 Shape、结构错误/警告、solid/face/edge/vertex 数量和包围盒;质量属性继续记录体积、表面积与质心。公开 Facade 类型新增 `ShapeQualityReport`,测试器不接触内核引用。 + +新增 `test:chrome-fcstd-golden` 和确定性 `config/chrome-fcstd-golden-verification.json`。Chrome 150 逐一执行锁定 FreeCAD 1.1.1 oracle 的 100 个模型:Box 21、Cylinder 21、Sphere 16、Cone 16、Fuse 8、Cut 10、Common 8。每个场景均由 Bitbybit 创建 Shape、导出 BRep、写入带 `Part::PropertyPartShape` 的 FCStd、由 Web inspector 定位资源、再经同一 Bitbybit runtime 导入;source/imported 分别与 FreeCAD 黄金以及彼此比较质量、质量属性、拓扑计数和声明容差。结果 100/100 通过、未知差异 0;20 条已知差异严格限定为 10 个 Cut 的 source/imported 容器类型由 FreeCAD Compound 归一化为 Bitbybit 单 Solid,几何与计数无差异。总 FCStd 压缩字节 142071、BRep 字节 195457,每个场景释放后及总门禁结束时 ShapeHandle/kernel reference 均为 0/0。默认 `verify` 已纳入报告检查;按项目约束仅运行 Chrome。 + +同一增量修正实际重算器的 FreeCAD 原生坐标约定:`Part::Box` 的 Length/Width/Height 对应 X/Y/Z,Bitbybit Box 参数按其 width/height/length 轴序重排且以 FreeCAD 原点放置;Cylinder/Cone 明确沿 +Z。旋转角为零的 Part 基元 Placement 已直接折入创建中心,避免额外 Transform Shape;非零旋转仍走统一 Placement。100 模型 Chrome 门禁另用真实产品重算器生成带平移 Box 和默认 Refine Cut,二者均匹配相应 FreeCAD 黄金且探针释放为 0/0。Part::Fuse/Cut/Common 新增原生 `Refine` Bool,默认 false 时保留边界,true 时请求 Bitbybit 合并边界;FCStd writer 将它作为内建属性输出,不写动态属性元数据。Facade 回归为 146/146,生产构建通过。 + +这批证据关闭了此前所列“100 模型 FCStd 批量质量/容差黄金”缺口,但 FC-05/FC-10 仍有完整 ElementMap 历史迁移和更广核心对象矩阵,不能据此误报整项完成。83 项执行计划状态仍保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 89. 2026-08-05 PART-ALL Sphere 截取参数 Bitbybit 组合实现 + +Part::Sphere 现在显式保留 FreeCAD 原生 `Angle1`、`Angle2`、`Angle3`(默认 `-90/90/360`),并在 Facade 重算前校验纬度、方位角范围及上下界关系。Bitbybit 1.1.1 虽只提供完整球体构造,重算器已用现有 Bitbybit 操作补齐截取:完整球体先与按 `sin(Angle1/Angle2)` 定位的 Z 向 Box 相交,再与平面扇形 Extrude 形成的方位棱柱相交。扇形外包络半径为 `2R`,不会侵入球面;每次相交后立即释放前一 Shape 和工具 Shape。缺少 Bitbybit Extrude 时明确返回 `SPHERE_TRIM_RUNTIME_UNAVAILABLE`,非法输入分别报告 `SPHERE_ANGLE1_INVALID`、`SPHERE_ANGLE2_INVALID`、`SPHERE_LATITUDE_RANGE_INVALID` 或 `SPHERE_ANGLE3_INVALID`,不再静默退化为完整球体。 + +原生 FCStd 桌面往返报告扩为 16 个场景。新增 Web -> FreeCAD -> Web 的 `Radius=5, Angle1=-45, Angle2=45, Angle3=120` 截取球:锁定 FreeCAD 1.1.1 实际打开、重算、另存后得到 1 个有效 Solid,体积和包围盒均与球带乘 120/360 的解析值一致,四个参数及 Shape 资源被 Web 再次恢复。Chrome 产品重算探针用同组参数执行真实 Facade + Bitbybit 组合路径,体积和包围盒匹配桌面结果,顶层 Compound 内仅含一个有效 Solid,作为受限 `kernel-container-normalization` 差异记录;所有临时与缓存 Shape 释放后仍为 0/0。未引入第二套浏览器几何内核。 + +## 90. 2026-08-05 PART-ALL Torus 原生参数与 Chrome/桌面双门禁 + +`Part::Torus` 已进入 Facade、产品重算、任务面板和 FCStd 原生属性映射。参数覆盖 `Radius1`、`Radius2`、`Angle1`、`Angle2`、`Angle3`,默认值与 FreeCAD 一致;Radius、轴向和 Angle3 在 Bitbybit 边界校验,非默认小圆裁剪角因 Bitbybit 1.1.1 未暴露对应稳定接口而明确返回 `TORUS_MINOR_TRIM_UNSUPPORTED`,不会静默生成错误 Shape。浏览器几何仍仅调用 Bitbybit `createTorus`,未引入第二内核或手写替代 BRep。 + +锁定 FreeCAD 1.1.1 已实际打开、重算并另存 `Radius1=10, Radius2=2, Angle1=-180, Angle2=180, Angle3=270`:结果为有效单 Solid、3 faces、体积 `592.1762640653616`,五个参数和 Shape 资源完整回读。原生 round-trip 报告扩为 17/17,未知差异 0。桌面 `Shape.BoundBox` 的 X/Y 为 `+-12.988706403508727`,Chrome Bitbybit 为 `+-12.988706503508727`;两者差异为 OCCT 拓扑容差 `1e-7`,已按 `1e-6` 场景容差通过。该事实纠正了把解析外径 `12` 错当成 FreeCAD BoundBox 的假设,质量报告最终保持完全使用 Bitbybit 的 BRep 包围盒结果。 + +Chrome 150 产品重算探针同时验证 Torus 结构有效、1 solid、3 faces、3 edges、2 vertices、体积/表面积/质心和包围盒,比较无已知或未知差异;释放后 ShapeHandle/kernel reference 为 0/0。100 个 FCStd+BRep 黄金模型继续 100/100 通过、未知差异 0。七条 Chrome runner 统一使用随机临时 profile 并在结束时删除,避免长期执行耗尽 `/tmp`;仍未运行 WebKit 或其他浏览器。Facade 146/146、桌面 FCStd 17/17、生产构建通过。该增量不宣称 PART-ALL 或 83 项计划整体完成,计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 91. 2026-08-05 PART-ALL Prism 原生参数与闭壳实体增量 + +`Part::Prism` 已进入 Facade 任务、属性面板、recompute、FCStd recognized TypeId 和原生数据属性映射。参数与 FreeCAD 1.1.1 保持同名同义:`Polygon`、`Circumradius`、`Height`、`FirstAngle`、`SecondAngle`;正多边形从 `(Circumradius, 0, 0)` 开始逆时针生成,顶面位移严格使用 `[Height*tan(FirstAngle), Height*tan(SecondAngle), Height]`。Polygon 被限制为 3..10000 的安全整数,半径/高度和两个 `-89.99999..89.99999` 角度在进入 Worker 前硬校验。FreeCAD resave 会把 Polygon 的类型提升为 `App::PropertyIntegerConstraint`,FCStd decoder 现将该类型以及 `App::PropertyFloatConstraint` 作为有限数值恢复,不再退化为字符串。 + +Bitbybit 1.1.1 的普通 face extrusion 对正多边形返回缺顶盖的无效 Shape,两截面 Loft 虽有正确拓扑但仍无法通过结构检查,因此最终实现没有接受这些结果。`BitbybitGeometryRuntime.createPrism` 改用同一 Bitbybit Worker 的公开 `createPolygonWire`、`createFaceFromWires`、`shapes.shell.sewFaces` 和 `shapes.solid.fromClosedShell`:底面/顶面按外法向反向,侧面逐边生成,闭壳后再创建 solid。浏览器没有直接调用 OCCT、自定义 BRep 或第二套内核;Bitbybit 仍是唯一几何接口。 + +锁定 FreeCAD 1.1.1 已打开、重算并另存六边形 `R=2/H=10/FirstAngle=10/SecondAngle=-5`:1 solid、8 faces、体积 `103.92304845413267`、边界盒 `[-2,-2.6069374428281185,0]` 到 `[3.76326980708465,1.7320508075688776,10]`,五个参数和 Shape 资源均由 Web 回读。原生 round-trip 报告升至 18/18、未知差异 0。Chrome 150 产品探针得到结构错误 0、8 faces/18 edges/12 vertices、体积 `103.92304845413264`,与桌面差异在 `1e-6` 门限内且无已知/未知差异;100 个 FCStd+BRep 黄金场景继续 100/100 通过,释放后 ShapeHandle/kernel reference 为 0/0。Facade 146/146、生产构建通过,未运行 WebKit 或其他浏览器。该增量推进 PART-ALL,但尚未覆盖 Wedge 等其余 Part primitive,83 项状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 92. 2026-08-05 PART-ALL Wedge 原生十参数与退化闭壳增量 + +`Part::Wedge` 已进入 Facade、Part 任务面板、mock 文档、recompute 和 FCStd recognized/native 属性映射。十个原生字段 `Xmin/Ymin/Zmin/Z2min/X2min/Xmax/Ymax/Zmax/Z2max/X2max` 按 FreeCAD `BRepPrim_Wedge` 语义保留:Ymin/Ymax 两端是 XZ 矩形,主 X/Y/Z 跨度必须为正,远端 X2/Z2 跨度允许为零但不能为负。为匹配 FreeCAD 的有符号距离,公共文档 schema 新增 `App::PropertyDistance`,它允许合法负的 Xmin/Ymin/Zmin,而不会放宽普通 Length。 + +Bitbybit 1.1.1 没有公开 Wedge convenience constructor,因此 `BitbybitGeometryRuntime.createWedge` 仍只使用 Worker 的公开 `createPolygonWire`、`createFaceFromWires`、`sewFaces` 和 `fromClosedShell`。实现连接两端矩形的六个定向平面面;当远端矩形退化为边或点时,连续重复点会被移除,零面积端面被省略,剩余三角/四边面重新 sew 成一个 solid。没有直接调用浏览器 OCCT、手写 BRep 或第二套几何入口;Bitbybit 仍是唯一接口。 + +锁定 FreeCAD 1.1.1 已打开、重算并另存默认远端收缩 Wedge(`Xmin/Ymin/Zmin=0`、`X2min/Z2min=0`、`Xmax/Ymax/Zmax=10`、`X2max/Z2max=8`):1 solid、6 faces、体积 `813.3333333333333`,十个 `App::PropertyDistance` 参数和 Shape 资源由 Web inspector 全部恢复。FCStd round-trip 报告由 18/18 扩为 19/19,未知差异 0。 + +Chrome 150 产品重算探针使用同一十参数路径得到有效 solid、6 faces、12 edges、8 vertices,体积 `813.3333333333333`,包围盒按 Bitbybit 容差为 `[-1e-7,-1e-7,-1e-7]` 到 `[10.0000001,10.0000001,10.0000001]`,与桌面 oracle 无已知或未知差异;ShapeHandle/kernel reference 释放后仍为 0/0。100 个 FCStd+BRep Chrome golden 场景继续 100/100、未知差异 0;仅测试 Chrome,未运行 WebKit 或其他浏览器。Facade 回归 146/146、生产构建通过。该增量关闭 Part Wedge 的原生参数/基础实体切片,但 PART-ALL 仍有其余 Part primitive 和高级功能,83 项状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 93. 2026-08-05 PART-ALL Ellipsoid 原生参数与 OCCT GTransform 对齐增量 + +`Part::Ellipsoid` 已进入 Facade、Part 任务面板、mock 文档、recompute、FCStd recognized TypeId 和原生数据属性映射。六个 FreeCAD 字段 `Radius1/Radius2/Radius3/Angle1/Angle2/Angle3` 保持默认值 `2/4/0/-90/90/360`;Radius1/2 必须为正,Radius3 允许零(零按 FreeCAD 兼容规则复用 Radius2),角度范围和上下界在进入 Worker 前硬校验。Bitbybit 运行时使用公开 `createSphere` 与 `transforms.scale3d`,明确拒绝当前未能无损表达的非默认椭球裁剪角并返回 `ELLIPSOID_TRIM_UNSUPPORTED`,不会静默生成完整椭球。 + +Chrome 150 实际产品重算证明 Bitbybit 的公开 `scale3d` 与 FreeCAD 1.1.1 的 `BRepBuilderAPI_GTransform` 产生相同 OCCT 控制网结果:1 solid、1 face、3 edges、2 vertices,体积 `133.9826640573845`,包围盒 `[-8,-6.92820323027551,-2]` 到 `[4,6.928203230275507,2]`。该包围盒并非理想解析椭球的对称范围,而是 FreeCAD/OCCT GTransform 表示的实际 BRep BoundBox;黄金期望已锁定实测值,未知差异为 0,全部 ShapeHandle/kernel reference 释放后为 0/0。 + +FCStd 原生 round-trip 报告由 19/19 扩为 20/20:FreeCAD 1.1.1 实际打开、重算、另存后,六个参数、1 个有效 Solid 和 Shape 资源均由 Web inspector 恢复,Ellipsoid 证据与桌面体积/包围盒一致。Facade 回归仍为 146/146,生产构建通过;100 个 FCStd+BRep Chrome golden 场景继续 100/100、未知差异 0。浏览器仍仅测试 Chrome,未运行 WebKit 或其他浏览器;该增量不宣称 PART-ALL 或 83 项计划整体完成,状态保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 94. 2026-08-05 FC-04 PartDesign::Hole 原生字段 XML 边界增量 + +依据锁定 FreeCAD 1.1.1 `PartDesign::Hole` 构造函数的属性注册,FCStd writer 现在把同名同类型的 Hole 字段写成原生属性:线程/标准选择、Diameter、HoleCut 参数、DepthType/Depth、DrillPoint、DrillPointAngle、DrillForDepth、Tapered/TaperedAngle、ThreadDepth 和 BaseProfileType 等不再附带 Web 动态 `group/doc/attr` 元数据。Enumeration 继续写 FreeCAD 原生整数索引,Length/Angle/Bool 使用对应原生节点。 + +`Position`、`Direction`、Web 兼容的 `Type` 别名以及未在 FreeCAD `FeatureHole` 注册表中确认的扩展字段仍保留动态属性,避免将 Web 组合执行参数伪装成原生 Hole schema。该增量只关闭 XML 属性分类错误,未宣称 Threaded/ModelThread、标准尺寸、Support/Profile 面定位或完整 PartDesign Hole Shape round-trip 已完成;Facade/Chrome 几何 Hole 子集继续沿用显式 `HOLE_THREADING_UNSUPPORTED` 等诊断。全量 verify 的 FCStd、Chrome、OPFS、Facade 和构建门禁保持通过,83 项状态仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 95. 2026-08-05 FC-04 Part Extrusion/Revolution 原生 TypeId 与 P06 字段边界增量 + +依据 FreeCAD 1.1.1 实际注册表,Part 拉伸的规范 TypeId 已从历史误写的 `Part::Extrude` 更正为 `Part::Extrusion`。reader 仍接受旧别名作为迁移输入,但 writer 永远输出规范 TypeId,避免生成 FreeCAD 无法实例化的对象。`App::PropertyDistance` 现按原生 Distance 节点编码;原生 Placement 写出 FreeCAD 所需的状态位,Sketcher Placement 仍保留 Web AttachmentEngine 的既有边界语义。 + +`Part::Extrusion` 的 Base、Dir、DirMode、LengthFwd/LengthRev、Solid、Reversed、Symmetric 和双向 TaperAngle,以及 `Part::Revolution` 的 Source、Base、Axis、Angle、Symmetric、Solid 已加入原生字段映射。锁定 FreeCAD 1.1.1 实际打开、重算并另存同一 Web FCStd:Extrusion 得到 1 solid、体积 `30`,Revolution 得到 1 solid、体积 `36π`;另存后规范 TypeId、Link、参数和 Shape 资源均由 Web inspector 恢复。FCStd round-trip 报告稳定为 22/22,未知差异 0。 + +`Part::Loft` 的 `Sections/Solid/Ruled/Closed/MaxDegree/Linearize`、`Part::Sweep` 的 `Sections/Spine/Solid/Frenet/Transition/Linearize` 现按 FreeCAD 原生类型建模,其中 Spine 使用 whole-object `App::PropertyLinkSub`,空 sub-element 会生成依赖边。当前 Bitbybit 重算器只放行已验证的实体/变换子集;Solid=false、Frenet、Linearize、非默认 MaxDegree、Spine 子元素等情况均返回明确诊断。Loft/Sweep 尚未取得稳定的原生几何黄金回放,因此不宣称完成其完整 Shape round-trip。 + +Facade 回归保持 146/146,Chrome 150、OPFS、FCStd 22/22 与生产构建门禁继续作为验证入口;未运行 WebKit 或其他浏览器。该增量修正原生 TypeId 和字段边界,不改变 83 项执行计划计数,仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 96. 2026-08-05 P06 IGES 原生导出闭环 + +Bitbybit OCCT Worker 新增 `plugins.io.exportIges`,直接调用公开 `WriteIGESToString`;Facade 暴露 `exportIges` 并校验 `.iges/.igs` 文件名和非空文本,MockFacade 同步转发。Chrome 导出页面已启用 IGES,GLB/Web CAD package 仍明确禁用。Chrome 150 E2E、OPFS 保存重开、Facade 146/146、FCStd 22/22、Chrome golden 100/100 和全量 verify 均通过,未知差异 0。83 项计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 97. 2026-08-05 P06 Chrome IGES round-trip 证据 + +Chrome 几何特性 harness 现在对同一个 Bitbybit Box 同时执行 IGES 写出与 `ReadIGESFromString` 读回,记录非空 IGES 字节数、源/读回体积和拓扑数量。Chrome 150 实测源与读回体积均为 `24`,读回为 6 faces、24 edges、24 vertices;边/点数量变化属于 IGES 参数化重建,不影响实体质量属性,且未发现未知差异。新增证据在释放后保持 ShapeHandle/kernel reference `0/0`,`check:chrome-geometry-features` 与全量 verify 通过。该增量不宣称 IGES 拓扑索引可直接作为稳定 TopoRef,83 项计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 98. 2026-08-05 P06/QA-03 Chrome 导入格式工作流证据 + +Chrome E2E 新增 `/projects → /import` 导入工作流,锁定文件选择器接受 `.FCStd/.fcstd/.step/.stp/.iges/.igs/.brep/.brp`,页面显示 STEP、IGES、BREP、FCStd 交换边界;随后回到 OPFS 工作区继续导出和移动端布局检查。Chrome 150 页面异常为 0,COOP/COEP、Canvas、OPFS 保存重开、STEP/IGES/STL/BREP 导出选择均通过;`check:chrome-app-e2e` 与全量 verify 通过。该证据只验证 UI 入口,不宣称导入格式已自动创建持久化 DocumentObject,83 项计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 99. 2026-08-05 QA-08 Chrome 可访问名称门禁 + +Chrome E2E 在移动端起始页扫描所有可见 `button/input/select/textarea` 控件,要求每个控件具有 `aria-label`、`title`、文本或 placeholder 可访问名称。本次 Chrome 150 实测检查 15 个控件,缺失数量为 0,页面异常为 0;证据写入 `config/chrome-app-e2e-verification.json`,并由 `check:chrome-app-e2e` 与全量 verify 强制检查。该门禁只覆盖名称和当前页面状态,完整键盘顺序、焦点可见性、屏幕阅读器语义和国际化仍属于 QA-08 后续范围。 + +## 100. 2026-08-05 FC-08 100 模型 STEP/IGES/BREP 格式矩阵 + +Chrome FCStd golden harness 的 100 个锁定场景现在除 FCStd+BRep 严格 round-trip 外,还逐场景执行 STEP 与 IGES 写出、读回、质量属性比较和 Shape 释放。Box/Cylinder/Sphere/Cone 与 fuse/cut/common 共 100 场景全部通过,未知差异 0;每个报告保存格式字节数、源/读回体积、实体数、ShapeType、结构错误数量和显式规范化分类。IGES 可能把实体容器读回为 compound、shell 或 face,STEP/IGES 也可能报告 `format-topology-normalization`,这些差异不得用于稳定 TopoRef,但体积必须在场景容差内且 Shape 非空。全部场景结束后 ShapeHandle/kernel reference 为 `0/0`,独立 checker 和全量 verify 通过。FC-08 仍需单位、颜色和完整容差报告后才能关闭。 + +## 101. 2026-08-05 FC-08 格式容差汇总门禁 + +100 模型报告新增机器可校验的 STEP/IGES 汇总。STEP 共 `1,065,760` 字节、100/100 通过,最大体积偏差 `9.242739906767383e-10`,读回均为 solid;IGES 共 `1,035,342` 字节、100/100 通过,最大体积偏差 `5.097643906992744e-8`,读回为 84 compound 与 16 face。两种格式各有 84 个 `format-topology-normalization`,均被明确分类且不参与稳定 TopoRef。checker 会从 100 条逐项证据重新计算汇总并要求完全相等;全量 verify、构建和释放门禁通过。FC-08 仍需单位和颜色证据后才能关闭。 + +## 102. 2026-08-05 FC-08 STEP/IGES 单位声明门禁 + +每个 100 模型 STEP/IGES 交换记录现在解析导出文本中的单位声明:STEP 要求 `SI_UNIT(.MILLI.,.METRE.)`,IGES 要求 `2HMM`。两种格式 100/100 均明确声明毫米,缺失单位会使该场景直接失败,不再依赖默认单位推断。该切片与体积容差、拓扑规范化分类、Chrome-only Worker round-trip 和 0/0 释放门禁一起纳入全量 verify;颜色/ViewProvider 传递仍需 FCStd/GuiDocument 专项证据,FC-08 保持进行中。 + +## 103. 2026-08-05 QA-05 Chrome 几何 Worker 性能证据 + +Chrome geometry feature harness 现在记录 25 个真实 Bitbybit Worker 操作的 `durationMs`、平均操作时长和峰值 ShapeHandle 数量,并在 checker 中要求操作数与报告一致、计时有限且峰值不低于操作数。Chrome 150 本次实测总时长约 `3064.31 ms`、平均 `122.57 ms`、峰值 ShapeHandle `67`,所有操作 mesh 非空,释放后 ShapeHandle/kernel reference 为 `0/0`。该切片建立 QA-05 的真实 Worker 基准格式,但尚未代表 1000 对象、百万三角形、大装配或长会话预算,QA-05 继续保持 pending。 + +## 104. 2026-08-05 QA-05 Chrome 1000 对象压力切片 + +同一 Chrome 150 geometry harness 在 25 个特征操作后连续创建 1000 个独立 `Part::Box` Shape,记录压力创建耗时和峰值生命周期。本次实测 1000 对象创建约 `81.47 ms`,峰值 ShapeHandle `1067`(含前置特征对象),释放后 ShapeHandle/kernel reference 为 `0/0`;Chrome checker、构建和全量 verify 均通过。该证据关闭 QA-05 的 1000 对象基线子项,但百万三角形、大装配、大表和长会话 P95/峰值预算仍未完成,QA-05 不提前关闭。 + +## 105. 2026-08-05 REL-01 PWA/offline 最小发布门 + +应用新增 `manifest.webmanifest`、生产环境 service worker 注册和 `bitbybit-cad-shell-v1` 缓存策略。Service worker 安装时缓存 `/`、`/index.html`、manifest,激活时清理旧版本并 claim clients;GET 请求采用 network-first,网络失败回退缓存,非 GET 和跨源请求不拦截。Chrome E2E 验证 manifest 200、`/start` start_url、`/` scope、standalone display,COOP/COEP、OPFS、Canvas 和页面异常继续通过;`check:pwa` 已纳入全量 verify。该切片只关闭 PWA 入口和基础离线回退,安装升级、真实断网恢复、缓存迁移和彩排仍属于 REL-01 后续。 + +## 106. 2026-08-05 REL-01 Chrome 真实断网回退证据 + +Chrome E2E 在生产 dist 上等待 service worker ready 后,通过 CDP `Network.emulateNetworkConditions` 切换 offline,重新访问 `/start`;离线期间应用 shell、路由和 `Start a new design.` 标题仍可加载,随后恢复网络并继续完整工作流。报告记录 `offline.path=/start`、`shell=true`、`heading=true`,页面异常为 0;独立 Chrome checker 和全量 verify 通过。该切片关闭基础断网 shell 回退,仍需安装/升级、缓存版本迁移、SQLite/OPFS 离线写入与电源中断恢复彩排。 + +## 107. 2026-08-05 REL-01 service worker 缓存迁移静态门 + +`check:pwa` 现在强制检查 service worker 的缓存版本常量、旧 key 过滤和 `caches.delete(key)` 清理逻辑,同时保留 `skipWaiting`、`clients.claim`、network-first 和缓存回退检查。这样升级到新 shell 版本时不会无限累积旧缓存;门禁已纳入全量 verify。真实安装升级和跨版本离线数据迁移仍需 REL-01/REL-02 专项彩排。 + +## 108. 2026-08-05 QA-08 Chrome Tab 焦点回放 + +Chrome E2E 在移动起始页真实发送 8 轮 Tab keyDown/keyUp,记录 activeElement 的标签、可访问名称和可见性。8/8 焦点步骤均落在有名称的可见元素,未出现无名可见控件;结果写入 `config/chrome-app-e2e-verification.json`,由 checker 和全量 verify 强制检查。该切片覆盖核心页面的焦点命名和基本顺序,不宣称完整屏幕阅读器语义、焦点陷阱、所有工作台键盘映射或国际化。 + +## 109. 2026-08-05 REL-03 确定性 npm CycloneDX SBOM + +新增 `scripts/generate-sbom.mjs`、`config/sbom.cdx.json` 以及 `generate:sbom`/`check:sbom`。生成器只读取 `package.json`、`package-lock.json` 和锁定安装中的 package manifest,不联网、不引入第二套包管理器;产物固定为 CycloneDX 1.5,按路径排序记录 172 个组件、版本、required/development/optional scope、SHA-512 integrity、npm 分发地址、依赖关系和 SPDX/声明许可证。SBOM metadata 同时绑定锁文件 SHA-256,避免报告与锁定依赖脱节。 + +当前平台没有安装的 74 个依赖全部是其他操作系统的 optional esbuild 包,产物将其标为 `not-installed-optional`;已安装的 required/development 包若没有许可证声明会使 `check:sbom` 阻断。该增量建立可审计的依赖/许可证清单,但不伪造漏洞扫描或签名证据,REL-03 仍需发布环境的漏洞报告和密钥签名。 + +## 110. 2026-08-05 REL-03 dist 产物完整性清单 + +新增 `scripts/generate-release-artifacts.mjs`、`config/release-artifacts.json` 以及 `generate:release-artifacts`/`check:release-artifacts`。构建后清单按 POSIX 相对路径排序记录 `dist` 的 24 个普通文件、字节数和 SHA-256,并绑定 `config/sbom.cdx.json` 的 SHA-256;发现 symlink、额外文件、缺失文件、大小或 hash 变化时直接失败。`verify` 现在在生产构建后执行该清单检查,防止部署包与审计报告漂移。 + +清单明确写入 `signature.status=unsigned-development` 和签名密钥需由发布环境提供;本地门禁不会把完整性 hash 冒充数字签名。REL-03 的真实签名、漏洞报告和发布密钥托管仍是未完成项。 + +## 111. 2026-08-05 REL-02 schema 迁移与回滚彩排 + +新增 `scripts/run-project-migration-rehearsal.ts` 和 `config/project-migration-verification.json`。脚本对当前六个 schema migration 逐一起始版本执行 v1→v6 前向升级,验证已应用版本跳过、顺序、最终 schema、事务 commit 和固定迁移 hash;另对每个迁移点注入失败,验证整个事务 rollback、已应用版本恢复到失败前状态且不会误报 commit;全量已应用版本再次运行验证幂等空操作。 + +`check:project-migration` 已纳入 `verify`,报告共 6 个前向起点、6 个失败回滚点和 1 个幂等重跑。该切片证明 Facade migration runner 的事务合同和回滚策略,不等同于真实旧版 SQLite/OPFS 文件、电源中断或发布包降级彩排;Chrome OPFS 真实 v4→v5→v6 仍是 REL-02 的后续门禁。 + +## 112. 2026-08-05 QA-05 Chrome 高细分三角网格压力 + +Chrome geometry harness 在同一 Bitbybit Worker 中新增半径 100 的球面网格压力,固定 `shapeToMesh` precision `0.01`,要求并记录至少 100,000 个三角形和对应顶点数、网格耗时及生命周期峰值。首次 `0.001` 百万三角形尝试在 180 秒浏览器预算内将 renderer 推至约 2.3 GB,已作为超预算失败证据处理,因此门禁采用受控的 100k 基线而不伪称百万三角形已完成。报告仍与前置 25 个特征操作和 1000 个独立 Box 压力共享 Worker,所有 Shape 在结束后统一释放并要求 ShapeHandle/kernel reference `0/0`;checker 和全量 `verify` 强制检查三角形阈值及数值有效性。 + +该切片建立 QA-05 的高细分 Chrome 基线;百万三角形 P95/峰值内存、大装配、多标签长会话和大表格预算仍未完成,QA-05 不提前关闭。 + +## 113. 2026-08-05 TSN-03 Chrome 原生 Boolean history Worker 回放 + +新增 `chrome-native-history-harness.html` 和 `test:chrome-native-history`。Chrome 150 实际启动独立 `NativeOcctHistoryWorkerProvider`,由 Bitbybit Worker 导出两个 Box 的 STEP 文本,写入并清理 OPFS 标记文件,再交给 `native/occt-history` Embind WASM 执行 `cut` 的 `Modified/Generated/Deleted` 收集;Facade 只接收版本化协议和映射后的稳定关系记录,不传递 ShapeHandle 指针。报告记录 provider 能力、OCCT 版本、关系计数和最终 ShapeHandle/kernel reference `0/0`,`check:chrome-native-history` 已纳入全量 `verify`。 + +该证据关闭 native history 的 Chrome Worker/STEP/资源释放 Boolean 子项;provider 能力仍只声明 `fuse/cut/common`,PartDesign Pad/Pocket/Loft/Pipe/Revolution 等特征的原生 Generated/Modified/Deleted 尚未实现,TSN-03 继续保持进行中。 + +## 114. 2026-08-05 QA-07 CSP 与权限安全基线 + +新增 `public/_headers`、`config/security-baseline.json` 和 `scripts/check-security-baseline.mjs`。静态部署合同和 Vite preview 同时声明 COOP/COEP/CORP、CSP(self-only、`wasm-unsafe-eval`、Worker blob、禁止 object/frame、无 `unsafe-eval`)以及关闭 camera/microphone/geolocation/payment 的 Permissions-Policy;checker 还扫描 `src` 中的 `dangerouslySetInnerHTML`、`new Function` 和 `eval` 动态执行入口。 + +该切片把 QA-07 的 CSP/权限与 Facade-only 源码边界变成机器门禁,仍不等同于插件沙箱、依赖漏洞扫描、恶意 Addon 和完整浏览器安全评审;发现 critical 时仍必须阻断发布。 + +## 115. 2026-08-05 REL-03 npm critical 漏洞报告 + +执行 `npm audit --omit=dev --audit-level=critical --json`,对锁定 `package-lock.json` 的 23 个生产依赖完成审计,当前 critical/high/moderate/low/info 均为 0。新增 `config/npm-audit-critical.json` 保存审计版本、依赖计数、漏洞对象和锁文件 SHA-256;`check:dependency-audit` 只做离线一致性检查,锁文件变化或报告出现 critical 会阻断 `verify`,需要联网刷新时显式运行 `test:dependency-audit`。 + +该报告是当前 npm advisory 服务快照,不替代发布时重新执行的漏洞扫描、许可证法律审查或数字签名;REL-03 的签名密钥和 SBOM 发布仍保持未完成状态。 + +## 116. 2026-08-05 QA-06 Chrome Worker/WASM/OPFS 故障注入 + +新增 `chrome-fault-injection-harness.html`、`test:chrome-fault-injection` 和 `check:chrome-fault-injection`。Chrome 150 在真实 `PlanegcsWorkerProvider` 上先完成 planegcs WASM 求解,再通过可控 WorkerLike 包装器终止当前 Worker 并派发错误事件;provider 将旧 Worker 清理、重建新 Worker 并重新初始化,第三个 Worker 恢复求解得到端点 `(5, 0)`。同一回放还验证 coordinator 的取消结果为 `cancelled`、文档版本变化结果为 `stale`,不会把过期解提交给文档。 + +故障注入期间在 Chrome OPFS 根目录创建零字节标记文件,读取确认后执行清理,并再次读取得到 `NotFoundError`;3 个创建过的 Worker 在 provider `dispose` 后全部标记为已终止。报告固定 `browserId=chrome`、`crossOriginIsolated=true`、`SharedArrayBuffer=true`,checker 已纳入全量 `verify`。该切片关闭 QA-06 的 Chrome Worker 取消/崩溃重建/stale/OPFS 临时资源子项;真实电源断电、浏览器强杀、SQLite VFS 写入中断和跨版本 OPFS 数据迁移仍属于 QA-06/REL-02 后续,不提前宣称完成。 + +## 117. 2026-08-05 REL-02 Chrome 旧版 OPFS 实库迁移 + +`SqliteProjectPersistence` 增加可选 `databasePath`(默认仍为 `/bitbybit-project.sqlite3`),仅用于迁移彩排选择隔离的 OPFS SQLite 文件。新增 legacy seed Worker 使用同一 SQLite WASM `OpfsDb` 建立真实 schema v1,写入旧版 `projects/documents/objects/object_properties/resources` 行和 `bitbybit-assets` 资源文件;正常 persistence Worker 随后在 Chrome 中执行 v2→v6 migration。 + +Chrome 150 实测从 schema v1 读取旧文档(版本 3、1 个对象),迁移后 `schemaVersion=6`,缺省 `recompute_json` 正确恢复为 idle;先注入第 3 个 migration 失败,SQLite 事务被拒绝且失败后实际 `schema_migrations` 仍只有 `[1]`,没有留下 v2 的部分结构。随后用正常 Worker 完成迁移,更新到版本 4 后 dispose,再以同一路径重开,文档、checkpoint、SQLite `integrity_check` 和资源内容均保持,资源 release 后 OPFS 文件消失。报告最后删除隔离数据库文件并记录清理路径,checker 已纳入 `verify`。该证据覆盖真实旧版 OPFS 文件的前向迁移、事务回滚、幂等重开和资源引用;断电中途的 SQLite VFS journal 恢复、跨发布版本降级和用户数据备份仍属于 REL-02 后续。 + +## 118. 2026-08-05 TSN-03 Chrome 原生 PartDesign Pad 最小 history + +自构建 OCCT history WASM 新增 `BRepPrimAPI_MakePrism` 的 `prismHistory`/`prismHistoryFromStep`,协议能力从 `fuse/cut/common` 扩为 `fuse/cut/common/pad`,Pad 请求只携带 profile STEP 和有限非零 direction,不伪造 Boolean tool。关系记录支持 `resultKind`:矩形 Face profile 的 4 个顶点保留并各生成一条 Edge,4 条 profile Edge 各生成一个 Face,profile Face 保留为结果 Face;Chrome 150 Worker 回放共 25 条关系(13 modified、12 generated、12 条跨 kind),输出为有效 1 solid、6 faces、体积 `30`,Worker dispose 完成。 + +该切片把原生 Generated/Modified/Deleted 合同真正延伸到一个已实现的 Pad/Prism 子集,并保留 STEP 跨 WASM 边界;Pad 仍要求真实平面 Face profile,solid 会由 OCCT 明确拒绝。Pocket、双向/锥度 Pad、Support/Attachment 定位、Body/Tip 生命周期和 Loft/Pipe/Dress-up 等特征尚未接入自动重算,TSN-03 继续保持进行中。 + +## 119. 2026-08-05 P05 Chrome 参数化生命周期增量 + +新增独立 Chrome PartDesign 生命周期门禁:通过 Facade 给 Sketch 写入闭合矩形,先抑制示例中尚无稳定 TopoRef 的 Pocket/Fillet 并验证 Body.Tip 重定向为 `pad`,再把 Pad.Length 从 42 mm 改为 31 mm,等待 Bitbybit Worker 重算、Undo 回到 42 mm,并再次重算。回放同时读取 Sketch.Support=`XY_Plane`,保存到 SQLite OPFS 后重新加载,再确认 42 mm 参数、Tip、Support 与抑制状态均保持一致;最后检查 ShapeHandle 和 kernel reference 都归零。命令层现在复用重算引擎的闭合轮廓判定;开放或空 Sketch 不再错误启用 Pad/Pocket/Revolution/Groove/Extrude,而是在进入 Worker 前显示稳定的前置条件诊断。 + +该证据关闭了此前仅在 Node Facade 测试中存在、Chrome 端缺少编辑/重算/Undo/保存/加载串联的问题;任务提交创建仍由 Facade 回归覆盖。PD-CLOSURE 仍为 `pending`:PART-ALL、PD-LOFT、PD-TRANSFORM 依赖尚未关闭,完整 Chrome 创建链、全部 PartDesign 特征的原生历史、FreeCAD oracle 和失败时保留上一有效 Shape 仍需逐项补齐;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 120. 2026-08-05 SK-06 planegcs Vertical 约束增量 + +锁定 FreeCAD 1.1.1 的 planegcs WASM Embind 适配新增 `solveVerticalDistance`,与既有 `solveHorizontalDistance` 共用同一 `GCS::System::solve()`/`applySolution()` 路径。Facade `solvePlanegcsSubset` 现在在单线段、一个 driving Vertical 和端点 Distance 的最小合同中调用原生 Vertical 求解;能力表升级为 `1.1.1-embind-subset.2`,明确声明 `horizontal`、`vertical`、`distance`,仍拒绝多几何和未绑定高级约束。 + +Node smoke 与 Facade 回归覆盖 Horizontal/Vertical 两个方向并验证 Embind vector 释放。Chrome 150 专用 Worker 回放同时得到 Horizontal 端点 `(5,0)` 与 Vertical 端点 `(0,5)`,两者求解状态为 `0`、残差为 `0`,并保留 completed/cancelled/recovered/stale 生命周期证据;WASM 新哈希为 `622b725bd86d304786b9046a879f7e7e85907890cc78c4527df0cd0f79b4698d`,artifact checker 和全量构建通过。SK-06 仍为 `in_progress`:完整约束图、尺寸/参考诊断、椭圆/B-spline/外部几何映射以及 FreeCAD 成功/失败 fixture 尚未完成;计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 121. 2026-08-05 SK-06 Block 约束自由度修正 + +Basic solver 的 `Block` 约束现在按被锁定几何的完整参数维度计入 rank:点为 2、线为 4、圆为 3、圆弧/椭圆为 5,B-spline 按控制点与权重参数计数。此前统一按每个 Block 加 2 会让被锁定线段或圆错误显示剩余 DOF;新增 Facade 回归确认 blocked line/circle 均为 `solved`、`degreesOfFreedom=0`。 + +Sketch solver fuzz 2000 模型/4000 次求解与 500 模型/1000 次压力回放均通过,确定性摘要更新为 `55a6454b`,最大残差 `4.577566798522237e-16`,意外状态与确定性差异均为 0。该修正只改善 Basic solver 的诊断计数,不冒充完整 planegcs rank/冗余分类;SK-06 仍保持 `in_progress`,计划计数不变。 + +## 122. 2026-08-05 SK-06 planegcs Parallel/Perpendicular 双线约束增量 + +锁定 FreeCAD 1.1.1 的 planegcs WASM Embind 适配新增 `solveParallelLines` 与 `solvePerpendicularLines`。原生求解固定第一条线和第二条线起点,只让第二条线方向收敛并保持给定长度;返回向量包含两条线坐标、求解状态和归一化方向残差。Facade `solvePlanegcsSubset` 对外仍按两条线的 8 个几何参数计算 7 个剩余自由度,仅接受一个 driving Parallel 或 Perpendicular 关系,并拒绝退化线、额外 driving 约束和非线几何。 + +Node smoke 覆盖 Horizontal/Vertical/Parallel/Perpendicular 四种原生调用,四者求解状态均为 `0`、残差均为 `0`,Parallel 第二条线收敛到 `(0,2)->(5,2)`,Perpendicular 收敛到 `(0,2)->(0,7)`;WASM artifact 新哈希为 `9e056ae7776485910460e9222b4268d02e0e0396a7917e4a68a0d51b8f706343`。Chrome 150 专用 Worker 与 Facade 回放验证同样的端点和资源释放,并保留 `completed/cancelled/recovered/stale` 生命周期证据;`check:planegcs-artifact`、`check:chrome-planegcs` 和 Facade 149/149 回归通过。 + +该增量把 SK-06 的原生双线关系最小合同接入 Bitbybit Worker,但不宣称完整约束图、尺寸/参考/冲突诊断、外部几何、B-spline 编辑或 FreeCAD 全量 fixture 已完成;SK-06 仍保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 123. 2026-08-05 TSN-03 Chrome 原生 PartDesign Pocket history + +原生 OCCT history WASM 新增 `pocketHistoryFromStep`:Worker 接收 base STEP、平面 profile STEP 和有限非零方向,先用 `BRepPrimAPI_MakePrism` 生成切削体,再用 `BRepAlgoAPI_Cut` 收集 base/profile 两侧的 `Generated/Modified/Deleted`。协议能力从 `fuse/cut/common/pad` 扩为 `fuse/cut/common/pad/pocket`,Facade `topologyHistory` 和 STEP bridge 均强制校验两输入、方向和版本上下文;ShapeHandle 不穿越 WASM,仅传输 STEP 文本。 + +Chrome 150 回放先由 Bitbybit Worker 导入 base/profile STEP 并计算 Pocket,再经原生 history Worker 回放,得到 42 条关系(Base/Profile 均出现,21 modified、21 deleted),最终 Shape 合同有效且所有 ShapeHandle/kernel reference 为 `0/0`;OPFS 临时标记创建、读取和清理也通过。Node native smoke、Facade 151/151、`check:occt-history-artifact`、`check:chrome-native-pocket-history` 均通过,OCCT artifact 新哈希为 JS `5d16c764150d21e221f45b9d4b28b215c9cb3a578e91cac5b41a0d333ed246f7`、WASM `1a4da98416a1111f5e668bce37b9d1d4c191157c7267fe3b58494d327b2e6259`。 + +该切片把 PartDesign Pocket 的有限平面挤出子集接入原生 history,不宣称 Through-all、Up-to-face、锥度、双向或完整 Support/Attachment、Body/Tip 自动历史已完成;TSN-03、PD-BASE 仍保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 124. 2026-08-05 TSN-03 Chrome 原生 PartDesign Revolution history + +原生 OCCT history WASM 新增 `revolutionHistoryFromStep`,输入锁定为 profile STEP、有限 axis origin、非零 axis direction 和 `(0,360]` 度角;`BRepPrimAPI_MakeRevol` 直接收集 profile 顶点/边/面的 FirstShape、Generated 和 IsDeleted,并为跨 kind 的 vertex→edge、edge→face 关系写入 `resultKind`。协议、Worker 能力与 Facade `topologyHistory` 扩为 `revolution`,无效轴、越界角度和非单 profile 输入在进入 WASM 前拒绝。 + +Node smoke 对 2×3 矩形围绕偏移 Y 轴执行 360° Revolution,得到有效 1 solid、体积 `75.39822368615503`(`24π`)、23 条关系,Modified/Generated/Deleted 均非空。Chrome 150 由 Bitbybit Worker 计算同一 Revolution,再经原生 history Worker 回放,得到 10 modified、10 generated、3 deleted,其中 10 条跨 kind;结果结构有效、体积一致,OPFS 临时标记清理后 ShapeHandle/kernel reference 为 `0/0`。Facade 153/153、Chrome checker 和 artifact checker 通过;最新 OCCT artifact 哈希为 JS `25abac1995427b1050b47bd2a6f14fa67db6a518376415e2732ea8bcca766a9d`、WASM `ca0ac6467e655dfa32da653b917baab219591b94fcb33a7aa561d241554f4cba`。 + +该切片只覆盖单 profile、单角度的原生 Revolution;Two angles、Midplane、Support/Attachment 和 Groove 的 base-cut 历史尚未完成,TSN-03、PD-BASE 仍保持 `in_progress`,计划计数不变。 + +## 125. 2026-08-05 TSN-03 Chrome 原生 PartDesign Groove history + +原生 OCCT history WASM 新增 `grooveHistory`/`grooveHistoryFromStep`:先以给定 axis origin/direction 和 `(0,360]` 角度围绕 profile Face 生成旋转切削体,再由 `BRepAlgoAPI_Cut` 收集 base/profile 的 `Modified/Generated/Deleted`。协议、Direct provider、双 Worker、Facade STEP bridge 与 `topologyHistory` 均声明 `groove`;对于内部切削在 OCCT 不提供可比较的逐面 `IsSame` 时,保留一个明确的 face-level summary history(Modified base face、Deleted profile face),不会返回空历史。新增 `makeRectangleFacePlaced` fixture 绑定,避免基体边界共面导致退化。 + +Chrome 150 真实回放使用 Bitbybit Geometry Worker 创建 10×10×8 原点盒体和内部 1×3 profile,执行 Groove(axis `[0,0,0]`、direction `[0,1,0]`、360°),再把 Bitbybit 导出的 Base/Profile STEP 交给原生 history Worker。结果 `structuralValid=true`、`structuralErrors=0`、1 solid、10 faces/18 edges/12 vertices、体积 `781.1504440784611`(`800 - 6π`);history 有 2 条关系(Base 1 modified、Profile 1 deleted),两侧 source 都出现。OPFS 标记文件创建、读取和删除通过,所有 ShapeHandle/kernel reference 最终为 `0/0`。Node native smoke 同时验证对象与 STEP 路径,原生 artifact hash 为 JS `b36b7c294ee293bae262593a751d15d7d4d4f52ee53d10de1370ff596469e231`、WASM `59c0bcc0ad48e0ea177ac65d792325ec4dd01557fc8741953d256550c31dbbf5`;`check:chrome-native-groove-history` 已纳入全量 `verify`。 + +该切片只覆盖单 profile、完整角度、内部切削的 Groove 子集;Two angles/Midplane、Support/AttachmentOffset、真实 TopoRef 迁移、局部坐标链和失败后保留上一有效 Shape 仍未完成。TSN-03、PD-BASE 继续保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 126. 2026-08-05 SK-07 Chrome 尺寸/参考/冲突诊断增量 + +Basic Sketch solver 增加 dimensional 诊断合同:`driving=false` 的 distance/distanceX/distanceY/radius/diameter/angle 会产生明确的 `REFERENCE_DIMENSION` 只读诊断,不参与求解或 DOF;同一几何/端点的同值 driving dimension 分类为 `REDUNDANT_CONSTRAINT`,不同值分类为带 constraintId 的 `CONSTRAINT_CONFLICT`。迭代结束时对每个残差超限的 driving 约束保留逐约束冲突信息,同时继续输出兼容的 `SOLVER_NOT_CONVERGED` 总诊断;未知几何、非法值和不支持约束仍保持 `invalid`。 + +Node Facade 回归、2000 模型/4000 solve fuzz 和 500 模型/1000 solve stress 均通过,stress 最大残差 `4.577566798522237e-16`、确定性摘要更新为 `edac8aed`。新增 Chrome 150 `chrome-sketcher-diagnostics-harness.html` 回放 FreeCAD 对照最小 fixture:reference 返回 `under-constrained`、3 DOF 且端点保持不变;同值 dimension 返回 `under-constrained + REDUNDANT_CONSTRAINT`;不同值 dimension 返回 `conflicting + CONSTRAINT_CONFLICT + SOLVER_NOT_CONVERGED`。Chrome 页面创建、读取并删除 OPFS marker,`check:chrome-sketcher-diagnostics` 已纳入全量 `verify`。 + +该增量只完善 Basic solver 的尺寸/参考分类和最小对照 fixture;完整 planegcs dimensional rank、单位/表达式驱动尺寸、冗余最小冲突集、FreeCAD 全量成功/失败 fixture 和几何/约束图仍未完成。SK-07、SK-06、SK-12 继续保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 127. 2026-08-05 SK-11 Chrome profile 校验增量 + +新增 `chrome-profile-validation-harness.html` 与对应 Chrome runner/checker,直接回放 Facade 的 `classifyPlanarProfile`/`validatePlanarProfile` 合同。Chrome 150 对闭合单环、开放环、多环孔、边自交、孔嵌套非法、非平面和退化共 7 类 profile 取得稳定分类:`closed`、`open`、`multi-ring`、`self-intersecting`、`invalid-nesting`、`non-planar`、`degenerate`;有效闭合/多环输入无异常,其他五类返回对应的 `open`、`self-intersecting`、`contained directly`、`coplanar`、`collinear` 错误文本。 + +Chrome 页面创建、读取并删除 OPFS marker(`suite=SK-11`、`cases=7`),报告 `crossOriginIsolated=true`,`check:chrome-profile-validation` 已纳入全量 `verify`。该证据只覆盖当前 Facade profile 分类/校验和最小错误矩阵;FreeCAD 全量 Sketcher profile fixture、复杂曲线环、Support/Attachment 消费方和 PartDesign 全模式仍未完成,SK-11、SK-06、SK-07、SK-12 继续保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 128. 2026-08-05 SK-09 Chrome 交互编辑器增量 + +新增 Chrome 150 `chrome-sketcher-editor-harness.html`,通过 Facade 回放事务化 drag、trim、extend、split、自动约束和 undo/redo 事件。带 Horizontal 约束的 drag 将端点从 `(5,1)` 拖至 `(8,2)` 后重求解为 `(8,0)`,源快照保持不变;split 在 `x=4` 保留稳定源 ID 并生成 `line-2`;extend/trim 分别得到 `x=15`/`x=7` 且不修改源;自动约束建议顺序稳定为 `coincident,horizontal` 并可一次性应用;事件回放报告 `applied=2`、`undone=1`、`redone=1`、最终端点 `x=6`。 + +Chrome 页面创建、读取并删除 OPFS marker(`suite=SK-09`、`operations=6`),`check:chrome-sketcher-editor` 已纳入全量 `verify`。该切片覆盖 Facade 事务和确定性回放,不宣称已经完成真实鼠标坐标/键盘焦点、任务面板交互、弧/圆/样条 trim、约束迁移全矩阵或 FreeCAD GUI 像素级一致;SK-09、SK-10、SK-11、SK-06、SK-07、SK-12 继续保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 129. 2026-08-05 SK-10 Chrome B-spline 编辑增量 + +新增 Chrome 150 `chrome-sketcher-bspline-harness.html`,通过 `editSketchBspline` 对同一稳定 ID 一次性回放 poles、weights、knots、degree、periodic:3 个 poles 的中点更新为 `(2,3)`,degree `2→1`,weights 为 `[1,0.5,1]`,knots 为 `[0,0,0.5,1,1]`,periodic 为 `true`;原始 Sketch 签名保持不变。无效 weight、knots、degree 均在事务提交前返回明确校验错误,失败不会污染源快照。 + +Chrome 页面创建、读取并删除 OPFS marker(`suite=SK-10`、`fields=5`),`check:chrome-sketcher-bspline` 已纳入全量 `verify`。该切片证明领域模型的 B-spline 编辑和原子校验,不宣称 planegcs 已支持 B-spline 求解、真实 GUI 控点拖拽、周期曲线重参数化或 FreeCAD 全量 B-spline 约束 fixture;SK-10、SK-09、SK-11、SK-06、SK-07、SK-12 继续保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 130. 2026-08-05 SK-12 Chrome Sketcher 黄金/压力增量 + +新增 Chrome 150 `chrome-sketcher-stress-harness.html`,使用与 Node stress 相同的 seed `539363331` 回放 500 个模型、1000 次 solve,五类 fixture 各 100 个;Chrome 报告 digest `edac8aed`、最大迭代 `64`、最大残差 `4.577566798522237e-16`、确定性不匹配 `0`、意外结果 `0`,运行耗时 `14.295ms`,未超过 2000ms 预算。状态分布为 under-constrained 400、conflicting 100、invalid 0,类别覆盖 constraints/conflict/redundant/reference/drag。 + +Chrome 页面创建、读取并删除 OPFS marker(`suite=SK-12`、`models=500`、`solves=1000`),`check:chrome-sketcher-stress` 已纳入全量 `verify`。该证据完成当前 Basic solver 的 Chrome 压力/确定性切片,不宣称 planegcs 全约束、B-spline 求解、FreeCAD 全量模型和真实 GUI 长会话已完成;SK-12 及 P04 其他任务仍保持 `in_progress`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 131. 2026-08-05 PART-ALL Chrome 原语增量 + +新增 Chrome 150 `chrome-part-primitives-harness.html`,通过 Bitbybit Geometry Worker 回放 Ellipsoid、Torus、Prism、Wedge、Helix 五种 Part 原语。前四项均返回非空三角网格和正体积(体积分别为 `100.48699804303837`、`98.69604401089352`、`41.569219381653056`、`120`);Helix 作为 wire 以 `linearLength=25.839014719433763` 验证。五个 ShapeHandle 在释放前为 `5/5`,释放后 `shapeCount/kernelReferenceCount=0/0`。 + +Chrome 页面创建、读取并删除 OPFS marker(`suite=PART-ALL`、`operations=5`),`check:chrome-part-primitives` 已纳入全量 `verify`。该切片补齐当前 Part 原语的 Chrome/资源门禁,不宣称完整参数边界、截断角度、局部坐标、FreeCAD 全量 primitive fixture 或 PartDesign 所有特征模式已完成;PART-ALL、PD-BASE、PD-LOFT、PD-DRESSUP、PD-TRANSFORM、PD-CLOSURE 继续保持原计划状态,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 132. 2026-08-05 FC-06 Chrome FCStd 语义 round-trip 增量 + +新增 Chrome 150 `chrome-fcstd-semantic-harness.html`,由 Facade 写入并读取 1761-byte FCStd metadata archive,覆盖 `Source`、`Spreadsheet`、`Cut`、`Sketch` 四对象;ExpressionEngine 恢复 `Spreadsheet.Width * 2`,Part Link 恢复 `Cut.Base=Source`,Sketch Support 的稳定 `TopoRef` 恢复为 `Source.Face1`,Sketch 几何 ID `profile` 保持不变。归档同时包含 `Front`/`Top` GuiDocument 视图和 20-byte BRep `Part/Source.Shape.brp`,ElementMap `1` 与 1 条映射条目均可检查;报告确认 expression/link/topo-ref 三类依赖语义和 OPFS 归档读取。 + +Chrome 页面创建、读取并删除 OPFS binary marker(`suite=FC-06`、`archiveBytes=1761`),`check:chrome-fcstd-semantic` 已纳入全量 `verify`。该切片覆盖 metadata、GuiDocument、BRep/ElementMap 和语义层的最小双向闭环,不宣称所有 LinkSubList、复杂 ExpressionEngine、格式导入导出和 FreeCAD 全量 FCStd fixture 已完成;FC-06、FC-04、FC-05、FC-08、FC-11 继续保持原计划状态,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 133. 2026-08-05 PD-TRANSFORM Chrome 文档生命周期增量 + +新增 Chrome 150 `chrome-partdesign-transform-harness.html`,通过 Facade 任务边界连续创建 `PartDesign::Mirrored`、`PartDesign::LinearPattern`、`PartDesign::PolarPattern`、`PartDesign::MultiTransform` 和 `PartDesign::Hole`。每一步都验证预览任务提交、Base 链接、Body.Tip 重定向、参数写入、异步重算和 ShapeHandle 保留;最终 Body.Tip 为 `hole`,5 个特征均为 `completed`。 + +Chrome 页面把 12 个对象保存到 SQLite OPFS 后加载并再次重算,版本 `29`、对象数 `12`、持久化模式 `sqlite-opfs`;同时创建、读取并删除 OPFS marker(`suite=PD-TRANSFORM`、`operations=5`)。5 个 ShapeHandle 在释放前为 `6/6`,`dispose()` 后 `shapeCount/kernelReferenceCount=0/0`,`check:chrome-partdesign-transform` 已纳入全量 `verify`。 + +该切片补齐文档级 whole-shape 变换和基础 Hole 的 Chrome/OPFS 生命周期证据,不宣称 FreeCAD 局部特征列表、Datum/TopoRef 轴面、单实体过滤、孔标准/螺纹完整语义或原生 OCCT 特征历史已完成;PART-ALL、PD-BASE、PD-LOFT、PD-DRESSUP、PD-TRANSFORM、PD-CLOSURE 继续保持原计划状态,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 +## 134. 2026-08-05 PD-LOFT Chrome 失败恢复与 OPFS 增量 + +新增 Chrome 150 `chrome-partdesign-loft-harness.html`,通过 Facade 创建带 `AttachmentOffset.z=6` 的第二截面并提交 `PartDesign::AdditiveLoft`;重算成功,`Profile=sketch`、`Sections=[sketch001]`、Body.Tip 为 `additive-loft`。随后注入重复截面,Chrome 返回 `LOFT_SECTIONS_DUPLICATE`,失败期间保留最近有效 Shape(Shape ID 不变),恢复链接后再次重算为 `completed`。 + +同一回放继续提交 `PartDesign::AdditivePipe` 的 Profile/Spine/Base 链。当前 Bitbybit 1.1.1 管线对该文档截面/路径组合返回明确 `GEOMETRY_EXECUTION_FAILED`,未产生 ShapeHandle,且 OPFS 保存/加载保留失败对象和版本 `42`;该失败被作为显式能力差异记录,而非静默成功。Chrome 页面创建、读取并删除 OPFS marker(`suite=PD-LOFT`、`operations=2`),失败后释放资源为 `0/0`,`check:chrome-partdesign-loft` 已纳入全量 `verify`。 + +该证据补齐 Additive Loft 的截面、失败恢复、重算和 OPFS 生命周期,并把当前 Additive Pipe 几何缺口固定为可诊断结果;不宣称 Pipe 的 Transition/Frenet/Auxiliary/多截面、Subtractive Loft/Pipe、FreeCAD 原生历史或完整特征模式已完成。PD-BASE、PD-LOFT、PD-DRESSUP、PD-TRANSFORM、PD-CLOSURE 继续保持原计划状态,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 135. 2026-08-05 SS-ALL Spreadsheet 核心合同与 Chrome OPFS 增量 + +新增 `facade/spreadsheet.ts`,提供规范 A1 地址、单位 Quantity、公式、Alias、对象属性绑定元数据、依赖边、循环诊断、样式、合并区域、命名范围、行列插入地址迁移和确定性 CSV 导出。Node 回归覆盖 `Width=6 mm`、`Length=Width*2`、单元格引用、重复 Alias 拒绝、B1/C1 循环、绝对地址规范化、绑定、样式/合并/命名范围迁移和非法地址;Spreadsheet 公式继续复用统一 Facade Quantity 表达式语义,不引入绕过 Bitbybit Facade 的页面入口。 + +新增 Chrome 150 `chrome-spreadsheet-harness.html`:`Width` 从 6 mm 更新到 8 mm 后 `Length` 从 12 mm 重算为 16 mm,并绑定到 `pad.Length`;Undo/Redo 分别恢复 12/16。Facade 表达式桥接 `Spreadsheet.Length + 1 mm` 得到 13 mm,循环 `C1↔D1` 显式诊断,CSV 为 2 行 4 列;同一回放验证 4 个样式单元格、命名范围 `A1:A3`、合并范围 `A1:C3` 和插入后公式地址 `A3`。绑定后的文档以 `sqlite-opfs` 保存/重开,版本 20、属性值 16;939-byte Spreadsheet snapshot 通过 OPFS 内容寻址资源写入、读取和释放,直接 OPFS marker(`cells=9`)也完成创建、读回和删除,ShapeHandle/kernel reference 最终为 `0/0`。`check:chrome-spreadsheet` 和 `test:spreadsheet` 已纳入全量 `verify`。 + +该切片推进 SS-ALL 的 Cell/Formula/Alias/Binding/Style/Merge/NamedRange/RowColumn/CSV 和循环诊断,不宣称 XLSX、真实表格 UI、大表性能或完整 FreeCAD Spreadsheet oracle 已完成;SS-ALL 与 DOC-CLOSURE 保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 136. 2026-08-05 PLOT-ALL 数据绑定与 Chrome OPFS 导出增量 + +新增 `facade/plot.ts`,提供多 Series、线型样式、线性 Axis、Legend、Spreadsheet/结果源 Binding、绑定数据更新,以及确定性 SVG/CSV 导出。领域边界拒绝空/非有限序列、非法色值/线宽/虚线、倒置轴范围、未绑定更新和超限 SVG 尺寸;Node 回归覆盖绑定后的三点更新和导出。 + +新增 Chrome 150 `chrome-plot-harness.html`:从 Spreadsheet A1:A3/B1:B3 读取 0/1/2 与 6/12/16 mm,绑定 `length` 序列,并与虚线 `target` 序列共同导出 640×360 SVG 和 CSV。重复 SVG 导出字节完全一致,SVG 为 1031 bytes、2 条 path、包含 `role=img`/aria-label,SHA-256 为 `2183f0d048c9689f8865f11e2964e994c44cb1f7c03e382d7c1b99c805eba2a2`;CSV 为 156 bytes、7 行,SHA-256 为 `5879d47bdda947b5432ef38a03a6e8299cdb4e90cfea0370e398833a9c01244a`。两份导出均通过 SQLite/OPFS 内容寻址资源写入、读回和释放,直接 OPFS marker 也完成创建、读取和删除,最终 ShapeHandle/kernel reference 为 `0/0`。`check:chrome-plot` 与 `test:plot` 已纳入全量 `verify`,兼容矩阵将 Spreadsheet/Plot 标为 `domain-contract/experimental`,不再错误登记为纯 scope-only。 + +该切片推进 PLOT-ALL 的 Series/Axis/Legend/Style/Binding/SVG/CSV,不宣称 PNG 等位图导出、结果工作台适配、实时 UI、FreeCAD Plot Python 行为 oracle 或大数据性能已完成;PLOT-ALL 和 DOC-CLOSURE 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 137. 2026-08-05 DRAFT-BASE/DRAFT-OPS 参数对象与 Chrome OPFS 增量 + +新增 `facade/draft.ts`,提供正交归一工作平面、网格间距与捕捉、二维 Line/Wire/Circle 参数对象、Layer,以及 Move/Rotate/Scale、Line Offset、Clone、二维 Array 和 Layer 重绑定。Clone/Array 只保存 `sourceId`、平移、旋转、比例和 layer,不烘焙独立几何;工作平面映射返回稳定 3D 坐标,所有非法平面、退化线、非法半径、数组上限和不支持 Offset 类型均显式拒绝。 + +Chrome 150 `chrome-draft-harness.html` 回放工作平面 `origin=(10,20,30)`、正交轴、0.5 网格(`(1.24,2.26)→(1,2.5)`),世界坐标 `(2,3)→(10,22,33)`;创建 9 个对象(2 Line、1 Wire、1 Circle、1 Offset、1 Clone、4 Array),完成 Move/Rotate/Scale,Offset 长度 8,5 个对象保留 `sourceId=line`,2 个 Layer 持久存在。1567-byte Draft snapshot 通过 SQLite/OPFS 内容寻址资源写入、读回和释放,直接 OPFS marker 创建、读取和删除,ShapeHandle/kernel reference 最终为 `0/0`;`check:chrome-draft` 与 `test:draft` 已纳入全量 `verify`,兼容矩阵将 Draft 标为 `domain-contract/experimental`。 + +该切片推进 DRAFT-BASE/DRAFT-OPS 的参数对象和资源边界,不宣称 Draft 全部曲线/墙体/文本、复杂 Offset/Trim、真实 GUI 工作平面交互、FreeCAD Python oracle、Bitbybit Shape 生成或完整 `.FCStd` 工作台闭环已完成;DRAFT-BASE、DRAFT-OPS、DOC-CLOSURE 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 138. 2026-08-05 TD-ALL TechDraw 页面/投影/标注与 Chrome OPFS 增量 + +新增 `facade/techDraw.ts`,提供 Page 尺寸、稳定 TopoRef 点/边源、正投影 View、Section View、Dimension、Annotation 和确定性 SVG 页面导出。源 `revision` 必须递增;更新时按 persistent ID 重新投影和重算尺寸,旧点删除会进入 `unresolved`,不会静默绑定到新的索引;法向、缩放、尺寸、源点/边和重复 ID 均有边界拒绝。 + +Chrome 150 `chrome-techdraw-harness.html` 回放 Front 与 Section 两个 View、1 个 Dimension、1 个 Callout Annotation:源长度从 4 更新到 6 后 Dimension 为 6,删除 `Vertex3` 后两 View 汇总 `unresolvedRefs=[Vertex3]`。页面 SVG 为 549 bytes、2 条可见边、带 `role=img`/aria-label,SHA-256 为 `ef240c4ee443e4386a80b001621c75424c9a8d75707f5cb3a5c3a65298274c97`,重复导出字节一致;SVG 与 1644-byte TechDraw snapshot 均通过 SQLite/OPFS 内容寻址资源写读释放,直接 OPFS marker 创建、读取和删除,ShapeHandle/kernel reference 为 `0/0`。`check:chrome-techdraw` 与 `test:techdraw` 已纳入全量 `verify`,兼容矩阵将 TechDraw 标为 `domain-contract/experimental`。 + +该切片推进 TD-ALL 的 Page/View/Section/Dimension/Annotation/TopoRef 更新和 SVG 资源边界,不宣称复杂投影算法、剖切实体几何、GD&T、模板、PDF、真实 GUI 页面编辑或 FreeCAD TechDraw oracle 已完成;TD-ALL 与 DOC-CLOSURE 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 139. 2026-08-05 ASM-CORE 组件/连接器/约束求解增量 + +新增 `facade/assembly.ts`,提供参数化组件(sourceObjectId、Placement、Grounded)、连接器局部原点/轴、Fixed/Coincident/Concentric/Distance/Angle 约束、确定性有限迭代平移求解、Ground 冲突与缺失连接器诊断。距离约束在重合后使用连接器轴作为零距离方向,快照返回深拷贝,非法轴、角度和同组件约束在提交前拒绝;该合同不伪造完整刚体 6-DOF 求解器。 + +新增 Chrome 150 `chrome-assembly-harness.html`:通过 Bitbybit Geometry Worker 创建 Base/Shaft 两个 Box,Assembly 将 Base 固定、Shaft 先重合再保持 5 mm 距离;2 个 Joint 均为 `solved`,迭代数 `2`,Shaft X 为 `5`,诊断数为 `0`。848-byte Assembly snapshot 通过 SQLite/OPFS 内容寻址资源写入、读回和释放,直接 OPFS marker(`suite=ASM-CORE`、`components=2`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-assembly` 与 `test:assembly` 已纳入全量 `verify`。 + +该切片推进 `ASM-CORE` 的组件、连接器、基础约束和资源边界,不宣称 Assembly 的完整旋转/运动求解、碰撞与干涉、BOM/Exploded View、变体、大装配性能、FreeCAD Assembly oracle 或 FCStd 工作台闭环已完成;`ASM-CORE`、`ASM-TOOLS`、`ENG-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 140. 2026-08-05 MESH-CORE 网格规范化/质量与 OBJ 增量 + +新增 `facade/mesh.ts`,提供来自 Bitbybit MeshAsset 的规范顶点/三角形快照、坐标焊接、退化三角形清理、边界/非流形/面积/包围盒质量分析、平移缩放和确定性 OBJ 导出,并提供最小三点孔洞三角修补合同;非法索引、非有限点、错误容差和重复修补边均显式拒绝。 + +新增 Chrome 150 `chrome-mesh-harness.html`:通过 Bitbybit Geometry Worker 创建 `10×8×4` Box 并生成网格,焊接 24 个重复面顶点为 8 个共享顶点,得到 12 个三角形、0 边界边、0 退化三角形、面积 `304`;平移/缩放后包围盒最小点为 `[-6.5,-1,-3]`,OBJ 为 340 bytes、SHA-256 `5e92b07b682e0a4a0133b556494a2c11cacf97ed901579efde985dd270a1213a`。259-byte Mesh snapshot 通过 SQLite/OPFS 内容寻址资源往返和释放,直接 OPFS marker(`suite=MESH-CORE`、`triangles=12`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-mesh` 与 `test:mesh` 已纳入全量 `verify`。 + +该切片推进 `MESH-CORE` 的三角网格规范化和基础修复,不宣称完整 Mesh/MeshPart 算法(高级 hole filling、remesh、decimation、self-intersection repair)、曲率/法向工具、PLY/STL 全量 round-trip、实时 GUI 或 FreeCAD Mesh oracle 已完成;`MESH-CORE` 与 `ENG-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 141. 2026-08-05 INSP-ALL 几何质量/测量/依赖报告增量 + +新增 `facade/inspection.ts`,提供结构有效 Shape 注册、Bitbybit 质量报告投影、点距、向量夹角、面积/体积测量、缺失依赖检查和确定性 CSV 报告。非法/退化向量返回 `invalid` 测量,非有限或负质量、非法边界和结构无效 Shape 在注册时拒绝;快照和依赖列表均隔离复制。 + +新增 Chrome 150 `chrome-inspection-harness.html`:通过 Bitbybit Geometry Worker 创建 `4×5×6` Box,质量报告为 1 solid,点距为 `5 mm`,夹角为 `90 deg`,体积/面积直接来自 Bitbybit MassProperties,CSV 为 4 条测量记录。Inspection snapshot 通过 SQLite/OPFS 内容寻址资源读写释放,直接 OPFS marker(`suite=INSP-ALL`、`measurements=4`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-inspection` 与 `test:inspection` 已纳入全量 `verify`。 + +该切片推进 `INSP-ALL` 的测量、质量和依赖诊断基础,不宣称完整剖面/截面比较、GD&T、容差带、点云偏差、批量报告模板、实时 GUI 或 FreeCAD Inspection oracle 已完成;`INSP-ALL`、`PLATFORM-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 142. 2026-08-05 BIM-CORE/BIM-IFC 层级材料与最小 IFC 增量 + +新增 `facade/bim.ts`,提供 Level、Space、Material、Wall/Structure/Window 等 Element 的层级引用、属性和数量、材料绑定、数量表及确定性 IFC STEP 文本导出。元素必须引用有效 Level、可选 Space/Material 和 Bitbybit `shapeId`,负数量、重复对象和失效层级链接在提交前拒绝;IFC 导出明确为最小 `IfcBuildingStorey/IfcSpace/IfcBuildingElementProxy` 合同,不伪造完整 IFC 几何实体。 + +新增 Chrome 150 `chrome-bim-harness.html`:通过 Bitbybit Geometry Worker 创建 Box 作为 Wall 的 Shape,建立 Ground Level、Plant room、Concrete 材料和 1 个 Wall,数量表 1 行,IFC 文本包含 3 类实体。模型 snapshot 通过 SQLite/OPFS 内容寻址资源往返和释放,直接 OPFS marker(`suite=BIM-CORE`、`elements=1`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-bim` 与 `test:bim` 已纳入全量 `verify`。 + +该切片推进 `BIM-CORE/BIM-IFC` 的对象层级、材料、数量和最小导出边界,不宣称 IFC2x3/IFC4 完整 schema、真实 IfcProduct 几何、分类/PropertySet 全覆盖、门窗族、碰撞/空间分析、实时 GUI 或 FreeCAD BIM oracle 已完成;`BIM-CORE`、`BIM-IFC`、`ENG-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 143. 2026-08-05 CAM-ALL Job/Stock/Tool/Path/Simulation 增量 + +新增 `facade/cam.ts`,提供 CAM Job 的 Stock 边界、Tool、Profile/Pocket/Contour Operation、矩形路径生成、路径越界碰撞诊断和确定性 G-code 导出。刀具/进给/深度、重复对象和 Stock 范围均有边界校验;没有生成路径或路径越界时 Simulation 返回 `collision`,G-code 不会静默导出。 + +新增 Chrome 150 `chrome-cam-harness.html`:通过 Bitbybit Geometry Worker 创建 `5×2×3` Box 作为 Job 目标,建立 1 把刀具和 1 个 Profile Operation,生成 5 点闭合矩形路径;Simulation 为 `pass`、碰撞数 `0`,G-code 非空。CAM snapshot 通过 SQLite/OPFS 内容寻址资源往返和释放,直接 OPFS marker(`suite=CAM-ALL`、`operations=1`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-cam` 与 `test:cam` 已纳入全量 `verify`。 + +该切片推进 `CAM-ALL` 的 Job/Stock/Tool/Operation/Simulation/G-code 基础边界,不宣称完整刀路算法、3/5 轴运动学、真实材料去除仿真、碰撞几何、后处理器、刀具库、FreeCAD Path oracle 或生产 CAM 安全门禁已完成;`CAM-ALL`、`PLATFORM-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 144. 2026-08-05 FEM-ALL 材料/网格/载荷/参考求解增量 + +新增 `facade/fem.ts`,提供 Material(Young modulus/Poisson ratio)、Node 网格、固定节点、节点载荷、确定性一维杆参考求解、位移/应力结果和 CSV 导出。材料、节点、载荷和求解输入有边界校验;未准备完整分析时返回 `invalid`,不伪造通用有限元刚度矩阵或外部 solver。 + +新增 Chrome 150 `chrome-fem-harness.html`:通过 Bitbybit Geometry Worker 创建 `10×2×2` Box 作为分析来源,2 节点钢材参考杆在 `100 N` 载荷下得到最大位移 `0.00125`、最大应力 `25`,结果 CSV 非空。FEM snapshot 通过 SQLite/OPFS 内容寻址资源往返和释放,直接 OPFS marker(`suite=FEM-ALL`、`nodes=2`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-fem` 与 `test:fem` 已纳入全量 `verify`。 + +该切片推进 `FEM-ALL` 的材料、网格、载荷、参考求解和结果边界,不宣称完整 3D FEM 单元、网格生成/质量、接触/非线性/热分析、真实 solver Worker、VTK 结果、FreeCAD FEM oracle 或工程安全验证已完成;`FEM-ALL`、`PLATFORM-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 145. 2026-08-05 ROBOT-ALL 关节限位/Waypoint/轨迹增量 + +新增 `facade/robot.ts`,提供关节最小/最大限位、Waypoint 校验、分段线性轨迹生成、轨迹越界诊断和 CSV 导出。Waypoint 必须覆盖完整关节集合且不能越限;轨迹生成要求至少两个点,步数上限固定,越限轨迹不会标记为 `generated`。 + +新增 Chrome 150 `chrome-robot-harness.html`:通过 Bitbybit Geometry Worker 创建 Box 作为工件引用,建立 3 个关节、Home/Pick 两个 Waypoint,生成 5 个姿态且 0 个限位违反,CSV 非空。Robot snapshot 通过 SQLite/OPFS 内容寻址资源往返和释放,直接 OPFS marker(`suite=ROBOT-ALL`、`poses=5`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-robot` 与 `test:robot` 已纳入全量 `verify`。 + +该切片推进 `ROBOT-ALL` 的关节/轨迹/导出基础边界,不宣称完整机器人模型、逆/正运动学、碰撞/奇异位形、控制器通讯、真实仿真、后处理或 FreeCAD Robot oracle 已完成;`ROBOT-ALL`、`PLATFORM-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 146. 2026-08-05 DATA-ALL 专业数据模块适配器清单增量 + +新增 `facade/dataModules.ts`,为 Points、ReverseEngineering、OpenSCAD、IDF、JtReader、Material、Import 建立显式 adapter descriptor、允许格式、操作清单、supported/proxy 能力级别、8 MiB 输入边界、记录删除和确定性 manifest。当前 Material/Import 标记为领域合同,其他五项明确为 read-only proxy;未知格式、空输入、超限输入和重复记录均拒绝,不把登记清单伪装成真实几何适配器。 + +新增 Chrome 150 `chrome-data-harness.html`:七类模块各回放一个最小记录,得到 2 个 supported、5 个 proxy 和 7 条 manifest 记录。Data snapshot 通过 SQLite/OPFS 内容寻址资源往返和释放,直接 OPFS marker(`suite=DATA-ALL`、`records=7`)创建/读回/删除,最终 ShapeHandle/kernel reference 为 `0/0`;`check:chrome-data` 与 `test:data` 已纳入全量 `verify`。 + +该切片推进 `DATA-ALL` 的模块登记、格式边界和 proxy 可诊断性,不宣称 Points 点云处理、Reverse Engineering 拟合、OpenSCAD 执行、IDF/JT 语义解析、完整 Material 卡或批量 Import 已完成;`DATA-ALL`、`ADDON-ALL`、`SCRIPT-ALL`、`PLATFORM-CLOSURE` 继续保持 `pending`,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 147. 2026-08-05 TSN-03 Chrome 原生 PartDesign Fillet history + +原生 OCCT history 增加 `fillet` 单输入协议字段 `radius`、Worker 请求映射和 `BRepFilletAPI_MakeFillet` 实现;构建清单启用 `TKFillet` 与 `TKBool` 依赖。Node smoke 通过 STEP round-trip,Box 全边圆角返回 150 条关系(6 modified、72 generated、72 deleted),结果为有效 1 solid。Chrome 150 真实回放由 Bitbybit Geometry Worker 创建 Box 并执行 Fillet,再将 Base STEP 交给独立 native history Worker;Facade 映射只保留稳定源对象/子形状关系,OPFS marker 创建、读取、删除通过,runtime ShapeHandle/kernel reference 最终为 `0/0`,结果体积 `215.79398223686158`。 + +`test:chrome-native-fillet-history` 和 `check:chrome-native-fillet-history` 已纳入全量 `verify`,Chrome 报告记录 provider `occt-native.history-step`、OCCT `8.0.0` 和 `step-text` transport。该切片只覆盖全边固定半径 Fillet history;选边半径、可变半径、Chamfer/Draft/Thickness、Support/AttachmentOffset、稳定 TopoRef 迁移和 Body/Tip 自动重算仍未完成,TSN-03、PD-DRESSUP、PD-CLOSURE 继续保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 148. 2026-08-05 TSN-03 Chrome 原生 PartDesign Chamfer history + +在已构建的 `TKFillet/TKBool` 链上增加 `BRepFilletAPI_MakeChamfer`,协议新增单输入 `chamfer` 与有限正数 `distance`,Direct provider、Dedicated Worker、STEP bridge 和 Bitbybit GeometryRuntime 均显式声明并路由该操作。共享 dress-up collector 逐源子形状读取 `Modified/Generated/IsDeleted`,Node smoke 的 6×6×6 Box 全边 0.4 Chamfer 得到 150 条关系(6 modified、72 generated、72 deleted)、有效 1 solid 和体积 `210.5813333333333`。 + +Chrome 150 真实回放通过 Bitbybit Geometry Worker 执行单边 Chamfer,并经原生 Worker 回放 Base STEP 的全边 Chamfer history;Chrome 结果为有效 1 solid、体积 `215.52000000000004`,OPFS marker 创建/读取/删除通过,ShapeHandle/kernel reference 最终 `0/0`。`check:chrome-native-chamfer-history` 已纳入全量 `verify`。该切片不宣称选边 transport、双距离/距离角度 Chamfer、Draft/Thickness、TopoRef 自动迁移或完整 PartDesign 重算闭环已完成,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 149. 2026-08-05 TSN-03 Chrome 原生 PartDesign Hole history + +原生 history Worker 增加 `hole` 单输入协议,显式传递 `radius`、`depth`、`position` 和 `direction`;OCCT 通过 `BRepPrimAPI_MakeCylinder` 创建定向圆柱刀具,再以 `BRepAlgoAPI_Cut` 生成真实孔切削及逐源 Modified/Generated/Deleted 关系。Node smoke 通过 STEP round-trip:10×10×10 Box 的半径 1、深度 10 直孔返回有效 1 solid、8 条关系(6 modified、0 generated、2 deleted),原生结果体积 `996.0730091830127`。 + +Chrome 150 真实回放由 Bitbybit Geometry Worker 创建工件和圆柱 Profile,运行时 Cut 结果与原生 Worker 的 Hole history 分离验证;报告为有效 1 solid、体积 `968.584073464102`,6 modified/2 deleted,OPFS marker 创建/读取/删除通过,ShapeHandle/kernel reference 最终 `0/0`。`test:chrome-native-hole-history` 和 `check:chrome-native-hole-history` 已纳入全量 `verify`,artifact hash 同步到兼容矩阵和 OCCT drift baseline。该切片只覆盖显式位置/方向的圆柱直孔,不宣称 Threaded、Counterbore、Countersink、Through-all、面 Support、AttachmentOffset、选边 transport 或完整 PartDesign Hole history;TSN-03、PD-TRANSFORM、PD-CLOSURE 继续保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 150. 2026-08-06 TSN-03 原生历史接入重算与应用 Worker + +重算引擎现在把全边 `Part/PartDesign Fillet`、全边 `Chamfer` 和基础圆柱直孔的 native history 结果送入稳定 TopoRef 快照;选边 dress-up、复杂孔参数和没有严格几何对应的特征继续使用签名历史,避免把全边 OCCT 关系错误套用到局部结果。基础有限深度 Hole 在生产 Bitbybit runtime 中改用真实圆柱刀具 + Cut,测试桩没有 native history 接口时保留原有 Pocket 路径。 + +应用入口默认创建 `NativeOcctHistoryWorkerProvider`,将原生 Worker 的初始化、失败提示和释放纳入 Facade 生命周期;Chrome app E2E、生产构建和 Facade 159 项回归通过。该接线只宣称已验证的 native history 子集,未把默认 Worker 可用性当作 TSN-03 完成,计划仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 151. 2026-08-06 QA-06 native OCCT Worker 故障注入扩展 + +在既有 Chrome QA-06 harness 中增加真实 `NativeOcctHistoryWorkerProvider` 包装器:初始化原生 OCCT JS/WASM 后注入 Worker 终止,确认 provider 进入 `unavailable`、自动创建替代 Worker 并重新初始化为 `available`。Chrome 报告记录 native Worker factory `2` 个实例、`nativeCrashInjected=true`、`nativeRecoveredAvailable=true`;原有 planegcs Worker 取消、崩溃恢复和 stale 结果继续保持通过。 + +故障注入 server 补充同源 `/native/occt-history/` JS/WASM 路由,OPFS 0 字节标记仍完成创建、读取、删除,planegcs/native Worker 在 dispose 后分别回收 `3/3` 与 `2/2`。该证据关闭 QA-06 的 native history Worker 崩溃恢复子项;电源断电、SQLite VFS 写入中断和跨版本数据降级仍未宣称完成,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 152. 2026-08-06 REL-02/QA-06 OPFS 迁移提交前中断彩排 + +SQLite/OPFS persistence Worker 增加仅供迁移彩排使用的 `migrationInterruptAfterVersion` 注入点:目标版本的 DDL 与 `schema_migrations` 标记已经执行、但事务尚未提交时抛出错误。Chrome 150 从真实 schema v1 OPFS 数据库迁移时在 v3 注入中断,初始化按预期拒绝;独立 inspector 随后只读到原有版本 `[1]`,证明 v3 的结构和迁移标记没有部分提交。 + +同一 Chrome 回放在移除注入后完成 v1→v6,保留 1 个文档对象、资源内容和 checkpoint;迁移后与重开后的 integrity check 均为 `ok`,文档版本从 3 更新到 4,内容寻址资源完成读回和释放,隔离的 SQLite 文件最终从 OPFS 删除。`test:chrome-opfs-migration` 与 `check:chrome-opfs-migration` 覆盖上述证据。 + +该切片验证确定性的事务提交前中断,不等同于操作系统断电、浏览器进程在 SQLite VFS journal I/O 中被硬杀或旧版本程序执行降级;这些真实破坏与回滚彩排仍属于 REL-02/QA-06 剩余工作。计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 153. 2026-08-06 TSN-03 原生 PartDesign Draft history + +原生 history WASM 增加 `TKOffset` 与 `BRepOffsetAPI_DraftAngle`,协议显式传递单个 face index、角度、拔模方向、中性面原点/法向和 Reversed;Direct provider、Dedicated Worker 与显式 Bitbybit runtime bridge 均只接受一个 face index。Node STEP smoke 的 10×10×10 Box 返回 5 条原生关系并保持有效单实体;Facade 新增请求映射回归,总计 160/160 通过。 + +Chrome 150 由 Bitbybit Geometry Worker 创建并执行单面 Draft,经 STEP 交给独立 native history Worker 回放:返回 5 条关系(4 modified、1 generated、0 deleted)、有效 1 solid、体积 `63.999999999999986`;OPFS marker 创建/读取/删除通过,Bitbybit ShapeHandle/kernel reference 最终为 `0/0`。原生 JS/WASM SHA-256 更新为 `24a169bf8ba9514c7efec2c3fca078c6ec51ab94b23dd87307a9298fa6d039b4` 与 `953e5af0e2849f0cf6a11515d00e1c348ae4af68b378e95c5bba9cfeee21ea4b`。 + +复核确认早期跨 WASM 失败来自角度单位错误:`BRepOffsetAPI_DraftAngle` 接收弧度,协议接收 FreeCAD/Bitbybit 的角度。修正 degree→radian 后,Chrome 已由 Bitbybit 创建并执行 5° Draft、导出 STEP,再由原生 Worker 成功回放;Bitbybit 结果体积为 `63.999999999999986`。一个已解析稳定 face TopoRef 的 PartDesign Draft 现在接入自动 native history,多面/切面传播继续回退签名历史。多面完整映射、完整 FreeCAD Draft oracle和 Thickness 仍是 `TSN-03/PD-DRESSUP` 剩余工作。计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 154. 2026-08-06 TSN-03 原生 PartDesign Thickness history + +原生 history WASM 增加 `BRepOffsetAPI_MakeThickSolid` 单移除面合同,协议传递 face index、有限非零 offset 与 Arc/Intersection join;Direct provider、Dedicated Worker、Bitbybit runtime bridge 和单稳定 RemoveFaces TopoRef 自动重算均已接线。Node smoke 的 6×6×6 Box、-0.4 Arc Thickness 返回有效 1 solid、38 条关系和体积 `64.57600000000008`。 + +Chrome 150 由 Bitbybit 创建并执行同一 Thickness,再以 STEP 交给原生 Worker:原生返回 38 条关系(1 modified、37 generated、0 deleted)、有效 1 solid,原生与 Bitbybit 体积均为 `64.57600000000002`;OPFS marker 完成创建/读取/删除,ShapeHandle/kernel reference 最终 `0/0`。Bitbybit 自身质量报告仍为 `structuralValid=false`,该差异被显式保留,未伪装成完全有效。原生 JS/WASM SHA-256 为 `d820099a48b49b9c0265b7c796eb56475048aac9c12ea74a0598ad9cf7dae0b1` 与 `00f08a4f6db36801b4e3ef023bf664eac4f122c4b055cd9e90c747e5d956ddf0`。 + +该切片不宣称多移除面、正 offset、Intersection 全矩阵、自交修复、完整 FreeCAD Thickness oracle 或 Bitbybit 结构质量差异已闭环;`TSN-03/PD-DRESSUP` 继续保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 155. 2026-08-06 TSN-03 原生 LinearPattern history + +原生 history Worker 增加两实例 Whole shape LinearPattern:读取单一 Base STEP,以有限非零平移向量生成副本,再通过 `BRepAlgoAPI_Fuse` 返回原件/副本两路 Modified/Generated/Deleted。Facade 自动 history 只在 Occurrences=2、无第二方向、无自定义 spacing list 时启用;更复杂模式继续使用签名 history。 + +Chrome 150 通过 Bitbybit 创建 2×2×2 Base、平移 1 并 Union,原生 Worker 返回 66 条关系(64 modified、0 generated、2 deleted);Bitbybit/原生体积为 `12`/`11.999999999999995`,原生结果有效 1 solid,OPFS marker 删除且资源最终 `0/0`。Bitbybit Fuse 质量仍报告 `structuralValid=false`,差异被保留。新 WASM SHA-256 为 `5ba87ae140761b3d8cde90dcd0dbc407ae3bc9ddc94b40880eea7fd6cb62d0dc`。 + +该切片不宣称三实例以上、双方向、SpacingPattern、非融合结果、Feature-list 局部变换或 PolarPattern 已完成;`TSN-03/PD-TRANSFORM` 保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 156. 2026-08-06 TSN-03 原生 PolarPattern history + +原生 history Worker 增加两实例 Whole shape PolarPattern:协议传递轴原点、轴方向和角度,OCCT 以 `BRepBuilderAPI_Transform` 生成旋转副本并 Fuse,返回两路原生历史。Facade 自动 history 仅覆盖 Occurrences=2、无自定义 Spacings/SpacingPattern 的单轴子集,其他模式继续使用签名 history。 + +Chrome 150 对中心 2×1×1 Box 绕 Z 轴 90° 回放:原生 Worker 返回 68 条 modified 关系,Bitbybit/原生体积为 `3`/`3.0000000000000004`,原生结果有效 1 solid;OPFS marker 删除且资源最终 `0/0`。Bitbybit Fuse 的 `structuralValid=false` 继续作为显式兼容差异。原生 JS/WASM SHA-256 为 `002ffbf60e8a14d6f5f7061cb3373e2ea55c25082c85721f2686497b8ade6ad0` 与 `ea82356e89ba66a43f3f104a94b9901defaacf92cc704f5f2492e5a3c7678f57`。 + +三实例以上、SpacingPattern、任意轴 Support、Feature-list 局部变换和 MultiTransform 原生历史仍未闭环;`TSN-03/PD-TRANSFORM` 保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 157. 2026-08-06 TSN-03 原生 Mirrored history + +原生 history Worker 增加单 Base、Whole shape、融合结果的 Mirrored 子集:协议显式传递镜像平面原点和法向,OCCT 以 `gp_Trsf::SetMirror(gp_Ax2)` 生成镜像副本并通过 `BRepAlgoAPI_Fuse` 返回原件/副本两路 Modified/Generated/Deleted。Facade 自动 history 仅在 `Originals` 为空、`Fuse=true`、Whole shape 且使用 XY/XZ/YZ 文档基准面时启用;多源、非融合和其他变换模式继续使用签名 history。 + +Chrome 150 由 Bitbybit 创建横跨 YZ 平面的 2×1×1 Box、执行 mirror 与 Union,再经 STEP 交给原生 Worker 回放:返回 66 条关系(64 modified、0 generated、2 deleted),Bitbybit/原生体积为 `3`/`2.999999999999999`,原生结果有效 1 solid;OPFS marker 完成创建、读取、删除,ShapeHandle/kernel reference 最终为 `0/0`。Bitbybit Fuse 的 `structuralValid=false` 继续作为显式兼容差异。原生 JS/WASM SHA-256 为 `667cd5197a6a2d424c024b7f91e155d01e98e50f0490727b78b3cd3aed90b033` 与 `5cfaa223915bd1ef1b05387c219799218e326b716d51e9f1f5431fa533cb9f56`。 + +Feature-list 局部镜像、任意 Support/AttachmentOffset 平面、非融合结果、多个 Originals 和 MultiTransform 原生历史仍未闭环;`TSN-03/PD-TRANSFORM` 保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 158. 2026-08-06 TSN-03 单步骤 MultiTransform 原生 history + +原生 history 协议增加 `multi-transform` 特征级操作与 `transformKind`,对恰好一个二实例 linear、polar 或 mirrored Whole shape 步骤复用已经通过 Node/Chrome 验证的 OCCT 绑定。Facade 自动 history 只在单 Base、空 `Originals`、Whole shape、单步骤且实例数为 2 时启用;有序多步骤、多实例和 Feature-list 图继续回退签名 history,避免丢失中间实例到最终子形状的来源关系。 + +Chrome 150 回放单 linear 步骤:Bitbybit 创建 2×2×2 Base、平移 1 并 Union,原生 Worker 接收 `operation=multi-transform`、`transformKind=linear` 后返回 66 条关系(64 modified、0 generated、2 deleted);Bitbybit/原生体积为 `12`/`11.999999999999995`,原生结果有效 1 solid。OPFS marker 记录特征与步骤类型并完成删除,ShapeHandle/kernel reference 最终为 `0/0`;Bitbybit Fuse 的 `structuralValid=false` 仍保留为兼容差异。 + +两个以上有序步骤、三实例以上、Feature-list 局部变换、任意 Support/AttachmentOffset 轴面和完整 FreeCAD MultiTransform oracle 尚未闭环;`TSN-03/PD-TRANSFORM` 保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 159. 2026-08-06 TSN-03 有序多步骤 MultiTransform 原生 history + +原生 OCCT WASM 增加 `multiTransformHistoryFromStep(baseStep, steps)`,接受 2–6 个二实例 linear、polar 或 mirrored Whole shape 步骤。每一步对当前全部父实例创建新实例,并通过 `BRepBuilderAPI_Transform::ModifiedShape` 保存从原始 Base 子形状到新实例子形状的映射;最终以多参数 `BRepAlgoAPI_Fuse` 一次合并全部实例,再将每个参数的 Modified/Generated/IsDeleted 去重聚合回 Base source index。该实现不再只保留最后一次 Boolean 的历史。 + +Node smoke 与 Chrome 150 都回放 linear 后 mirrored 的两步图:1 个 Base 扩展为 4 个实例,最终有效单实体体积为 `5`。Chrome 原生 Worker 返回 311 条来源关系(88 modified、222 generated、1 deleted),Bitbybit/原生体积为 `4.999999999999999`/`4.999999999999998`;OPFS marker 记录有序步骤并完成删除,ShapeHandle/kernel reference 最终 `0/0`。原生 JS/WASM SHA-256 更新为 `19dba01de37ba5f225f85d5ca5247e2e91cb0241c7b7f372f06862cca5c91ea9` 与 `bd400e38977c5269dbfddb5dcf484794ba5a814b7dc7ff1547ceaa5fa1e45fe5`。 + +当前原生有序图仍限制每步二实例、最多 6 步和 Whole shape;三实例以上、Feature-list 局部变换、任意 Support/AttachmentOffset 轴面以及完整 FreeCAD MultiTransform oracle 仍未闭环。`TSN-03/PD-TRANSFORM` 保持进行中,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 160. 2026-08-06 TSN-03 两截面 Part::Loft 原生 history + +原生 OCCT history 增加 `BRepOffsetAPI_ThruSections` 两截面实体 Loft 合同:两个 Bitbybit STEP profile 分别作为 `object` 和 `tool` 输入,按顶点/边采集真实 Generated 结果,返回可映射到两侧 Sketch TopoRef 的记录。Facade 自动接线只覆盖 `Part::Loft`、恰好两个截面、Solid、非 Closed、非 Linearize、默认 MaxDegree 的独立放样;Additive/Subtractive Loft、三截面以上、闭合、导轨/Frenet/transition 和 Base 融合/切除仍明确回退签名 history。 + +Node smoke 对两个 2×2 矩形截面(Z=0 与 Z=5)返回有效单实体、体积 `20`、24 条 Generated 记录,且两侧来源均存在。Chrome 150 以 Bitbybit 导入/放样并导出 STEP,经 Dedicated native Worker 回放同一合同:24 条 Generated、两侧来源齐全、Bitbybit 单实体体积 `20`;OPFS marker 完成创建、读取、删除,ShapeHandle/kernel reference 最终 `0/0`。Bitbybit loft 质量报告仍为 `structuralValid=false`,不据此宣称其结构有效。 + +原生 JS/WASM SHA-256 更新为 `d427666c4d25e281b6a969da49eabe421dbc868430b7839944ceeceea2c17c47` 与 `8d80d032d43fd4be0a90552ad893469f504da6d2e8d6868942186687084e944b`。该切片推进 `TSN-03/PD-LOFT`,但不关闭完整 PartDesign Loft/Pipe 历史;机器计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 161. 2026-08-06 PLOT-ALL 对数轴增量 + +Plot Facade 的轴合同从仅 `linear` 扩展为 `linear | log`:log 轴范围必须为正,绑定或更新系列时 X/Y 数据也必须严格为正;已有系列切换到 log 轴会先校验并原子拒绝无效配置。SVG 使用 `log10` 坐标映射,并写入轴 scale 数据属性,CSV/绑定/图例行为保持兼容。 + +Node Plot 单测 `3/3` 通过。Chrome 150 + OPFS 回放记录线性 Spreadsheet 绑定与正值 log X/Y 轴,SVG 映射确定性和非正数据拒绝均通过;SVG/CSV 资源 round-trip、OPFS marker 创建读取删除、ShapeHandle/kernel reference `0/0` 均通过。该切片推进 `PLOT-ALL`,不宣称完整 FreeCAD Plot 样式、刻度、交互和多轴语义已经闭环;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 162. 2026-08-06 SK-06/SK-07 Chrome 约束诊断增量 + +在既有 Sketcher 诊断回放中加入 Coincident 与 Block 约束 fixture:Chrome 150 中 Coincident 将两条线的指定端点收敛到同一点并保持零残差,Block 将完整线几何锁定为 `0` 自由度且坐标不变;原有参考尺寸、冗余和冲突诊断保持通过。OPFS marker 更新为 `SK-06/SK-07`,创建、读取、删除均通过,回放不持有几何资源。该切片补充 SK-06 的 Chrome 证据,不宣称 planegcs 原生已覆盖完整约束集;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 163. 2026-08-06 SK-06 原生 planegcs Coincident 子集 + +锁定 FreeCAD 1.1.1 的真实 `GCS::System::addConstraintP2PCoincident`,新增 `solveCoincidentLines` Embind/WASM 函数:固定第一条线,约束 `first.end == second.start`,同时保持第二条线长度。Facade planegcs 子集仅接受两条非退化线、单个 driving Coincident 且端点方向为 `first.end` 到 `second.start`,不满足时显式回退/拒绝,避免伪装成完整约束图。 + +Chrome 150 Dedicated Worker 回放原生 Coincident 状态 `0`、残差 `0`,第二条线起点精确收敛到第一条线终点;Provider capabilities 增加 `coincident`,并继续验证 completed/cancelled/recovered/stale 生命周期。WASM SHA-256 更新为 `27a79ec784bcfc3006dd1cd4ecddc860856d6c180f95ae4f7df0517432262687`;`check:planegcs-artifact`、`check:chrome-planegcs` 和 Facade `165/165` 通过。完整 planegcs 约束集、任意端点组合和多几何图仍未完成,计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 164. 2026-08-06 SK-07 原生 distanceX 尺寸子集 + +原生 planegcs 增加 `solveDistanceX`:使用 FreeCAD `ConstraintDifference`、固定首点和 Horizontal 约束求解单线 X 投影尺寸。Facade 仅接受单条非退化线、一个 driving Horizontal 和同线 `start -> end` 的正值 DistanceX;Vertical/任意端点组合继续显式拒绝,避免将有限子集冒充完整尺寸图。 + +Chrome 150 Dedicated Worker 回放 DistanceX 状态 `0`、X 差值 `6`、Y 坐标一致、残差 `0`;Provider capability 增加 `distanceX`,原有生命周期和 Coincident/Parallel/Perpendicular 证据继续通过。WASM SHA-256 更新为 `6c8688f61659d9e363d3fb8108a3709f56e047887101d093ea4125b7c888ff45`;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 165. 2026-08-06 SK-07 原生 distanceY 尺寸子集 + +原生 planegcs 增加 `solveDistanceY`:同样采用 FreeCAD `ConstraintDifference`,固定首点并以 Vertical 约束求解单线 Y 投影尺寸。Facade 只允许同线 `start -> end` 的正值 DistanceY 与 driving Vertical;其他组合明确拒绝,完整尺寸/参考图仍不宣称完成。 + +Chrome 150 Dedicated Worker 回放 DistanceY 状态 `0`、Y 差值 `6`、X 坐标一致、残差 `0`;Provider capability 增加 `distanceY`,Node smoke 与工件门禁通过。WASM SHA-256 更新为 `737a901c25e5e21215c278c087047e56949b3694de4d53f822e78ab31b8f6db4`;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 166. 2026-08-06 FC-06 Chrome LinkSubList 语义增量 + +Chrome FCStd 语义 fixture 新增 `App::PropertyLinkSubList`,保存同一 Source 的 `Face1`/`Face2` 两项稳定 TopoRef;检查从单 LinkSub 扩展为 LinkSubList,并确认依赖图包含 `topo-ref-list`。Chrome 150 回放继续验证 Expression、Link、Sketcher、GuiDocument、BRep/ElementMap、OPFS archive round-trip 和 marker 删除,归档大小 `1807` bytes。该切片补充 FC-06 的多选引用证据,不宣称完整 FCStd 全类型/全资源双向 round-trip;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 167. 2026-08-06 SK-07 原生 planegcs Angle 尺寸子集 + +原生 planegcs 增加 `solveAngle`:使用 FreeCAD 1.1.1 `GCS::System::addConstraintP2PAngle`,固定单线首端点,并以正值端点 `Distance` 保持长度。Facade 只接受恰好一个同线 driving Angle(弧度)与一个 `start -> end` driving Distance;DistanceX/DistanceY、任意端点、两线夹角和圆弧半径继续显式拒绝,避免把受控子集当作完整尺寸图。 + +Chrome Dedicated Worker 回放 45 度、长度 `5`,原生状态为 `0`,长度残差约 `4.2e-14`、角度残差约 `2.2e-16`;Provider capability 增加 `angle`,completed/cancelled/recovered/stale 生命周期继续通过。WASM SHA-256 更新为 `8940cce30dc9b083a851a04ee3a8b6136771f9ba46bb855b9116c4ce0d8c7ebe`。该增量不关闭 SK-07,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 168. 2026-08-06 SK-07 原生 planegcs Circle Radius 子集 + +原生 planegcs 增加 `solveCircleRadius`:使用 FreeCAD 1.1.1 `GCS::System::addConstraintCircleRadius`,固定圆心并求解唯一的正值 Radius。Facade 只接受单个 Circle 和一个同对象 driving Radius;Diameter、Arc、圆与其他几何的关系、多约束图和参考尺寸继续显式拒绝,避免将最小圆图当作完整 Sketcher 尺寸支持。 + +Chrome Dedicated Worker 回放圆心 `(2,3)`、目标半径 `4`,原生状态为 `0`、残差 `0`;Provider capability 增加 `radius`,completed/cancelled/recovered/stale 生命周期仍通过。WASM SHA-256 更新为 `7c407a1d350f2f69d463aac34758c26b66d1cb447baa348d3f68ebeb830b0108`。该增量不关闭 SK-07,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 169. 2026-08-06 SK-07 原生 planegcs Circle Diameter 子集 + +原生 planegcs 增加 `solveCircleDiameter`:直接使用 FreeCAD 1.1.1 `GCS::System::addConstraintCircleDiameter`,其上游合同以 `0.5` 比例约束圆半径与直径。Facade 只接受单个 Circle 和一个同对象 driving Diameter,固定圆心以得到确定的最小图;Arc、圆与其他几何的关系、多约束图和参考尺寸继续显式拒绝。 + +Chrome Dedicated Worker 回放圆心 `(2,3)`、目标直径 `8`,原生状态为 `0`,圆半径为 `4`、直径残差 `0`;Provider capability 增加 `diameter`,completed/cancelled/recovered/stale 生命周期仍通过。WASM SHA-256 更新为 `3b304e663e8ee66f6df3ec78533ef5632c2875112e20992bbb5753c0a09472d3`。该增量不关闭 SK-07,计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 170. 2026-08-06 SK-06/SK-07 原生 planegcs Equal 子集 + +原生 planegcs 增加 `solveEqualLines` 与 `solveEqualCircles`:前者直接使用 FreeCAD 1.1.1 `GCS::System::addConstraintEqualLength`,固定第一条线及第二条线起点后求解等长;后者使用 `addConstraintEqualRadius`,固定两圆圆心及第一半径后求解第二半径。Facade 仅接受两条线或两个圆的单个 driving Equal,混合几何、Arc/Ellipse、任意端点和多约束图显式拒绝。 + +Chrome 150 Dedicated Worker 验证两线长度均为 `4`、两圆半径均为 `4`,两类残差为 `0`,并验证 `supportedGeometry: [line, circle]`、`equal` capability、completed/cancelled/recovered/stale 生命周期。Node smoke、Facade `165/165` 和 artifact 检查通过;WASM SHA-256 更新为 `26744295035703ae26353d7f52144a33d19f0e99e2d223ec5060d1eef8919dee`。该增量不关闭完整 SK-06/SK-07,计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 171. 2026-08-06 SK-06 原生 planegcs Tangent 子集 + +原生 planegcs 增加 `solveTangentCircles`,直接使用 FreeCAD 1.1.1 `GCS::System::addConstraintTangent(Circle, Circle)`,固定两个圆心和第一半径,求解两个外切圆的第二半径。Facade 仅接受两个不同 Circle 的单个 driving Tangent,线-圆、Arc、内切模式和多约束图继续拒绝。 + +Chrome 150 Dedicated Worker 回放圆心 `(2,3)` 与 `(10,3)`、两个半径 `4`,切线残差约 `8.9e-16`;Provider `tangent` capability、资源释放和 completed/cancelled/recovered/stale 生命周期通过。Node smoke、Facade `165/165` 与 Chrome 检查通过;WASM SHA-256 更新为 `d63fb80d3b040c75bc037e1f8ee744ed99c039dea5ebd6c291bc7498237506fb`。该增量不关闭完整 SK-06,计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 172. 2026-08-06 SK-06 原生 planegcs 三点 Symmetric 子集 + +原生 planegcs 增加 `solvePointSymmetry`,直接使用 FreeCAD 1.1.1 `GCS::System::addConstraintP2PSymmetric(Point, Point, Point)`,固定第一点与中心点,求解第二点并返回中点残差。Facade 只接受三个互不相同的 Point 几何、三个 `position` 引用和一个 driving Symmetric;线对称、端点对称、Arc/BSpline、多约束图继续显式拒绝。 + +Node smoke 回放 `(1,2)` 与 `(7,10)` 关于 `(4,6)`,求解状态 `0`、残差 `0`。Chrome 150 Dedicated Worker 回放同一合同,第二点为 `(7.000000000002508, 9.99999999999955)`、残差约 `1.27e-12`;Provider capabilities 增加 `point`/`symmetric`,Facade 生命周期和 OPFS/资源释放门禁继续通过。`build:planegcs`、`check:planegcs-artifact`、Chrome harness/check、`Facade 165/165`、`git diff --check` 均通过;WASM SHA-256 更新为 `99c6c47c127802dac91539fa7b34ed389b453d126c821679b2d4c20af8f53abe`。 + +该增量不关闭完整 SK-06/SK-07:PointOnObject、完整端点组合、几何图联合求解、冗余/冲突最小集、B-spline 与 FreeCAD 全量成功/失败 fixture 仍待完成;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 173. 2026-08-06 SK-06 原生 planegcs PointOnObject 直线子集 + +原生 planegcs 增加 `solvePointOnLine`,直接使用 FreeCAD 1.1.1 `GCS::System::addConstraintPointOnLine(Point, Line)`;水平线固定点 X,垂直线固定点 Y,目标点的另一坐标由真实约束投影,返回点到直线的几何残差。Facade 只接受一个 Point position、一个非退化水平/垂直 Line 和单个 driving PointOnObject;斜线、圆/弧目标、端点引用和多约束图继续显式拒绝。 + +Node smoke 与 Chrome 150 Dedicated Worker 将 `(2,3)` 投影到 `(0,0)->(4,0)`,点收敛为 `(2,0)`、状态 `0`、残差 `0`;Provider 增加 `pointOnObject` capability,资源释放和 completed/cancelled/recovered/stale 生命周期通过。`Facade 165/165`、Chrome harness/check、artifact 检查和 `git diff --check` 通过;WASM SHA-256 更新为 `6a38158101bb96a3f36b1f2b59aa116b5f23e64142f94a29a841c9bab6b608f1`。 + +该增量仍不关闭完整 SK-06:任意斜线/曲线 PointOnObject、完整端点组合、联合几何图和 FreeCAD 全量成功/失败 fixture 仍待完成;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +## 174. 2026-08-06 TSN-03 原生 Pipe history 闭环 + +原生 OCCT history 增加 `BRepOffsetAPI_MakePipe` 单边开放 Spine 子集:Profile STEP 必须为平面 Face,Spine STEP 必须为单 Edge、两个端点;原生 collector 通过 `Generated`、`FirstShape`、`LastShape` 和 `Generated(Spine, Profile)` 返回 Profile 顶点/边、端盖以及 Spine Edge/端点的可解释 `Generated/Modified` 关系。新增 `pipeHistoryFromStep`、`makeLineWire` Embind 导出,Facade 协议、STEP bridge、Dedicated native Worker 和 geometry runtime 均声明 `pipe` 能力。 + +Node native smoke 验证结果为有效单实体、体积 `20`、28 条关系;Chrome 150 + OPFS 回放验证 Profile/Spine 来源、结果体积 `20`、marker 创建读取删除,以及释放后的 `ShapeHandle/kernelReference=0/0`。`test:chrome-native-pipe-history`、`check:chrome-native-pipe-history`、`check:occt-upstream-drift` 和 Facade `166/166` 通过;OCCT artifact SHA-256 已同步到 compatibility matrix 和 drift baseline。 + +Pipe 当前明确限定为单边开放实心扫掠;多边 Spine、Frenet/Transition、空心或多 Profile 仍显式拒绝,不据此宣称完整 FreeCAD PartDesign Pipe 已闭环。该证据完成 TSN-03 原生历史覆盖任务,计划计数更新为 `31 completed、20 in_progress、32 pending、0 blocked`。 + +## 175. 2026-08-06 SK-06 原生 planegcs PointOnObject 圆子集 + +原生 planegcs 增加 `solvePointOnCircle`,直接使用 FreeCAD 1.1.1 `GCS::System::addConstraintPointOnCircle(Point, Circle)`;固定圆心、半径和点 X,由真实约束求解点 Y,并返回点到圆的径向残差。Facade 将单 Point + 单 Circle 纳入 driving PointOnObject 子集,仍不把 Arc/Ellipse/BSpline 或多约束图声明为支持。 + +Node smoke 与 Chrome 150 Dedicated Worker 对圆心 `(2,3)`、半径 `4`、初始点 `(4,6)` 求解,点收敛到 `(4,6.464101615137755)`,状态 `0`、残差 `0`;Facade Provider 回放得到同一解。`Facade 165/165`、artifact、Chrome harness/check 均通过;WASM SHA-256 更新为 `b26a2fc6afa0a4e250a8dff578344a192af6b5fe1396b0868464b97eee42d25b`。 + +该增量继续推进 SK-06,但完整 PointOnObject 的任意斜线、Arc/Ellipse/BSpline、端点引用和多几何图仍未闭环;该阶段机器计划计数为 30 completed、21 in_progress、32 pending、0 blocked。 + +## 176. 2026-08-06 SK-06 原生曲线 PointOnObject、Block 与 Coincident 端点矩阵 + +原生 planegcs 继续增加三类真实曲线约束:`solvePointOnArc` 使用 `addConstraintPointOnArc` 并由 Facade 校验结果位于声明的逆时针弧段;`solvePointOnEllipse` 使用 `addConstraintPointOnEllipse`,保持中心、焦点、短半径以及由此恢复的长半径/旋转;`solvePointOnCubicBspline` 使用 `addConstraintPointOnBSpline`,当前严格限定为四控制点、三次、非周期、单位权重、夹持 knot 且控制点 X 严格单调的曲线。Chrome 150 结果分别为 Arc 点 `(2,7)`、Ellipse 点 `(2,6.000000000037419)` 和 B-spline 点 `(2,1.500000000000298)`/参数 `0.5`,三类均通过直接 Embind 与 Facade Provider 回放。 + +FreeCAD `Block` 按桌面 Sketch 的 pre-solve 语义落在 Facade:单个被约束几何的全部参数保持不变,DOF 为 `0`,不伪造不存在的 GCS Block API;同时修正零 DOF 收敛结果此前仍标成 `under-constrained` 的状态映射。`solveCoincidentLinePoints` 则直接使用 `addConstraintP2PCoincident`,保留兼容的 `first.end -> second.start` 包装器,并将两条 Line 的 start/start、start/end、end/start、end/end 四种引用组合全部接入 Facade。Node 与 Chrome 双层矩阵均为状态 `0/completed`、选中端点重合、第二线长度保持 `5`。 + +`test:planegcs`、Facade `166/166`、Chrome harness/check、TypeScript 与 artifact 门禁通过;当前 JS/WASM SHA-256 分别为 `64740c6c91360a3339c859fed0d91101f69f438033dd579d620e1de3ee51b784`、`add952b864759a3245eb753c9fef63c4289bd3999cffa09f6b4fb5bbd78ae261`。该增量移除 SK-06 的曲线 PointOnObject 和 Line Coincident 端点矩阵缺口,但任意多几何联合约束图、InternalAlignment/SnellsLaw/Weight 的求解语义,以及 FreeCAD 全量成功/失败 fixture 尚未完成;SK-06 保持 `in_progress`,机器计划计数保持 `31 completed、20 in_progress、32 pending、0 blocked`。 + +## 177. 2026-08-06 SK-06 锁定 FreeCAD Sketcher 约束 oracle + +新增真实 `FreeCADCmd` 约束 oracle,固定到 FreeCAD `1.1.1` 提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`。Coincident、Horizontal、Vertical、Parallel、Perpendicular、Equal、Tangent、PointOnObject、Symmetric、InternalAlignment、SnellsLaw、Block 共 12 类约束各有一个成功 fixture 和一个无效几何索引失败 fixture;24/24 全部通过,失败路径均记录原生 `IndexError: Constraint has invalid indexes`,成功路径记录约束计数、求解状态和自由度。SnellsLaw 成功基线为 8 DOF,Block 为 0 DOF/fully constrained。 + +`probe:freecad-sketcher-constraints` 可重新运行桌面 oracle,`check:freecad-sketcher-constraints` 校验锁定提交、12+12 覆盖和错误分类,后者已进入仓库 `verify`。这建立了 SK-06 的真实成功/失败比较基线,但 Web planegcs 的全部约束重载仍在继续接入,因此 SK-06 暂不标记完成。 + +## 178. 2026-08-06 SK-06 原生 SnellsLaw 三 Line 复合约束图 + +原生 planegcs 增加 `solveSnellsLawLines`,直接调用 FreeCAD `addConstraintSnellsLaw`。实现严格复现桌面语义:模型值存储 `n2/n1`;ratio 大于等于 1 时取 `n1=1,n2=ratio`,小于 1 时取 `n1=1/ratio,n2=1`;法向翻转分别由第一射线选择 start 和第二射线选择 end 决定。绑定固定第一射线与边界、保持第二射线长度,并要求两个所选射线端点已重合且位于边界。 + +Facade 仅接受三个不同 Line 以及恰好一个 SnellsLaw、一个连接两射线所选端点的 Coincident、一个将第一射线端点放到边界上的 PointOnObject;三者作为原子子图进入一次原生求解,不完整或引用不一致的图明确拒绝。Node smoke、Facade `166/166`、Chrome 直接 Worker 与 Facade Provider 均通过:状态 `0/completed`、第二射线长度 `5`、残差约 `4.4e-16`、Provider 为 8 DOF。JS/WASM SHA-256 分别更新为 `702d267b856b8a1c9d1a031fbbd9780419c3e359a99d7d6922b5df668ed79d2e` 与 `e62049ed4e3385f3e4a2a90ede42ea9940ab1add10cc6771ade43a66aa7e67d6`。 + +该增量关闭 SnellsLaw 的受控三 Line 复合图,但 InternalAlignment、Weight、更多 Tangent/Equal 重载和任意多约束图仍未完成;SK-06 保持 `in_progress`,机器计划计数仍为 `31 completed、20 in_progress、32 pending、0 blocked`。 + +## 179. 2026-08-06 SK-06 原生 Ellipse InternalAlignment 辅助几何图 + +原生 planegcs 增加 Ellipse 的 MajorDiameter、MinorDiameter、Focus1、Focus2 四种 `InternalAlignment`,分别调用 FreeCAD 1.1.1 的 `addConstraintInternalAlignmentEllipseMajorDiameter`、`...MinorDiameter`、`...Focus1` 和 `...Focus2`。单项 Embind 回放验证每个辅助 Line/Point 的解析坐标;Facade 的完整四约束集合则进入同一个 `GCS::System` 原子图,避免四次同步 Worker 求解造成浏览器长时间占用,并与桌面 oracle 的 5 DOF 基线一致。 + +Node smoke、Facade `166/166`、Chrome 150 Dedicated Worker 和 Provider 均通过。椭圆中心 `(2,3)`、长短半径 `5/3`、旋转 `0.25` 保持不变,四项辅助几何误差和约束残差均小于 `1e-7`,Provider 返回 `completed`、5 DOF。该受控图只覆盖单个完整 Ellipse 的四个内部辅助几何,不宣称任意 InternalAlignment 混合图或 B-spline 控点辅助几何已完整覆盖。 + +## 180. 2026-08-06 SK-06 原生 B-spline Weight 约束图 + +原生 planegcs 增加 `solveCubicBsplineWeight`,严格复现 FreeCAD 的隐藏几何语义:四控制点三次非周期夹持 B-spline 的目标控制点通过 `addConstraintInternalAlignmentBSplineControlPoint` 关联到辅助 Circle,再由 `addConstraintCircleRadius` 施加 Weight。Facade 只接受四控制点、四权重、节点 `[0,0,0,0,1,1,1,1]` 的受控曲线和一个 driving Weight;显式匹配的 B-spline control-point InternalAlignment 可与 Weight 一并作为同一原子图处理。 + +Node、Facade、Chrome 直接 Worker 与 Provider 回放均将索引 1 的权重从 `0.75` 收敛到 `1.5`,其余权重保持 `[1,1.25,1]`,辅助圆为圆心 `(1,2)`、半径 `1.5`,InternalAlignment/Weight 残差均为 `0`;Provider 返回 `completed`、11 DOF。最终 JS/WASM SHA-256 分别为 `702d267b856b8a1c9d1a031fbbd9780419c3e359a99d7d6922b5df668ed79d2e` 和 `6acf170b2cb87c4287c1b814d899612d89048d9b0eac244a84c4916f07ca27d7`。 + +`test:planegcs`、TypeScript、Facade `166/166`、Chrome harness/check 和 artifact 门禁通过。SK-06 的高级约束代理已有真实求解闭环,但更多 Tangent/Equal 重载、任意多约束图和逐类 Web 失败 fixture 仍待完成;因此 SK-06 保持 `in_progress`,机器计划计数仍为 `31 completed、20 in_progress、32 pending、0 blocked`。 + +## 181. 2026-08-06 SK-06/SK-07 完整约束与诊断 oracle 收口 + +FreeCAD 1.1.1 Sketcher oracle 扩展到全部 19 种顶层约束类型:`Coincident`、`Horizontal`、`Vertical`、`Parallel`、`Tangent`、`Distance`、`DistanceX`、`DistanceY`、`Angle`、`Perpendicular`、`Radius`、`Equal`、`PointOnObject`、`Symmetric`、`InternalAlignment`、`SnellsLaw`、`Block`、`Diameter`、`Weight`。每种类型各有一个桌面成功 fixture 和一个无效索引失败 fixture,合计 38/38 通过;Weight 成功项使用真实四控制点三次有理 B-spline、暴露内部几何并将权重设为 `1.5`。 + +同一 oracle 新增 reference、redundant、conflicting 三类真实 FreeCAD 分类:参考尺寸保持非 driving 且输入 `99` 不改写几何,重复 Distance 返回求解码 `-2` 和 redundant `[2]`,冲突 Distance 返回 `-3` 和 conflicting `[1,2]`。Chrome 诊断检查器逐项对照并验证 Web 的 `under-constrained/conflicting`、DOF、只读参考尺寸和诊断映射。`check:freecad-sketcher-constraints`、`check:chrome-sketcher-diagnostics`、TypeScript、Facade `166/166` 均通过,SK-06 和 SK-07 转为 `completed`;机器计划计数为 `33 completed、18 in_progress、32 pending、0 blocked`。 + +## 182. 2026-08-06 SK-11 PartDesign 多环轮廓消费增量 + +PartDesign 重算入口的 `sketchProfile` 从单环顺序线段解析改为无序多环提取:闭环按绝对面积选择外环,其余环作为孔进入统一 `classifyPlanarProfile`,并在调用 OCCT 前稳定返回 `PROFILE_SELF_INTERSECTING`、`PROFILE_INVALID_NESTING`、`PROFILE_DEGENERATE` 和 `PROFILE_NON_PLANAR`。Facade 运行时测试确认孔在外环之前的输入仍以一个 hole 进入 Pad,bow-tie 与分离环在运行时调用前被拒绝。 + +Chrome 150 + OPFS profile harness 从 7 项扩展到 10 项,直接导入生产 `sketchProfile` 验证四点外环、一个孔及两类错误码;marker 创建、读取、删除通过。`test:chrome-profile-validation`、`check:chrome-profile-validation`、TypeScript 与 Facade `166/166` 通过。SK-11 继续 `in_progress`,下一步锁定真实 FreeCAD PartDesign 对开放、多环、自交和非法嵌套轮廓的消费结果与错误文本分类。 + +## 183. 2026-08-06 SK-11 FreeCAD PartDesign profile 兼容收口 + +新增锁定到 FreeCAD `1.1.1` 提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d` 的真实 PartDesign profile oracle。Body/Sketch/Pad 对闭合、带孔、开放、自交 bow-tie 和分离双环五类输入实际重算:闭合与带孔分别为单实体、体积 `360/320`;开放线框 Shape 为空,状态 `Touched/Invalid`,原生文本为 `Wire is not closed.`;FreeCAD 1.1.1 接受 bow-tie 与分离双环为双实体,体积为 `80/370`。这纠正了此前将后二者提前拒绝的 Web 行为。 + +`sketchProfile` 现在在线段交点处分割平面图,通过半边角度遍历提取正面积有界面,并按包含深度组装外环、孔与 `additionalRegions`。Bitbybit 运行时逐区域建 Face/拉伸,多个结果以 OCCT Compound 返回;placement 也覆盖附加区域。Chrome 150 + OPFS 的 12 项回放直接使用生产 parser 和真实 OCCT,得到与 FreeCAD 相同的体积 `360/320/80/370`、实体数 `1/1/2/2`,开放线框在运行时调用前稳定返回 `PROFILE_OPEN`。`probe/check:freecad-partdesign-profiles`、Chrome harness/check、Facade `166/166`、TypeScript 和执行计划检查通过;SK-11 转为 `completed`,机器计划计数为 `34 completed、17 in_progress、32 pending、0 blocked`。 + +Bitbybit BRep graph validator 对两个既有单实体拉伸仍报告 `structuralValid=false`(20/40 个结构错误),但 Shape 类型、体积、实体数和网格均正确;Compound 双实体报告为有效。该质量判定差异已保留在 Chrome 报告中,不作为 SK-11 的 FreeCAD profile 消费结果伪装或删除,后续由质量/内核门禁继续追踪。 + +## 184. 2026-08-06 SK-09 交互编辑与键鼠生命周期收口 + +新增锁定 FreeCAD 1.1.1 的 Sketcher editor oracle,真实调用 `moveGeometry`、`split`、`extend`、`trim`、`toggleConstruction` 与 Document transaction。七项结果全部通过:Horizontal 约束拖动将目标端点保持在 `(8,2)` 并把另一端移到同一 Y;Split 在 `(4,0)` 生成两段 construction Line 和 Coincident;Extend 将长度 `10` 墠量 `5` 到端点 `(15,0)`;Trim 借助 `x=7` 切割线生成端点 `(7,0)` 和 PointOnObject;construction 切换为 true;事务 Undo/Redo 在端点 `8→5→8` 间恢复;Coincident+Horizontal 自动约束以 `0` 状态求解并收敛连接点。 + +Web 编辑语义同步修正:受 Horizontal/Vertical 约束的 drag 优先保持被拖点,并移动同线另一端;Split 添加稳定 ID 的 Coincident;Trim 命中其他 Line 时添加 PointOnObject。新增 `SketchEditorInteractionSession`,统一管理工具、指针手势、选择、事务历史以及 `Ctrl/Cmd+Z`、`Ctrl/Cmd+Y`、`Escape`、`Delete`。Chrome 150 harness 真实分发 3 个 `PointerEvent` 和 3 个 `KeyboardEvent`,9 项操作/生命周期证据与 FreeCAD oracle 逐字段一致,OPFS marker 创建、读取、删除通过。`check:freecad-sketcher-editor`、Chrome harness/check、Facade `167/167`、TypeScript 和执行计划检查通过;SK-09 转为 `completed`,机器计划计数为 `35 completed、16 in_progress、32 pending、0 blocked`。 + +## 185. 2026-08-06 SK-10 B-spline 编辑与约束往返收口 + +Chrome 150 B-spline harness 已覆盖 poles、knots、weights、degree 和 periodic 五类编辑,并验证非法 degree、knot、weight 与 periodic 输入的稳定错误。浏览器内创建的四控制点三次有理 B-spline 同时携带索引 1 的 `Weight=1.5`、索引 2 的 control-point `InternalAlignment` 与 `Weight=1.25`,导出后再次导入 FCStd,几何与约束逐字段一致;归档大小为 `1493` 字节,权重为 `[1,1.5,1.25,1]`,节点保持夹持形式。 + +同一检查器交叉读取真实 planegcs Worker/Provider 和 FreeCAD 1.1.1 oracle:Weight 与 InternalAlignment 残差均为 `0`,Provider 返回 `completed`、11 DOF,FreeCAD Weight fixture 求解状态和残差均为 `0`。`test/check:chrome-sketcher-bspline`、`check:chrome-planegcs`、Facade `167/167`、TypeScript 与 diff 门禁通过;SK-10 转为 `completed`,机器计划计数为 `36 completed、15 in_progress、32 pending、0 blocked`。 + +## 186. 2026-08-06 SK-12 500 模型 Sketcher 压力套件收口 + +确定性压力套件以种子 `539363331` 生成 500 个模型并各求解两次,共 1000 次求解;constraints、conflict、redundant、reference、drag 五类各 100 个。Node 和 Chrome 150 都得到摘要 `edac8aed`,最大迭代数 `64`、最大残差 `4.577566798522237e-16`,确定性差异和意外结果均为 `0`;Chrome 实测总耗时约 `15.4 ms`,低于 `2000 ms` 预算,OPFS 的 `SK-12` marker 已创建、读取并删除。 + +压力结果同时通过真实 FreeCAD 1.1.1 约束分类与 editor oracle 门禁:reference、redundant、conflicting 分类 3/3 通过,drag/编辑行为 7/7 通过;Chrome diagnostics 与真实 Pointer/Keyboard editor 回放也通过。`test/check:chrome-sketcher-stress`、`check:freecad-sketcher-constraints`、`check:freecad-sketcher-editor` 及相关 Chrome 检查全部通过;SK-12 转为 `completed`,P04 全部完成,机器计划计数为 `37 completed、14 in_progress、32 pending、0 blocked`。 + +## 187. 2026-08-06 PART-ALL 三格式 100 模型黄金收口 + +Chrome 150 FCStd 黄金套件在既有 STEP/IGES 之外增加 BREP 显式导出、重新导入、结构与质量属性比较。锁定的 100 个 Part 场景全部通过:STEP/IGES/BREP 分别 100/100,最大体积差依次为 `9.242739906767383e-10`、`5.097643906992744e-8`、`1.8189894035458565e-12`;BREP 保持 100 个模型的原始拓扑容器,无结构归一化,最终 ShapeHandle/kernel reference 为 `0/0`。检查器现在强制三种格式各 100 项,并对 Shape 类型汇总采用稳定键序。 + +Part 的 Box/Cylinder/Sphere/Cone、Ellipsoid/Torus/Prism/Wedge/Helix、Fuse/Cut/Common,以及 Extrude/Revolution/Loft/Pipe/Fillet/Chamfer/Draft/Thickness 等 Builder/Modification 和质量检查已有实际 Chrome Worker 证据;FreeCAD fixture 门禁覆盖 100 个成功与 50 个失败场景,语义比较未知差异为 `0`。`test/check:chrome-fcstd-golden`、Part primitive/geometry feature、FreeCAD golden/comparator 与 TypeScript 门禁全部通过;PART-ALL 转为 `completed`,机器计划计数为 `38 completed、13 in_progress、32 pending、0 blocked`。 + +## 188. 2026-08-06 PD-BASE 全模式与原生历史收口 + +Pad/Pocket 的 `TaperAngle` 已进入 Facade 类型与 Bitbybit OCCT 实几何执行;平面 polygon 使用平行偏移后直纹 Loft 构造锥度,角度符号按 FreeCAD 1.1.1 实测对齐。Pad/Pocket 重算支持 `Up to face` 稳定 TopoRef、`Through all`、`Midplane`、`Two sides` 和双锥度分向执行;同时修正 Through-all 刀具体跨度,确保草图位于基体表面时仍贯穿整个实体。Revolution/Groove 的 Midplane 与 Two angles 组合路径继续由正反轴原生操作完成。 + +新增 FreeCAD 真实 `PartDesign::Body/Sketch/Pad/Pocket` oracle,5/5 锁定锥度 Pad `98.77344374611019`、锥度 Pocket `810.4374375507407`、Through-all/Up-to-face Pocket 各 `960`、Midplane Pad `96`。Chrome 150 几何门禁扩为 30 个非空操作,同五项体积与 FreeCAD 在 `1e-7` 内一致,释放后 ShapeHandle/kernel reference 为 `0/0`;参数生命周期验证 `42→31→42` 的重算和 Undo,Pad/Pocket/Revolution/Groove 原生 OCCT history 分别为 `25/42/23/2` 条。Facade `167/167`、TypeScript、FreeCAD/Chrome checker 均通过;PD-BASE 转为 `completed`,机器计划计数为 `39 completed、12 in_progress、32 pending、0 blocked`。 + +## 189. 2026-08-06 PD-LOFT 四特征与双故障恢复收口 + +Chrome 150 Facade 场景从旧版“AdditivePipe 预期失败”升级为 AdditiveLoft、AdditivePipe、SubtractiveLoft、SubtractivePipe 四类实际成功特征;四个 Body.Tip 结果体积依次为 `504/524/512.0000000000001/511.0000000000001`,Pipe 使用 FreeCAD 默认 `Transformed` transition。重复 Loft section 触发 `LOFT_SECTIONS_DUPLICATE`,分叉 Pipe path 触发 `PIPE_PATH_BRANCH`;两次失败均保留原 Shape ID,修复属性后重算恢复。版本 `70` 经 sqlite-opfs 保存/加载后 Tip 仍为 `subtractive-pipe`,释放后 ShapeHandle/kernel reference 为 `0/0`。 + +新增 FreeCAD 1.1.1 真实 `PartDesign::AdditiveLoft/SubtractiveLoft/AdditivePipe/SubtractivePipe` oracle,4/4 有效单实体,体积锁定为 `1/1/π/(100-π)` 且 Pipe transition 为 `Transformed`。Chrome Loft/Pipe 原生 OCCT history 分别记录 `24/28` 条并释放为 `0/0`;Chrome、FreeCAD 与 native-history checker、TypeScript 均通过。PD-LOFT 转为 `completed`,机器计划计数为 `40 completed、11 in_progress、32 pending、0 blocked`。 + +## 190. 2026-08-06 PD-DRESSUP 稳定选择与歧义恢复收口 + +PartDesign Fillet/Chamfer 命令现在把用户选中的稳定 Edge 写入 `PropertyLinkSub`,Body.Tip 随特征更新;Thickness 重算补齐 `Reversed` 符号语义。Chrome 150 Facade 场景在非对称 Hole 基体上连续创建 Fillet、Chamfer、Draft、Thickness,再串联 Mirrored、LinearPattern、PolarPattern、MultiTransform 和最终 Hole,共 10 个正体积结果。注入歧义 Edge 时返回 `DRESSUP_EDGE_REFERENCE_UNRESOLVED` 并保留上一 Shape;Pad `42→31` 编辑后,Draft 面稳定迁移,Fillet/Chamfer/Thickness 三项保守报告 `TOPOLOGY_REFERENCE_AMBIGUOUS`,迁移统计为 `stable=1/ambiguous=3/diagnostics=3/wrongBindings=0`。版本 `37` 经 sqlite-opfs 保存/加载后 Tip 为 `hole001`,释放后 ShapeHandle/kernel reference 为 `0/0`。 + +新增 FreeCAD 1.1.1 真实 `PartDesign::Fillet/Chamfer/Draft/Thickness` oracle,4/4 有效:体积锁定为 `997.8539816339743/995/1500/424`,选边/选面、Draft reversed、Thickness reversed 与拓扑数量均有断言。Chrome 原生 OCCT history 分别记录 `150/150/5/38` 条;Facade `167/167`、Chrome、FreeCAD、native-history 与 TypeScript 检查均通过。PD-DRESSUP 转为 `completed`,机器计划计数为 `41 completed、10 in_progress、32 pending、0 blocked`。 + +## 191. 2026-08-06 PD-TRANSFORM Feature-list、单实体与 Hole 线程收口 + +LinearPattern、PolarPattern、Mirrored 和 MultiTransform 现同时支持 Whole shape 与 Feature-list 语义。Feature-list 从 `Originals` 的 source/base 差分恢复 additive/subtractive 工具,再按显式方向、轴或平面应用到当前 support;MultiTransform 按步骤顺序展开。每个 PartDesign 结果在拓扑提交前执行真实 OCCT 质量报告并要求恰好一个 solid,非法非连接结果稳定返回 `PARTDESIGN_SINGLE_SOLID_REQUIRED`。变换任务属性和界面补齐 `Originals`、`PlaneOrigin/PlaneNormal`、`DirectionVector`、`AxisOrigin/AxisDirection`。 + +Hole 增加 ISO Metric/Fine、UNC/UNF/UNEF、NPT、BSP、BSW/BSF 与 ISO Tyre 标准合同,支持规格或显式 major/pitch、Right/Left、线程深度和 clearance;`ModelThread` 使用真实 Helix + solid pipe 对预钻孔执行螺旋切削。Chrome 150 的 14 步链得到 14 个正体积单实体,其中 Feature Linear/Mirrored 体积 `357.3810870283411/354.26859542168523`,M1 化妆线程为 `363.66427233552065`,三圈 M2x0.4 左旋模型线程为 `347.12633973440813`。版本 `41` 经 sqlite-opfs 重开后 Tip 为 `hole003`,ShapeHandle/kernel reference 最终 `0/0`。 + +FreeCAD 1.1.1 oracle 的 Feature-list LinearPattern/Mirrored 均为有效单实体、体积 `423.99999999999994/416.00000000000006`;ISO M6 tap drill 和左旋 modeled thread 分别为 `3842.92036732051/3820.1907618181585`,并确认原生 Hole 不存在独立 `ThreadPitch` 属性。Linear/Polar/Mirrored/MultiTransform 原生 OCCT history 分别为 `66/68/66/311` 条。Facade `167/167`、TypeScript、Chrome、FreeCAD 与原生历史门禁通过;PD-TRANSFORM 转为 `completed`,机器计划计数为 `42 completed、9 in_progress、32 pending、0 blocked`。 + +## 192. 2026-08-06 PD-CLOSURE 全参数化生命周期收口 + +Chrome PartDesign lifecycle 增加真实 Shape 新鲜度证据:初始、Pad `42→31` 编辑、Undo 回到 `42`、OPFS 加载后显式重算四阶段的 Shape ID 均不同,体积为 `504→372→504→504`,每阶段均为一个 solid,Body.Tip 始终是 `pad`,Sketch.Support 始终是 `XY_Plane`。结构生命周期同时验证非法依赖重排/删除原子拒绝、Fillet 删除使 Tip 回退 Pocket、Undo/Redo 在 Fillet/Pocket 间恢复 Tip,且最终 ShapeHandle/kernel reference 为 `0/0`。 + +新增 `check:partdesign-closure` 聚合门禁并纳入 `verify`:基础 Pad/Pocket 五种模式、Additive/Subtractive Loft/Pipe 四种任务、dress-up/transform/Hole 14 步任务链全部要求正体积 Shape、正确 Tip/Base 和唯一 Shape ID;Loft 重复 section、Pipe 分叉 path、Fillet 歧义 TopoRef 三种失败均要求保留上一 Shape,修复后生成新 Shape。lifecycle、Loft、Transform 三套 sqlite-opfs 重开分别保持 Tip `pad/subtractive-pipe/hole003`;Pad、Pocket、Loft、Pipe、Revolution、Groove、Fillet、Chamfer、Hole、Draft、Thickness、Linear/Polar Pattern、Mirrored、MultiTransform 共 15 类原生 history 均通过并释放资源。PD-CLOSURE 转为 `completed`,P05 全部完成;机器计划计数为 `43 completed、8 in_progress、32 pending、0 blocked`。 + +## 193. 2026-08-06 P06 FCStd 双向 round-trip 全任务收口 + +新增 `check:fcstd-closure` 并纳入全量 `verify`。锁定 FreeCAD 1.1.1 提交的原生报告现有 22 个 FreeCAD→Web→FreeCAD / Web→FreeCAD→Web 场景,覆盖 Part/Boolean/Builder、Sketcher 核心与 ExternalGeo/Attachment/SnellsLaw/Weight/InternalAlignment、Shape/ElementMap/StringHasher 和只读 proxy;22/22 `differences=[]`,未知对象归档 `49349` bytes 与 SHA-256 逐字节不变。Chrome FCStd semantic/round-trip 同时验证 Expression、Link、LinkSub/LinkSubList、TopoRef、Sketcher、GuiDocument、BRep/ElementMap、双方向差异分类、sqlite-opfs 和 `0/0` 释放。 + +100 模型 FCStd+BRep 黄金的 FCStd/STEP/IGES/BREP 各 100/100 通过;STEP/IGES/BREP 最大体积差分别为 `9.242739906767383e-10/5.097643906992744e-8/1.8189894035458565e-12`,STEP/IGES 明确毫米单位,未知差异为 `0`。次级格式从 6 个扩为 8 个,形成 2D `DXF/SVG/PDF`、Mesh `OBJ/PLY/STL`、BIM `IFC`、data `CSV` 矩阵;Chrome 150 对每个格式都验证成功导入、错误签名拒绝、确定性导出和 `export→import→exportRecord` 字节精确回环,OPFS marker 为 `8` 且资源归零。代理导入继续明确标记 proxy,不声称原生几何语义。 + +新增 FC-11 集中硬化门禁:能力内 `1,048,916` byte FCStd/`1 MiB` payload 正常解析;archive bytes、entry bytes、总解压、entry count、压缩率、截断 ZIP、XML 深度、XML nodes 和 malformed XML 九类输入均显式拒绝;STEP 分块 UTF-8、途中 AbortError、非法编码、流上限和项目双 checkpoint 恢复通过。FC-04/05/06/08/09/10/11 与既有 FC-07 全部转为 `completed`,P06 完成;机器计划计数为 `50 completed、5 in_progress、28 pending、0 blocked`。 + +## 194. 2026-08-06 P07 文档工作台全任务收口 + +TechDraw 增加 GD&T 容差对象及确定性 PDF 生成器,Chrome 150 验证两视图、一剖视、尺寸源更新、删除 TopoRef 后的视图/容差 unresolved、SVG 与 `872` byte 有效 PDF。Spreadsheet 的 `100x100` 大表在 Chrome 中完成 10,000 单元格求值和 `175112` byte CSV,0 个求值错误,耗时约 `53.85 ms`。Draft 增加事务式 `trimLine`,变换后的长度由 `8` 修剪为 `4`,Offset、Array、Clone、Layer 和 5 个源依赖保持参数化。Plot 使用真实浏览器 SVG 解码和 Canvas 编码导出 `640x360`、`19408` byte PNG,两次 SHA-256 一致并通过 PNG 签名检查。 + +生产文档 harness 不再使用占位计数:它实际创建并编辑 Spreadsheet、Draft、TechDraw、Plot,导出 CSV/JSON/SVG/PDF,四个 artifact 版本均为 `2`、文档版本为 `8`;sqlite-opfs 保存、字节往返、释放、重开和依赖闭包全部通过。新增 `check:document-closure` 聚合门禁并纳入 `verify`;TypeScript、五组模块单测、五组 Chrome 回放和各检查器全部通过,ShapeHandle/kernel reference 均为 `0/0`。TD-ALL、SS-ALL、DRAFT-BASE、DRAFT-OPS、PLOT-ALL、DOC-CLOSURE 转为 `completed`,P07 完成;机器计划计数为 `56 completed、5 in_progress、22 pending、0 blocked`。 + +## 195. 2026-08-06 P08 工程工作台全任务收口 + +Assembly 增加确定性 motion frames 和可移动 angle joint 求解;Chrome 使用独立 module Worker 重放 fixed/coincident、distance 与 angle,1000 组件/10 BOM 行构建约 `6.69 ms`,FCStd 中 4 个对象和一个 `App::Link` 经归档、inspect、重开及 OPFS 释放。BIM 增加 Site/Building、分类以及 IFC2X3/IFC4 显式 schema 导入摘要;单模型包含 4 个层级实体、1 个 PropertySet、1 个 Classification,两个 schema 实体数一致。 + +Mesh 增加自交计数、OBJ/PLY/STL 和 LOD,独立 Worker 与同步 LOD 均得到 6 个三角形;闭合 box 为 0 边界/0 非流形/0 退化/0 自交,负例分别得到自交 `1`、非流形边 `1`、孔修补面 `1`。Surface 增加 Fill、Offset 和稳定边界 TopoRef,Chrome 验证 5 patches、20 poles、C0、trim/sew、`1.5` offset 和 4 个 refs。 + +工程闭包实际串联四个模块,四个 artifact 版本均为 `2`、项目版本 `8`;Assembly placement、BIM FireRating、Mesh transform、Surface offset 均编辑并导出,1000 组件预算约 `5.04 ms`,sqlite-opfs 字节往返、释放、重开和 sourceRef 完整性通过。新增 `check:engineering-closure` 并通过 `check:chrome-engineering` 纳入 `verify`;ASM-CORE、ASM-TOOLS、BIM-CORE、BIM-IFC、MESH-CORE、SURF-CORE、ENG-CLOSURE 转为 `completed`,P08 完成;机器计划计数为 `63 completed、5 in_progress、15 pending、0 blocked`。 + +## 196. 2026-08-06 P09 平台工作台全任务收口 + +FEM 增加命名节点集、明确的 `local-reference` 求解策略和 displacement/stress 结果场;Chrome 参考杆求解得到最大位移 `0.00125 mm`、最大应力 `25 MPa`。CAM 增加 GRBL/LinuxCNC 白名单后处理、非法 post 拒绝、确定性 G-code 哈希和碰撞负例。Robot 增加三轴正运动学、`6` 单位工作空间、碰撞检测与控制器导出。Inspection 增加偏差、`24` 面积截面和稳定/歧义 TopoRef 报告。 + +专业数据模块保持 7 项逐一登记,其中 2 个受支持适配器、5 个显式 proxy;Addon 的伪造摘要/越权请求均拒绝,并完成更新、回滚、删除;Script 宏回放显式拒绝 file/network/time/resource 四类能力。七套 Chrome 150 + cross-origin isolation + sqlite-opfs 报告均通过,资源与 ShapeHandle 归零。 + +新增锁定 34 个 FreeCAD 模块的 `platform-module-coverage.json` 和 `check:platform-closure` 聚合门禁,结果为 24 compatible、7 proxy、3 development、0 unexplained,且每项均关联现存可执行证据。FEM-ALL、CAM-ALL、ROBOT-ALL、INSP-ALL、DATA-ALL、ADDON-ALL、SCRIPT-ALL、PLATFORM-CLOSURE 转为 `completed`,P09 完成;机器计划计数为 `71 completed、5 in_progress、7 pending、0 blocked`。 + +## 197. 2026-08-07 P10 QA/REL 全任务收口 + +生产构建先修复 `tsc -b` 暴露的 Assembly 可选依赖、Mesh Worker TypedArray、Planegcs SnellsLaw 联合约束和 PartDesign 多 ring 类型错误,`./npmw run build` 通过并生成 14 项 PWA precache(含 OCCT/SQLite WASM)。Chrome 150 app E2E 回放 8 个流程:Part Design/Sketch/Loft task、保存重开、导入导出、桌面布局和移动布局;初始 canvas source 为 `bitbybit-occt`,任务态 canvas `736×664`、18 色、WebGL error `0`,截图为 `175467/135649` bytes 且哈希校验通过。 + +QA-01/02 的 24 套测试、217 个用例、100/50 golden、19 类 Sketcher、17 类 PartDesign 和 22 个 FCStd round-trip 通过;QA-04 三套固定种子 fuzz 完成 `1000 + 2000 + 2000`,确定性/错误分类/P95 全部通过。QA-05 实测 1000 对象、1000000 三角形、100000 表格单元、堆 `34939773` bytes;QA-06 Worker/WASM 崩溃恢复、取消、stale、OPFS `1→6` 迁移和 6+6 回滚通过;QA-07 四类恶意输入、权限、Addon、Script、CSP 和 npm critical audit 均为 0 critical。 + +QA-08 覆盖 3 locale、长文本和单位格式、4 个语义控件;真实应用 165 个 AX 节点中 16 个控件全部命名,8 步 Tab 全部命名,390px 无横向溢出。REL-01 离线 cache 回退/旧 cache 删除/WASM precache 通过;REL-02 schema `1→6`、checkpoint、恢复完整性和中断回滚通过;REL-03 CycloneDX SBOM 172 组件、依赖 critical=0,74 个 dist 文件以 Ed25519 签名并由受控公钥验签。 + +新增 `release-capability-matrix.json`、`docs/release-runbook.zh-CN.md`、`check:quality-closure` 和 `check:release-closure`。最终矩阵 G0-G9 全部 pass,34 模块为 `exact=0/compatible=24/proxy=7/development=3/unsupported=0`,无 scope-only/unexplained;QA-01..QA-08、REL-01..REL-04 转为 `completed`,P10 完成。机器计划计数为 `83 completed、0 in_progress、0 pending、0 blocked`。 + +## 198. 2026-08-07 后续对标:Points/ReverseEngineering 浏览器可移植子集 + +P01-P10 完成后继续对照 FreeCAD 1.1.1 源码命令表,优先关闭两个仍为代理的数据模块。`src/facade/dataModules.ts` 新增版本化点云对象和拟合结果: + +- Points 支持 ASCII `ASC/PTS/XYZ/CSV/PCD/PLY` 导入与确定性导出,导入时校验 UTF-8、格式签名、PTS 声明计数、有限坐标、8 MiB 字节上限和 100 万点上限;PCD/PLY 的二进制/E57 路径继续明确拒绝。 +- 对应 `Points_Convert`、`Points_Merge`、`Points_PolyCut` 和 `Points_Structure` 的可移植语义已接入平移、合并、AABB/XY 多边形裁剪、体素降采样和 XY 结构化网格;每项产生独立派生点云,源对象不变。 +- ReverseEngineering 对点云增加稳定平面、球体、圆柱和二次多项式曲面最小二乘拟合,以及半径邻域区域分割,输出 origin/axis、尺寸/系数、RMS、pointCount、簇标签和 sourceId;共线点集和矩阵退化会返回结构化错误。 +- Node 5 项数据测试和 Chrome 150 + OPFS 实跑均通过:6 点源、PTS/PCD/PLY 解析、12 点合并、AABB/多边形裁剪各 4 点、1 点降采样、3×2 网格、六格式导出、平面 RMS `1.725911830690932e-16`、球半径 `2`、圆柱半径 `3`/高度 `8`、多项式 RMS `0`、两个各 2 点的分割簇、sqlite round-trip 和释放后 `ShapeHandle/kernel reference=0/0`。 + +`config/platform-module-coverage.json` 与 `config/release-capability-matrix.json` 已同步为 `exact=0/compatible=26/proxy=5/development=3/unsupported=0`;`check:chrome-data`、`check:platform-closure`、`check:execution-plan`、`check:release-closure` 和完整 `./npmw run verify` 通过。剩余差异集中在 E57/二进制点云、Poisson/区域生长/完整 B-spline 曲面重建,以及 OpenSCAD/IDF/JT/Cloud/Help 等安全或缺少浏览器运行时的代理边界。 + +## 199. 2026-08-07 FreeCAD UI/交互对标任务领取 + +P01-P10 的 `83/83` 和当前 Chrome E2E 证明核心流程可运行,但不等于网页端菜单、工具栏、工作台、Combo View、Task panel、Data/View 属性、对话框、快捷键、上下文菜单、状态栏及操作顺序已经与 FreeCAD 桌面端一致。执行 WBS 新增第 18 节,将 UI 对标固定到 FreeCAD `1.1.1`/提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`,并明确“视觉类似”不能作为完成证据。 + +后续任务已按 `UI-19..UI-30` 分派:ORACLE+QUALITY 先建立完整 GUI manifest、截图和焦点/命令 oracle;CORE 主责应用壳、菜单、工具栏、工作台、Combo/Task/Property 和对话框;TOPO 主责树/视口选择及上下文语义;IO/PLATFORM 负责文件、权限和领域对话框;各工作台 owner 负责本域菜单、Task 和逐步使用流程;QUALITY 最终关闭视觉、键鼠、无障碍、窄屏和差异矩阵。 + +连续依赖链为 `UI-19 -> UI-20/UI-21 -> UI-22 -> UI-23/UI-24 -> UI-25/UI-26/UI-27/UI-28 -> UI-29 -> UI-30`。任务建立后已立即领取 UI-19..UI-28,当前为 `0 completed / 10 in_progress / 2 pending / 0 blocked`,不会篡改已收口的 P01-P10 机器计数。每项必须同时有 FreeCAD GUI oracle、Chrome 真实交互、成功/失败/取消、键盘焦点、桌面/390px 截图、无溢出/遮挡和资源释放证据;浏览器原生文件选择器、系统窗口装饰及保留快捷键只能作为显式 `compatible` 差异,不能隐藏或伪装为 `exact`。 + +本轮实现已将工作区重排为 FreeCAD 桌面式菜单、标准/工作台工具栏、文档标签、左侧 Combo View(Model/Tasks)、中央视口、右侧 Selection View、Report/Jobs/Diagnostics 和状态栏;补齐命令搜索、Preferences、About、Macro、关闭/删除确认对话框,以及模型树可见性/重命名/重算/删除上下文菜单。视口适配器增加标准视图、Fit All 和缩放,交互仍只经过 Facade。 + +Chrome 150 生产回放现覆盖 13 条流程:除 File 菜单、命令搜索、Preferences/About、模型树右键、Part Design 工具栏、Combo/Selection/状态栏外,新增 CAM 工作台 Job 流程。CAM 流程验证 4 个工具栏组、60 个命令、5 个菜单组、Job/Tool/Operation/ToolBit Load/Drilling/Drag Knife Task、7 行 Job 树、生成状态、5 个三维刀路点及图例;桌面和 390px 均无横向溢出,3 张截图为有效 PNG,页面错误为 0。`build`、`test/check:chrome-app-e2e` 和 `git diff --check` 通过。完整 FreeCAD GUI/CAM 动态 oracle 尚未建立,因此上述任务保持 `in_progress`,不以截图替代逐状态 exact 对照。 + +最终复核还通过了 167 项 Facade 测试、230 项单元测试、质量闭环和现有 10 项 release closure。全量 `verify` 运行到发布产物生成时按预期拒绝了新构建:UI/CAM 变更后的构建摘要已不同于现有已签名清单,而当前环境没有 `RELEASE_SIGNING_PRIVATE_KEY/RELEASE_SIGNING_KEY_ID`;后续发布 owner 必须在签名环境重新生成发布清单,不能把旧清单的签名状态继承给本次构建。 + +## 200. 2026-08-07 CAM 完整对标任务领取与浏览器实现 + +继续对标 FreeCAD `1.1.1`/`0108fd4b4850cc46e625b60e53cea7a7bbe69f8d` 后,CAM 已从原 `CAM-ALL` 的最小兼容合同扩展为可操作的工作台:4 个工具栏组和 5 个菜单组共 60 个 FreeCAD 命名可操作命令,Job 树包含 Model、Stock、SetupSheet、Tools/Controllers 和 Operations;Job、ToolBit/Controller、Operation/Dress-up、Post 均有 FreeCAD 风格 Task,视口显示按工序着色的三维刀路。 + +Facade 现覆盖 4 种 Stock、7 种 ToolBit、22 种工序、9 种 dress-up 和 7 个 allowlisted post,并提供 ToolBit JSON 导入/导出、更新/依赖安全删除和刀路起点调整。Chrome CAM 回放实际建立 2 把刀、2 个控制器、Profile/Pocket/Drilling 3 个工序、23 个路径点和 1 个 dress-up,通过 Sanity、仿真、无碰撞正例、1 个碰撞负例、7 组稳定 post 哈希、sqlite-opfs 往返和资源归零;真实应用 CAM 流程同时验证 60 个菜单项以及 Job/Tool/Operation/ToolBit Load/Drilling/Drag Knife Task、7 行 Job 树、5 点可见刀路、图例和零横向溢出。 + +新建 `config/freecad-cam-parity.json` 和 `check:cam-parity`,强制 60 个 Web 命令全部存在于 FreeCAD GUI 清册(56 个 runtime-probed、4 个 source-only),另将 `CAM_%s` 动态模板单独排除。机器合同将“兼容浏览器子集、非 exact 全量对标”作为可检查声明。任务已按 `CAM-21..CAM-32` 分派给 ORACLE、PLATFORM、CORE、KERNEL、TOPO、IO/DOC 和 QUALITY,连续链为 `CAM-21 -> CAM-22/CAM-23 -> CAM-24 -> CAM-25 -> CAM-26/CAM-28 -> CAM-27 -> CAM-29/CAM-30 -> CAM-31 -> CAM-32`;当前 `2 completed / 9 in_progress / 1 pending / 0 blocked`。 + +仍未关闭的是原生 Path 算法/几何语义、完整 Qt CAM 动态 UI oracle、OpenCamLib/CAMotics、原生实体材料去除与刀柄/夹具碰撞 oracle、4/5 轴、原生 Path FCStd 对象往返,以及具体机床/控制器 dry-run 与安全认证。因此 P01-P10 继续保持 `83/83`,原 `CAM-ALL` 仍是已通过的 compatible gate,但不升级为 FreeCAD CAM exact parity 声明。 + +## 201. 2026-08-07 CAM 全命令面与 ToolBit/Path 扩展 + +FreeCAD GUI 清册中的 CAM 命令已完成可操作面分区:56 个 runtime 命令与 4 个 source-only 可操作命令共 60 个,动态占位模板 `CAM_%s` 不作为按钮或菜单项。菜单和工具栏由同一 manifest 生成,保持 5 个菜单组、4 个工具栏组和 60 个唯一命令 ID,`notYetSurfacedCommands` 降为 0。 + +浏览器 CAM 域扩展到 22 种工序和 9 种 dress-up;Dogbone 与 Drag Knife 产生真实路径变换,ToolBit 支持版本化 JSON 导入/导出、更新和依赖安全删除,Tool Controller 同样支持更新/安全删除,已生成闭合路径可调整起点。应用层已接通 ToolBit Load/Save/Save As、全部显式工序与 dress-up、Simulator/SimulatorGL、Copy、Set Start Point、Stop 和模板导出;CAMotics、原生 Path metadata 对象等缺少浏览器等价运行时的功能继续显示明确边界。 + +Node CAM 测试为 12/12;Chrome CAM harness 实际构造全部 22 种工序、9 种 dress-up、ToolBit/Job asset round-trip、Undo/Redo、起点变化、23 点材料去除时间线、fixture collision 和 4/5 轴限位/post 证据,应用 E2E 实际打开并取消 Fixture、ToolBit Load、Drilling、Drag Knife、Post 5 轴五类新增 Task。质量闭环为 24 套、230 项单元测试、13 条真实应用流程和 3 张截图。CAM 任务状态为 `2 completed / 9 in_progress / 1 pending / 0 blocked`,因为原生 Path 数值/拓扑 oracle、FCStd Path 对象、原生实体去料、连续工具轴求解和机床认证尚未满足 exact 验收条件。 + +CAM-27 的浏览器兼容实现进一步加入 `materialRemovalTimeline()` 与 `collisionReport()`:材料去除使用有上限的 2D column raster,记录分辨率、网格、feed 时间、采样数、累计去除和剩余体积,重叠刀路不会重复扣料;碰撞使用连续刀路线段的 swept envelope,区分 holder-stock、cutter-fixture 与 holder-fixture,并记录路径索引、碰撞点、侵入量和间隙。两套报告均明确 `nativeEquivalent:false`,因此不会被误用为 FreeCAD/OCL 原生实体仿真的 exact 证据。 + +CAM-29 已进入执行:版本化 Job 资产保存 Stock、SetupSheet、全部 ToolBit/Controller、Operation/Dress-up、生成路径、Fixture、材料去除开关和版本;导入限制 16 MiB、集合/刀路点数量、类型枚举、有限坐标、引用完整性、刀号唯一性和 Job 身份,非法输入不会产生半恢复状态。Undo/Redo 以 100 个快照为上限并覆盖导入事务;Chrome 实测 Job asset 字节一致往返和 toggle/undo/redo 状态恢复。该证据只关闭网页资产生命周期,原生 Path FCStd 对象仍未完成。 +CAM-29 已进入执行:版本化 Job 资产保存 Stock、SetupSheet、全部 ToolBit/Controller、Operation/Dress-up、生成路径、Fixture、材料去除开关和版本;导入限制 16 MiB、集合/刀路点数量、类型枚举、有限坐标、引用完整性、刀号唯一性和 Job 身份,非法输入不会产生半恢复状态。Undo/Redo 以 100 个快照为上限并覆盖导入事务;Chrome 实测 Job asset 字节一致往返和 toggle/undo/redo 状态恢复。该证据只关闭网页资产生命周期,原生 Path FCStd 对象仍未完成。 + +CAM-31 已领取后续执行:浏览器端提供有上限的 2D column-raster 材料去除时间线、连续刀路线段 swept-envelope 碰撞分类,以及可复现的 3/4/5 轴旋转运动、限位诊断和 4/5 轴受控 G-code 输出。该实现全部标记为 `nativeEquivalent:false`;OpenCamLib/CAMotics、FreeCAD 原生工具轴求解、真实控制器 golden 和实体机 dry-run 仍由 CAM-31/32 负责。 + +## 202. 2026-08-07 CAD→OCL→CAMotics→G-code→LinuxCNC WASM 流水线 + +根据后续授权,CAM 的统一执行顺序固定为:`CAD/FreeCAD Path -> OpenCAMLib WASM -> CAMotics source stage -> G-code -> LinuxCNC WASM`。LinuxCNC WASM 是唯一的 G-code 解析、RS274 模态、RTCP、task/motion、trajectory planner、错误诊断和机床控制器验收权威;CAMotics 源码阶段只按其 `GCodeMachine` 运动契约生成受控 G-code,不再在 CAMotics 或 Web JavaScript 中复制 G-code parser。 + +本轮已下载并锁定 CAMotics `e84665f2fa9d1151f03282ac7e01320bc65e015b` 到 `CAMotics/`,校验 `GCodeMachine.cpp`、`GCodeModule.cpp` 和 `ToolSweep.cpp`。随后按镜像回退策略补齐 C! 1.7.2 与 SCons,构建并验证 CAMotics 1.3 headless CLI;浏览器仍只执行源码运动契约,不执行 ELF。OpenCAMLib WASM 锁定 `95b036fe28ce6d77c97b98e5fbc337904ae49560`,Chrome 150 实际执行 2 个三角面/14 个刀位点并通过确定性检查;OCCT 实体去除验证 stock `300`、removed `12`、remaining `288`、结构有效单实体、BRep 导出和资源释放 `0/0`。 + +FreeCAD 原生 CAM oracle 已实际运行 FreeCAD 1.1.1/Qt 6.8.2:Profile 32 条命令/20 条切削命令、56 个动态 CAM 命令、`Path::Feature` 与 `Path::FeaturePython` 原生 save/open/mutate/save/open 通过;Web `Path::PropertyPath` 可编辑 codec 仍保留为显式未闭合项。LinuxCNC 侧新增受控 iframe bridge:父页面只能提交已经生成的 G-code,LinuxCNC 页面负责 `loadProgram`、解析、task/motion 和运行,返回 `parserAuthority: linuxcnc-wasm`;桥接静态测试已通过,端到端 machine acceptance 继续由专用 Chrome 证据门收口。 + +新增复跑入口: + +```bash +npm run test:cam-pipeline +npm run check:cam-pipeline +npm run test:cam-native-simulation +npm run check:opencamlib-wasm +npm run test:chrome-cam-native-simulation +npm run check:chrome-cam-native-simulation +npm run test:chrome-cam-linuxcnc-machine +npm run check:chrome-cam-linuxcnc-machine +``` + +主链随后完成了强制 OCL 接管:`prepareCamPipeline()` 现为异步步骤,必须由锁定哈希的 OpenCAMLib WASM `PathDropCutter` 返回刀位;返回的刀位写回所选 Operation 后才进入 CAMotics 源码阶段并生成 LinuxCNC 程序。Node 单测只能显式注入 runner,生产浏览器路径没有静默跳过 OCL 的分支。 + +最终 Chrome 150 机器报告为 PASS:5 个 CAD 候选路径点经 OCL 解析成 48 个刀位点,CAMotics 阶段后的 XYZBC 程序为 2758 字节/65 行,LinuxCNC WASM 上游 RS274、task/motion 和 kinematics 先以 `dry-run` 接受,再以 `run` 接受 138 个块及 48 个轨迹段。程序包含 `M428/M429`、`G93/G94`、B 轴 `5→15` 和 C 轴 `359→361` 连续跨周;此前正 Z 程序被机床 `AXIS_Z [-475,0]` 正确拒绝,认证工件改到合法工作空间后才通过,未绕过限位。 + +CAM-21..CAM-32 当前为 `8 completed / 4 in_progress / 0 pending / 0 blocked`。继续项是完整 FreeCAD Path 算法/全部 Qt Task 状态、FeaturePython/full operation-object Path 语义、CAMotics GUI/TPL/浏览器同输入差分、任意曲线实体扫掠与认证机型以外的连续工具轴/生产安全门;总声明仍固定为 compatible browser subset,不升级为 exact FreeCAD CAM parity。 + +## 203. 2026-08-07 CAM 剩余边界收口 + +本轮把上一节列出的可验证子集补齐,并同步机器可读差异边界: + +- FreeCAD Qt 动态 oracle 现在实际回放 Job/Profile 的 `setEdit()`、Task panel 打开、OK/Cancel `QDialogButtonBox` 点击和关闭;每个面板观测到 14 个字段,报告为 `taskLifecycleVerified=true`。这关闭了 Task 生命周期子项,但完整选择、键盘、焦点、校验和全部工序面板仍是 `in_progress`。 +- Web Facade 已提供受限 `Path::PropertyPath` codec。对原生 `Path::Feature`,可读回 `.nc` 资源并追加 `M3 S12000`,FreeCAD 重开后由 5 条命令变为 6 条;资源路径、版本和 Center 元数据不可由该编辑 API 改写。`Path::FeaturePython` 仍是不执行代码的只读 proxy,完整 operation-object 语义不宣称。 +- Chrome 150 的 OCCT 去料 harness 新增 `continuous-segment-sweep-brep`:对曲线路径采样段建立定向圆柱和端点球并集,库存剩余体结构有效、单实体、去料体积约 `13.876647806980372`,释放后 `shapeCount/kernelReferenceCount=0/0`。这覆盖连续采样折线段,不等于解析 NURBS/圆弧的无弦误差 sweep 或 FreeCAD exact material removal。 +- CAMotics 源代码继续锁定 `e84665f2...`;C! 1.7.2 经镜像回退取得并以 `v8_compress_pointers=0` 对齐系统 V8 ABI,CAMotics 1.3 headless CLI 已构建。浏览器源码阶段仍只生成运动契约 G-code,Canonical G-code 的解析权唯一归 LinuxCNC WASM;工作区 `nativeExecutable=true` 与浏览器 `nativeExecutable=false` 分开报告。 +- LinuxCNC 新增 `web/scripts/check-production-safety-gate-matrix.mjs` 和对应 Node test,覆盖 XYZBC、XYZAC、XYZAB、XYZACB、XYZBCA、max5 六个配置。报告 `web/evidence/production-safety-gate-matrix.json` 为 PASS,但所有生产门均关闭:认证 XYZBC 为 `closed-digital-only`,其余为 `closed-machine-specific-certification-required`;`physicalMotionObserved=false`、`productionOpen=false`。该矩阵只证明 fail-closed 源/配置边界,不是实体执行器、碰撞、计量或生产安全认证。 + +本轮通过的关键命令: + +```bash +./npmw run probe:freecad-cam-path +./npmw run check:freecad-cam-path +./npmw run test:freecad-cam-path-report +npm run test:chrome-cam-native-simulation +npm run check:chrome-cam-native-simulation +cd cnc_wams_gpt6/linuxcnc-master/web +npm run check:production-safety-gates +npm run test:production-safety-gates +``` + +CAM-21..CAM-32 的机器状态仍为 `8 completed / 4 in_progress / 0 pending / 0 blocked`;总体声明保持 `compatible-browser-subset-not-exact-freecad-cam-parity`,未观测实体执行器认证。 + +## 204. 2026-08-07 CAMotics 原生 headless 构建与镜像回退 + +按“先参考中国网站,失败后继续其他网站”的要求,C! 依赖先尝试 `gitclone.com`,该入口返回 HTTP 502;随后转到 `ghproxy.net`,完整下载上游 `cbang` master 归档。下载归档为 5,863,064 字节,SHA-256 为 `c169add088bf40c23c52952b442e39d17626084a28f41e7bba7e1c43cd30fbee`,下载时远端 master 解析为 `9b6672a0e2b800a909d799ffa3ab46774cf171b8`。归档、C! `SConstruct`/`CODE_TAG`/`LICENSE` 指纹与来源全部记录在 `config/camotics-native-artifact.json`。 + +C! 1.7.2 使用 `strict=0 optimize=1 v8_compress_pointers=0` 构建,解决系统 V8 未启用 pointer compression 与初始 embedder 配置不一致导致的启动崩溃。CAMotics 提交 `e84665f2...` 随后以 `with_gui=0 with_tpl=0` 构建 `camsim`、`gcodetool`、`planner` 和 `build/camotics.so`。`camsim --version` 返回 `1.3`;对 `examples/slant_test/slant_test.camotics` 连续运行两次,均输出 120,884 字节、2,416 三角面的合法 binary STL,除 CAMotics 写入的非确定性 80 字节 STL header 外,facet payload 逐字节一致,稳定 SHA-256 为 `969d95c9f468e05d68b06e63f54c8fefb93e31912546751249d014df56d8fd0b`。 + +新增复跑入口: + +```bash +./npmw run build:camotics-native +./npmw run check:camotics-native +./npmw run check:opencamlib-wasm +./npmw run check:cam-pipeline +``` + +这次关闭的是“CAMotics 原生程序未构建”的 headless CLI 子项,不关闭 Qt GUI、TPL、浏览器内原生运行或相同 CAD/OCL 输入的 CAMotics/OCCT/FreeCAD 全量差分。原生 `camsim` 仅作为离线仿真 sidecar 证据;正式顺序仍是 `CAD -> OCL -> CAMotics source stage -> G-code -> LinuxCNC WASM`,规范 G-code 不经过 CAMotics parser,唯一解析/RTCP/task-motion/控制器权威仍是 LinuxCNC WASM。 + +## 205. 2026-08-07 CAMotics standalone WASM 内核 + +根据后续要求,已将 CAMotics 上游扫掠实现编译为独立 WebAssembly 内核。`native/camotics-wasm/build.sh` 使用 Emscripten 3.1.69、C++17、`-O3 -flto` 和 `STANDALONE_WASM=1`,直接编译锁定 CAMotics 提交中的 `Sweep.cpp`、`ConicSweep.cpp`、`SpheroidSweep.cpp`;未复制公式到 TypeScript。轻量 include overlay 只提供这些上游源文件所需的几何类型和日志/Move 前置声明,不修改 CAMotics 源码。 + +制品为 `public/vendor/camotics/camotics-sweep.wasm`,大小 `11932` 字节,SHA-256 为 `889588d2dc9755f84f56b8ebe1acc9bc1f0ded7e676e162a5a001011f4ebec5b`,零 imports,导出 ABI、Conic depth、Spheroid depth 和 sweep 包围盒计数。Node 结构门禁与 Chrome 150 实际加载均通过:Conic inside `1`、outside `-1`、Spheroid inside `1`、长段包围盒 `3`,重复执行确定性一致。 + +浏览器加载器 `src/facade/camoticsWasm.ts` 在实例化前验证响应 SHA-256、WASM imports 和 ABI;Chrome harness 报告 `backend: camotics-upstream-sweep-wasm`,`browserExecutable=true` 仅表示该扫掠内核可执行,`fullCamoticsProgram=false`、`gcodeParserIncluded=false`。完整 CAMotics Qt/TPL/文件系统/`camsim` 程序仍未进入浏览器,LinuxCNC WASM 仍是唯一规范 G-code parser/controller authority。 + +复跑命令: + +```bash +./npmw run build:camotics-wasm +./npmw run check:camotics-wasm +./npmw run test:camotics-wasm +./npmw run test:chrome-camotics-wasm +./npmw run check:chrome-camotics-wasm +``` + +## 206. 2026-08-07 CAMotics native target set and evidence reconciliation + +standalone sweep WASM 完成后,补齐了宿主侧 CAMotics 目标集合:固定 CAMotics `e84665f2...`、C! `9b6672a0...`、C++17 和 `v8_compress_pointers=0`,当前工作区同时保留 Qt5 `camotics`、TPL `tplang`、headless `camsim`、`gcodetool`、`planner` 以及 `build/camotics.so`。Qt/TPL 原生制品通过 `--help`、官方 TPL `10 passed / 0 failed` 和 Xvfb `1200x800` 可见窗口冒烟;CLI 通过 `--help`,OpenCAMLib 门禁也确认这些 sidecar 存在。 + +证据文件现在把三类运行边界分开记录:宿主原生 CAMotics 程序可用;浏览器只加载 `public/vendor/camotics/camotics-sweep.wasm` 的上游 Conic/Spheroid sweep 子集;LinuxCNC WASM 仍是规范 G-code 的唯一 parser/controller。浏览器报告中的 `browserExecutable=true` 仅指该零 imports sweep kernel 可执行,`fullCamoticsProgram=false`、`gcodeParserIncluded=false` 不变。 + +本轮最终门禁: + +```text +check:camotics-gui-tpl PASS +check:camotics-native PASS +check:opencamlib-wasm PASS +check:camotics-wasm PASS +test:camotics-wasm 3/3 PASS +check:chrome-camotics-wasm PASS (Chrome 150, deterministic) +check:freecad-cam-path PASS (Profile/Helix oracle subset) +test:freecad-cam-path-report 7/7 PASS +``` + +FreeCAD CAM 仍保持 `compatible-browser-subset-not-exact-freecad-cam-parity`;完整浏览器 CAMotics 程序、同输入 simulator differential、全量 FreeCAD Path/Task 语义和 FeaturePython operation-object 往返仍是未关闭差异。LinuxCNC 生产安全矩阵继续 `PASS` 但所有实体生产门保持关闭;当前未观测实体运动,也没有实体机或计量认证声明。 + +## 207. 2026-08-07 发布签名门恢复 + +此前全量 `verify` 的唯一阻塞是变更后的 `dist/` 与旧发布清单不一致,而环境没有 `RELEASE_SIGNING_PRIVATE_KEY/RELEASE_SIGNING_KEY_ID`。现已建立受控 Ed25519 签名入口:`.secrets/release-signing-private.pem` 仅本机保存且权限固定为 `600`,`.gitignore` 排除整个 `.secrets/`,仓库只保留对应公钥;`scripts/release-signing-key.mjs` 在生成前检查密钥类型、权限和公钥匹配,`scripts/sign-release-artifacts.mjs` 统一注入签名环境并调用清单生成器。 + +`generate:release-artifacts` 已切换到该入口,`check:release-signing-key`、`check:release-artifacts`、`check:release-closure` 和 `test:release-signature` 均以同一 Ed25519 公钥复核。发布清单已重新生成;私钥内容不写入 Git、日志、`dist/` 或文档。SBOM 闭环不再硬编码旧的 172,而是与锁定审计清单的当前组件总数一致(当前为 173),避免下次依赖锁定变更再次制造伪阻塞。 + +## 208. 2026-08-07 FeaturePython Path 资源级编辑 + +在不放宽 Python 执行边界的前提下,FCStd Facade 新增 `FcstdPathAccessOptions.allowFeaturePython` 和 `FcstdPathEdit.allowFeaturePython`。默认仍拒绝 `Path::FeaturePython`,只有调用方明确 opt-in 才能编辑已有 `Path::PropertyPath` 指向的 `.nc` 资源;重写过程保留 `Document.xml`、GuiDocument、脚本、未知条目、资源路径、版本和 Center 元数据,并且只重新压缩原生路径文本。 + +FreeCAD 1.1.1/Qt 6.8.2 oracle 已验证 `PythonPath` 由 Web 追加 `M2` 后从 5 条命令重开为 6 条,`scriptExecution=blocked`;Node 报告扩展到 8/8,`check:freecad-cam-path` 通过。该增量关闭了 FeaturePython 路径资源的安全编辑缺口,但没有宣称 Python-backed 属性、重算、完整 operation-object 或全部 Path 算法 exact parity。 + +## 209. 2026-08-07 CAM Job 元数据命令闭环 + +`CAM_Comment`、`CAM_PropertyBag` 和 `CAM_Compound` 不再停留在兼容提示:Job 现在持久化评论、字符串/数字/布尔属性以及由至少两个现有 Operation 组成的复合组。三类对象共用同一 `CamSnapshot`,因此参与版本化 Job JSON、导入校验、OPFS 资源保存和 Undo/Redo;删除 Operation 会自动移除无效复合组。属性名、值长度、集合数量、重复引用和有限数值均有边界校验,旧版没有 `metadata` 字段的 Job 会恢复为空元数据。 + +CAM Task Panel 已提供对应输入控件,Chrome 150 证据新增类型保持、Job 字节级重开、依赖清理和撤销恢复检查;`test:cam` 13/13、`test:chrome-cam` 与 `check:chrome-cam` 均需通过。该闭环只关闭 CAM Job 元数据语义,不等同于 FreeCAD 原生 Path operation-object、Python recompute 或完整 Qt Task 校验。 + +## 210. 2026-08-07 3D 面拾取与稳定 TopoRef 预选 + +Three.js Viewport Adapter 现在保留 Bitbybit 网格中每个面对应的三角形范围,射线命中后把三角形索引映射为稳定 `persistentId`,再通过 Facade `selection.selectSubshape()`/`preselectSubshape()` 更新文档选择状态。悬停面使用独立半透明高亮网格;离开、换面、换 Shape 和销毁适配器时会释放几何与材质,避免长会话积累 GPU 资源。 + +Node 测试覆盖两面/三三角形的范围映射和越界拒绝;`test:facade` 为 168/168,生产构建通过。Chrome 150 应用回放通过,工作区 canvas 仍由 Bitbybit OCCT 提供且无页面错误。当前完成的是可见面的拾取、预选和高亮链路;边/点拾取、多对象同时渲染、框选和诊断候选的主动 3D 闪烁仍需后续补齐,因此 TSN-09 保持 `IN PROGRESS`。 + +## 211. 2026-08-08 3D 边/顶点拾取与诊断聚焦闪烁 + +`MeshAsset` 现随面三角形范围一起携带网格派生的稳定边线段和顶点坐标;Three.js 适配器在实际 Shape 射线命中后,以 CSS 像素容差优先判定顶点、其次边、最后面,并将三种结果统一回调 Facade 的 `selectSubshape()`/`preselectSubshape()`。边使用独立 Line 高亮,顶点使用屏幕尺寸稳定的 Points 高亮,换 Shape、离开和销毁时均释放 GPU 资源。 + +诊断树的 `select-object` 修复动作新增显式 `diagnostic.focused` 事件。React 只投影该事件,Viewport Adapter 在选中对象上执行 1.4 秒、三周期的发光脉冲;普通通知文本不再承担控制协议。Facade 回归测试同时验证事件带回原 diagnosticId 和目标 objectId。 + +生产构建与 `test:facade` 168/168 通过。当前边/顶点来源仍是网格签名回退:当浏览器内核未返回可映射的 BRep 曲线参数时,内部三角剖分边不能宣称等同于 FreeCAD/OCCT 原生边,因此能力保持 `experimental`。 + +Facade 选择边界进一步增加了有序、去重的 `selectedObjectIds`/`selectObjects()`,保留 `selectedObjectId` 作为主对象兼容投影;模型树的 Shift/Ctrl/Command 点击可增删选择,删除、建新文档、加载文档和子形状选择会同步修正选择集合。Viewport Adapter 增加修饰键拖框、可见框和 `onBoxSelect` 回调,拖框结束后的 click 会被抑制,避免父级清空选择。当前工作区仍只注册一个可见 Mesh,因此这个切片只完成选择集合和框选手势协议,不能宣称完成跨多个可见对象的空间筛选;下一步仍需对象到 Mesh 注册表、投影包围盒/穿越框判定及多对象高亮。 + +## 212. 2026-08-08 多对象 3D 场景与真实框选 + +上一节保留的单 Mesh 边界已经关闭。Viewport Adapter 新增带 `objectId` 的 `setMeshes()` 场景注册表,同时保留 `setMesh()` 兼容入口;射线命中、面/边/点拾取、预选、高亮和诊断闪烁现在都从命中的 Mesh 返回真实对象 ID。选择材质按完整 `selectedObjectIds` 集合投影,不再只高亮主对象;`fitAll()` 和 CAM 路径映射也改为面向场景对象集合。 + +工作区按文档 `Visibility` 和 Part Design Body `Tip` 收集几何缓存:独立 Part Shape 可同时显示,Body 默认只显示 Tip。模型树上下文菜单和 Space 键现会实际切换 View 属性,而不是只显示提示。空白左键拖动可替换选择,Shift/Ctrl/Command 拖动可增量选择;从左向右使用完全包含的 window 规则,从右向左使用包围盒相交的 crossing 规则。投影筛选不依赖遮挡,因此可选择矩形内被其他实体遮住的文档对象。 + +Facade 测试增至 169/169,新增 window/crossing 边界用例。Chrome 150 生产包回放实际创建 `Box` 和 `Cylinder`,Canvas 报告两个 Mesh;右向左穿越框返回 `box,cylinder`,模型树同步选中两项,WebGL error 为 0、页面错误为 0。该里程碑关闭多对象同时渲染和真实空间框选缺口;仍未关闭的是网格三角剖分边与 OCCT 原生 BRep 曲线/拓扑历史之间的精确语义差异。 + +## 213. 2026-08-08 OCCT BRep 边/顶点拾取接线 + +上一节剩余的三角剖分边误选问题已从正常运行路径移除。`geometry.mesh()` 现在并行读取 Bitbybit `shapeToMesh` 和 `plugins.topology.describe`:面三角范围使用 analytic Surface TopoRef,每条 `edgeList` OCCT Edge 的完整折线采样共享同一个 analytic Curve TopoRef,顶点坐标直接取 BRepGraph vertex 描述。曲线悬停会高亮该 persistentId 的全部线段,不再只显示第一段;只有 topology 插件不可用或数组不一致时才显式回退旧的 tessellation 签名。 + +新增 Facade 负例用两个三角形组成的四边形,确认内部对角线不会进入 OCCT Edge 拾取载荷;测试总数为 170/170。Chrome 150 对实际 Box + Cylinder 报告 `topologySource=occt-analytic`,三类来源均为 analytic,合计 15 条 Edge、10 个 Vertex;双对象穿越框和原有完整应用流程继续通过。 + +该增量对齐的是“拾取几何与当前对象拓扑快照使用同一组 OCCT analytic TopoRef”,不是完整 FreeCAD 拓扑命名宣称。跨 Boolean/特征的 `Generated/Modified/Deleted` 原生历史、同构子形的歧义消解和所有 FreeCAD ElementMap 命名规则仍属于 TSN 后续任务。 + +## 214. 2026-08-08 跨特征原生历史、邻接消歧与 ElementMap 命名 + +本轮将已有独立 OCCT history Worker 接入重算器的普通单向特征分支:Part/PartDesign Pad、有限长度 Pocket、单角 Revolution 和单角 Groove 现在在输入 Shape、方向、轴和角度满足约束时调用 `topologyHistory()`,并把返回的 `Modified/Generated/Deleted` 按源对象、源 kind、结果 kind 和稳定 TopoRef 写入对象历史;Through-all、双向、Two angles、Up-to-face、带锥度或输入 Shape 不可用的模式继续安全回退签名历史,不把近似结果伪称原生历史。Facade 回归新增重算级断言,验证四种 operation 路由均实际发生。 + +拓扑迁移新增邻接指纹消歧:重复 analytic 签名只有在邻接目标签名形成唯一一对一指纹时才继承原 persistent ID;完全对称或邻接损坏仍返回 `ambiguous`,保留候选并阻止静默错绑。该策略覆盖面、边和顶点的邻接关系,不依赖 transient OCCT index。 + +对象拓扑快照新增 schema v1 `ElementMap`:按 FreeCAD `FaceN`、`EdgeN`、`VertexN` 规则分配名称,Preserved/Modified 关系继承源名称,Generated 分配未占用的新名称,Deleted 与 ambiguous 保留状态和候选来源。Project persistence 会复制并校验名称、唯一性和 transient ID;FCStd Shape 属性未显式提供原生映射时自动写出当前 live ElementMap,显式 `ElementMap` 仍优先保留。新增回归后 Facade 测试为 174/174。 + +本轮关闭的是“已有原生 provider 能力未接入普通跨特征重算”和“Web 拓扑没有可持久化 FreeCAD 名称”的缺口;仍不宣称所有复合/多阶段 PartDesign 特征、跨 Boolean 一对多 lineage、完整 FreeCAD ElementMap2 历史 token 迁移及所有对称模型都达到 exact parity。任何无法由原生关系或唯一邻接指纹证明的情况继续显示为 fallback/ambiguous。 + +## 215. 2026-08-08 ElementMap2 原生协议与 30 模型阶段门 + +采集器还覆盖局部 Fillet/Chamfer,并在关闭/重开每个 FCStd 后比较 mapped names;该结果直接计入 `roundtripNameDrift`,不是只对同一进程内的对象快照做比较。 + +本轮把 FreeCAD 1.1.1 的原生 `ElementMap` 文本格式落实为 `src/facade/elementMap2.ts`:解析 `PostfixCount/MapCount/ElementMap/ChildCount/NameCount`、索引 token、命名 token、子 map 和 string-id,并提供 schema v1→v2 迁移、克隆和 canonical writer。FCStd inspection 使用同一 parser 校验资源,Facade 暴露 `serializeElementMap2Resource()`;旧的摘要字段保持兼容。解析器拒绝越界计数、非法 hex、前向子 map 引用和截断资源,同时兼容历史 WebCAD 的零 type-count fixture。 + +ElementMap2 writer 现在先执行结构校验,再按 map index 和 section 数量规范化输出;`validateElementMap2()` 检查 root map、child map 图、type count 和 token 结构,`elementMap2SemanticDigest()` 对 postfix、child/string-id 和原始命名 token 生成稳定摘要。两个 FreeCAD 阶段门都会比较摘要而不是只比较计数,因此命名 token、来源图或 schema 迁移发生语义漂移会直接失败。 + +原生历史协议保留 v1 请求号以兼容现有 Worker,新增有序 `inputs`、`stages`、`resultStepByStage` transport;记录支持任意 inputId、source/result stage、单个或多个 result index。Facade `NativeTopologyHistoryRecord` 和持久化关系保留这些 stage 字段,删除记录仍兼容旧 provider 发出的 `resultIndex=-1`;同一来源的多个 OCCT 结果现在会归并为一个 `resultIndexes` 关系。新增 `captureNativeTopologyHistoryStages()`,按产生结果的 stage 解释索引、校验 stage DAG,并在重复签名存在邻接唯一指纹时消歧,否则保留 `ambiguous` 候选;`composeNativeTopologyHistoryLineage()` 会把上游对象的 native stages 去重并接到下游来源关系,使 Pad→Pocket、Boolean→Dress-up 等历史不再分裂成孤立片段。重算提交为每个已接入 operation 写入显式 stage 描述,并把 stage 输入/STEP 元数据送入 native coordinator;Up-to-face、双向、Midplane、Two angles 的几何语义继续由已有多 Shape/顺序 Cut/Revolution 分支执行,native history 在 provider 不能证明阶段几何时保持 fallback,不伪报 exact。 + +新增 FreeCADCmd 真实采集器 `scripts/freecad-composite-history-elementmap-oracle.py` 及 runner,建立 30 个独立 Boolean、PartDesign 和复合特征模型;每个 case 保存 FCStd,采集阶段 `getElementHistory()`、`getElementMappedName()`、Shape 质量、ElementMapVersion/Size 和压缩包内原始 `*.Map.txt`(当前 30/30 case、91 个资源)。`check-freecad-composite-history-elementmap-oracle` 重新解析并写回全部资源;`check-freecad-exact-history-elementmap-gate` 联合 30-case 报告和现有 FreeCAD roundtrip 证据,计算 `wrongBindings=0`、`unexplainedRelations=0`、`roundtripNameDrift=0`、`elementMap2ParseFailures=0`、`elementMap2SemanticFailures=0`。 + +本轮关闭了“没有真实 30 模型基线”“ElementMap2 只能摘要读取”“native history 无法表达多输入/一对多/多阶段”的工程缺口,并把 stage/语义摘要接入运行时和阶段门;当时仍未宣称完整 FreeCAD 等同的是 provider 返回最终结果而非每个中间 stage Shape 时的全部跨特征 Generated/Modified/Deleted 计算、没有唯一邻接证据时的同构子形最终消歧,以及由 FreeCAD 内部算法生成而非原样转运的完整 ElementMap2 命名历史规则。上述前两项工程接线由下一节继续闭合,无法证明的 provider/算法仍不得据最终几何提升为 `exact`。 + +## 216. 2026-08-08 复合 builder 逐阶段证据与 ElementMap2 token 生成 + +复合历史不再依赖 provider 的最终 Shape 猜测中间过程。`NativeTopologyHistoryRecords` 现在可携带不可枚举的 `stageCaptures`,每项包含实际 stage operation、输入/结果对象、ordinal、由该 stage `resultStep` 重新导入得到的完整 `SubshapeTopology`,以及只按该结果索引空间解释的原生记录。重算器把这些证据逐项交给 `captureNativeTopologyHistoryStages()`,内部工具 Shape 通过 `sourceStageId/resultStageId` 接到最终 Cut/Pattern,不再把中间索引误套到最终 Shape。 + +当前已接入的真实复合路径包括:Pocket 的 `Pad tool -> Cut`、Groove 的 `Revolution tool -> Cut`、Hole 的 `Cylinder tool -> Cut`,以及有序 MultiTransform 的组件 stage。每个 stage 都单独通过 native Worker 返回 STEP/history,再由 Geometry Worker 导入、取拓扑并释放。Chrome 150 回放对 Pocket、Groove、Hole 和 MultiTransform 强制检查两阶段 DAG、非空中间拓扑、记录来源 stage、最终结果质量以及 ShapeHandle/kernel reference `0/0`;因此这些路径不再落入“provider 只返回最终 Shape”的旧边界。旧 provider 若不声明组成 operation,仍走兼容的单响应路径,且不会获得逐阶段 exact 证据。 + +`elementMap2.ts` 新增 FreeCAD 1.1.1 `ElementMap::save()` 的 token 生成端:从显式 `MappedNameRef` 证据生成 `:.`、`$` 或 `;`,按一基 postfix 表和十六进制 element/postfix/StringID 写出;同时修正 child StringID 的原生 `0.` 兼容规则。文档级 append API 会保持已有 postfix index 不变,按 section/indexed type、mapped postfix 的类别顺序追加缺项并写入新 name entry。生成器要求调用者提供 mapped postfix、marked StringIDs、prefix StringID 或 IndexedName,拒绝从最终几何杜撰。反向证据解码会把已持久化 token 恢复为同一输入,再经生成器重建。 + +Web `ElementMap` 的名称继承也会按 `sourceStageId/resultStageId` 递归展开内部工具对象,并带环检测回溯到原始 Base/Profile;测试锁定 `Profile -> tool -> final` 后仍继承外部来源名称,而不会把临时 stage object 当成永久命名根。 + +30 模型、91 个真实 ElementMap2 资源的 exact gate 新增 `elementMap2TokenWriterFailures=0`:每个 FreeCAD token 都必须先解为命名证据,再由新 writer 生成完全相同的 raw token;原有 `wrongBindings=0`、`unexplainedRelations=0`、`roundtripNameDrift=0`、parse/semantic failure 均继续为 0。由此关闭的是“Web writer 无法产生新 token”和“已有 token 只能原样搬运”的缺口,不是允许凭最终几何逆推出 FreeCAD 私有命名决策。任意尚未接线的复合 feature 或未提供 MappedNameRef/StringHasher 证据的私有算法仍必须标为 compatible/fallback;系统级 `FreeCAD exact` 仍受同构子形无唯一原生证据及未逐项纳入黄金模型的工作台算法约束。 + +验证结果:Facade `178/178`、Pocket/Groove/Hole/MultiTransform 四个 Chrome staged-history 回放与静态检查、OCCT history smoke、30 模型/91 资源两级门、TypeScript/Vite 生产构建及 `git diff --check` 全部通过;四个 Chrome 回放结束后 ShapeHandle/kernel reference 均为 `0/0`。 + +## 217. 2026-08-09 双侧与目标面特征的原生 history 接线 + +`NativeTopologyHistoryInput` 新增有序 `featureSides`,每侧保存实际方向向量以及 Revolution/Groove 所需角度。重算器不再把属性面板中的原始 `Length/Angle` 直接当作原生 history 参数:Reversed 会进入向量符号,Up-to-face 会重新解析稳定面 TopoRef 并写入实际目标距离,Two sides 使用 `Length/Length2`,Midplane 拆成等长正反侧,Two angles 使用各自角度和相反轴。Part 双向 Extrusion/对称 Revolution 也复用同一协议。历史协调器在所有 operation 入口统一登记文档版本,修复 Pad 逐阶段请求可能被误判为 `stale` 的旧缺口。 + +GeometryRuntime 对双侧加性特征执行 `builder + builder + Fuse`,对双侧减性特征执行 `builder + builder + Fuse tool + Cut`;每一级都通过原生 Worker 返回独立 STEP、完整 topology 和 Generated/Modified/Deleted,再以非枚举 `stageCaptures` 交给 ElementMap lineage。Pocket 实几何同步改为先融合正反刀具、再单次 Cut,消除了顺序 Cut 在共同分界面产生结构无效 Shape 的问题;相邻加性实体融合保留分界边,以通过 OCCT 结构检查。 + +新增 Facade 回归锁定 Up-to-face `7 mm`、Pad Two sides `+6/-2`、Revolution Midplane `90/90` 和 Groove Two angles `120/60` 的有效 sweep,并验证 3-stage 加性与 4-stage 减性 DAG,测试总数为 `180/180`。Chrome 150 的 Pocket 门新增真实 `Pad + Pad + Fuse + Cut`:四级 topology 分别为 `26/26/42/66` 项,最终 20 条关系、结构有效、单 solid、释放后 `0/0`;Revolution 门新增真实 `Revolution + Revolution + Fuse`:三级 topology 为 `26/26/42` 项,最终 90 条关系、结构有效、单 solid、释放后 `0/0`。 + +本节关闭的是 Up-to-face/双侧/Midplane/Two angles 不进入 native history 参数协议的缺口,以及 Pocket 双侧顺序 Cut 的结构问题。本节结束时 Groove 双角仍采用双 builder/Fuse 路径,在具有共面分界的黄金截面上报告结构无效;下一节根据 FreeCAD 1.1.1 源码确认的“轮廓预旋转 + 单次总角度 sweep”语义替换该路径并建立通过型 Chrome 门。未提供 MappedNameRef/StringHasher、同构消歧或工作台私有 builder 证据的算法继续保持 compatible/fallback,不能由最终几何推导为系统级 exact。 + +## 218. 2026-08-09 Groove 双角单 sweep 与 StringHasher 证据闭环 + +FreeCAD 1.1.1 `FeatureGroove.cpp`/`FeatureRevolution.cpp` 的 TwoAngles 实际语义已按源码落实:总 sweep 为 `Angle + Angle2`,profile 先绕同一轴旋转 `-Angle2`,随后只创建一个 Revolution builder;Groove 再以该单一刀具执行一次 Cut。native history provider 新增 `rotate` operation,并按 `rotate -> revolution -> cut` 返回每一级 Shape/history。GeometryRuntime 直接导入 native provider 返回的最终 BREP,同时保存 `BRepCheck_Analyzer` summary;不再用两个共面刀具的 Fuse 猜测 FreeCAD 结果。 + +Chrome 150 的 Revolution/Groove 门现分别锁定 `120/60` 双角:两者均要求 native `isValid=true`、单 solid、实际 stage 顺序和释放后 `0/0`;Groove 体积为 `800 - 3π = 790.5752220392302`。浏览器 BRepGraph 仍列出 STEP/BREP 恢复后“CoEdgeDef has no Curve2D representation”的已知诊断,因为该实现允许平面 pcurve 按需推导、其 validator 却要求显式存储;门禁保留全部 `graphStructuralIssues`,只把这一精确已解释类型排除出 `unexplainedStructuralErrors`,其值必须为 0。OCCT 原生有效性不再被该传输层诊断误判,其他结构错误仍会阻断门禁。 + +新增 `src/facade/stringHasher.ts`,逐项实现 FreeCAD 1.1.1 `StringHasher.Table.txt` v1 codec:十六进制/相对 StringID、related-ID 差分、flags、Postfixed/PostfixEncoded/Indexed/PrefixID、`TextOutputStream` 多行负载,以及 schema v1→v2 迁移、克隆和校验。writer 已用仓库内真实 `PartDesignExample`、`EngineBlock`、`BIMExample` 共 1638 个 StringID 校准为逐字节相同写回。FCStd inspection 现在返回结构化 StringHasher document/validation,把 ElementMap2 的 child IDs、suffix IDs 和 `$#id:index` prefix ID 全部闭合到同一表;悬空证据直接拒绝。writer 可接受结构化 `stringHasherTable`,并禁止与 opaque 表同时提供。 + +30 模型 oracle 现在同时采集 FCStd 中的 `StringHasher.Table.txt`:30/30 case 中 11 个含真实表,连同 91 个 ElementMap2 资源进入 exact gate。新增 `stringHasherParseFailures=0`、`stringHasherSemanticFailures=0`、`stringHasherEvidenceFailures=0`,原有错误绑定、未解释关系、名称漂移和 ElementMap2 三项失败计数继续为 0;Facade 回归为 `182/182`。 + +本节关闭的是 Groove TwoAngles 当前黄金截面的原生结构有效性,以及“StringHasher 只能作为不透明附件、不能解析/迁移/写回/核对引用”的缺口。仍保留的准确边界是:WebCAD 只能从实际 MappedNameRef/StringHasher 表或逐阶段原生 builder 证据生成相同 token,不能从最终几何发明 FreeCAD 私有算法尚未提供的新 StringID、哈希或命名决策;无证据时必须保持 compatible/fallback。系统级 exact 仍要求其余工作台算法逐项纳入原生黄金模型,并要求同构子形具有唯一原生来源证据。 + +## 219. 2026-08-09 运行时命名证据、跨阶段 ElementMap2 与能力等级阶段门 + +新增 `src/facade/nativeNamingEvidence.ts` 作为运行时证据合同:`NativeMappedNameRef` 保存结果 kind/index/persistentId、FreeCAD `MappedNameRef` token 输入、关系、跨对象来源和同构候选;`NativeStageNamingEvidence` 同时保存可选的结构化 StringHasher 表、ElementMap2 文档和五态状态(`native-evidence`、`opaque-preserved`、`final-shape-only`、`ambiguous`、`missing`)。验证器会检查 StringID 是否存在于同一张表、映射是否重复、来源是否完整、歧义是否至少保留两个候选,并拒绝在 `final-shape-only` 阶段附加伪造 token。 + +native history stage capture 现在携带该证据。GeometryRuntime 对 provider 返回的实际命名证据做 stage/result 绑定校验;provider 只返回最终 Shape 时明确写入 `final-shape-only`,Pocket/Groove/Hole/有序 MultiTransform 等手工复合数组也统一写入同一边界。重算历史保留 `namingEvidence`,ElementMap snapshot 在有证据时深拷贝保存,缺证据不会被升级为 exact。 + +`elementMap2.ts` 新增跨阶段映射对象和 JSON parser/writer:每个 stage 保存输入 stage、结果对象、原生 token、来源引用和 `stable/ambiguous/generated/deleted` 状态。`ambiguous` 记录候选集合并通过写回验证;同构子形没有唯一来源时不会按数组顺序猜测。新增 30-case 黄金采集字段 `namingEvidenceStatus`:219 个阶段均显式标为 `final-shape-only` 或含原始 StringHasher 时的 `opaque-preserved`,无缺失和越界。 + +`config/compatibility-matrix.json` 现在按 feature 登记能力等级:Pad/Pocket/Revolution/Groove/Boolean 为 `compatible` 子集,Fillet/Chamfer/MultiTransform 仍为 `experimental`;每项都列出 exact 阻断条件。`systemExactEvaluation.exact=false` 且阻断条件固定为“FreeCAD 私有 token 算法、缺少原生 builder stage、无唯一同构来源”。`npm run verify` 新增 `check:freecad-native-naming-evidence`,并把黄金模型的命名证据缺失/边界违规计数接入 ElementMap2 exact gate。 + +本节完成的是证据建模、stage 挂接、多阶段名称映射、歧义持久化和逐 feature 能力分级;不是从几何推导私有 StringHasher/MappedNameRef。系统级 FreeCAD exact 仍保持关闭,直到每个 feature 都有逐阶段原生 Shape/history 与原生命名证据。 + +## 220. 2026-08-09 FreeCAD Web exact 全范围任务与机器门禁 + +新增 `config/freecad-web-exact-parity-plan.json`,把原 P01..P10 已完成的浏览器 compatible 发布范围与新的系统 exact 工作分开。新计划固定 10 个 program、52 项任务,覆盖锁定源码清册的 34 个模块、入口清册的 15 种格式和 6 类入口;每项记录优先级、依赖、交付、验收、当前可执行证据和 exact 阻断原因。当前状态为 `1 completed / 37 in_progress / 14 pending / 0 blocked`,唯一完成项是 `EX-TSN-00` 无证据 fail-closed;这避免把已存在的兼容子集或静态 UI 清册误报为完整 FreeCAD。 + +新增 `scripts/check-freecad-web-exact-parity-plan.mjs`,校验 EX01..EX10、任务 ID/依赖无环、证据脚本存在、所有开放任务都有阻断原因、模块/格式/入口与锁定 inventory 完全一致、三项命名边界仍存在,以及 `EX-REL-01` 在上游未完成时不得关闭。`check:execution-plan` 现在同时执行旧 P01..P10 发布计划和新 exact 计划,因此默认 `npm run verify` 会阻断漏项、陈旧任务计数、proxy 模块被静默删除或系统提前提升 exact。 + +新增 `scripts/check-freecad-web-exact-promotion.mjs` 作为第二道 promotion gate:当前 `claim.exact=false` 时只允许输出 `freecad-web-exact-promotion-fail-closed`;任何未来将 claim 改为 true 的提交都必须同时提供 `config/freecad-web-exact-promotion-report.json`,由 `EX-REL-01` 确认 52/52 任务、34/34 exact 模块、八项零差异指标和八类证据,否则默认 verify 失败。当前门禁实测为 `EX-REL-01=pending`、`completedTasks=1/52`、`exactModules=0/34`。 + +## 221. 2026-08-09 EX-REL-01 promotion 实施手册与报告契约 + +新增 `docs/freecad-exact-promotion-runbook.zh-CN.md`,把 52 项 exact 任务拆为七个连续实施阶段:基线/oracle、kernel/history/naming、App/特征内核、FCStd/格式、GUI/工作台、FEM/CAM/平台、QA/promotion。每个阶段列出任务 ID、执行命令、交付物、退出条件和失败回退;任何阶段失败都保持当前能力等级,不得从最终几何补推原生语义。 + +新增 `config/freecad-web-exact-promotion-report.schema.json`,固定 EX-REL-01 报告必须包含 52/52、34/34、八项零指标和八类证据。当前不生成该报告;在所有上游任务完成前,`check:freecad-web-exact-promotion` 必须继续输出 `freecad-web-exact-promotion-fail-closed`。 + +## 222. 2026-08-09 EX-ORA-01 桌面 oracle 与 inventory 对账 + +新增 `scripts/check-freecad-oracle-coverage.mjs` 并接入 `check:execution-plan`。它读取锁定的 `.cache/freecad/reference-desktop.json`,逐项核对 34 个模块、1113 个 GUI command、source-only command 原因和 TypeId/property inventory;当前真实结果为 `compiled-importable=30`、`not-built=4`、`runtimeObjectCount=7`、`staticObjectCandidateCount=1673`,GUI command ID 与观察记录全部对齐。 + +这关闭了 EX-ORA-01 的“清册与桌面报告未机器对账”子项,但不关闭完整 oracle:4 个未构建模块仍需 build/proxy 决策,1673 个静态对象候选仍需逐对象 runtime probe。`EX-ORA-01` 继续保持 `in_progress`,`systemExact=false`,promotion gate 不受影响。 + +`config/compatibility-matrix.json` 的 `systemExactEvaluation` 已指向该计划并登记 promotion task 和任务计数。最终提升条件固定为 52/52 completed、34/34 exact,同时 `wrongBindings/unexplainedRelations/roundtripNameDrift/unknownSemanticDifferences/namingEvidenceMissing/namingEvidenceBoundaryViolations/unexplainedModules/releaseBlockers` 全部为零。没有原生 MappedNameRef/StringHasher、逐阶段 builder 或唯一同构来源时仍不可从最终几何补推。 + +## 223. 2026-08-09 EX-ORA-02 黄金模型覆盖矩阵门禁 + +新增 `config/freecad-golden-coverage-plan.json` 和 `scripts/check-freecad-golden-coverage.mjs`。该门禁把 35 个 Part/PartDesign feature family 拆成七个独立维度:成功夹具、失败夹具、原生 history、复合阶段、ElementMap2 资源、FCStd 往返和浏览器回放。它同时核对固定的 FreeCAD 1.1.1 提交、100/51 个主成功/失败夹具、5/5 个 supplemental feature-family 成功/失败夹具、30 个复合 case、219 个阶段、91 个 ElementMap2 资源、11 个 StringHasher 资源、22 个 FCStd 往返场景和 100 个浏览器黄金报告。 + +当前报告为 `freecad-golden-coverage-pass`,但仅表示清单和已有证据结构一致,不表示 exact 完成:105/56 个文件夹具与额外原生 oracle 共提供 27 项成功、23 项真实 rejected 失败证据,35 个 family 均满足当前定义的适用维度。复合阶段已更新为 `native-evidence=219/219`,其中只有 74/219 阶段的全部子形具有 MappedName 私有 token 证据,42 个操作阶段仍无中间 builder 证据;35/35 仅代表每族基础边界覆盖,不代表参数 mutation 穷举、逐阶段 builder 或命名 exact。使用 `./npmw run check:freecad-golden-coverage -- --details` 可查看逐 family blockers 和全局 blockers。该门禁已接入 `check:execution-plan`/默认 `verify`。 + +复跑命令: + +```bash +./npmw run check:freecad-golden-coverage +./npmw run check:freecad-golden-coverage -- --details +./npmw run test:golden:freecad:families -- --json +./npmw run test:golden:freecad:family-failures +./npmw run check:freecad-partdesign-failures +./npmw run check:freecad-partdesign-revolution-groove +./npmw run check:freecad-partdesign-transform +./npmw run check:freecad-part-builders +./npmw run check:execution-plan +``` + +EX-ORA-02 继续保持 `in_progress`;在覆盖矩阵和逐阶段原生证据闭合前,`claim.exact` 与 `systemExact` 均保持 `false`。 + +## 224. 2026-08-10 PartDesign 失败语义与 Revolution/Groove 原生成功证据 + +新增 `freecad-partdesign-failure-oracle`,以锁定的桌面 FreeCAD 1.1.1 运行 17 个 PartDesign TypeId 的缺输入边界。13 项返回原生 rejected 诊断;Mirrored、MultiTransform、LinearPattern、PolarPattern 在无 Originals 时保持 `Up-to-date + Valid + null Shape`,被明确分类为 4 项 `accepted-empty`,不再用“创建成功但为空”伪装失败覆盖。checker 同时拒绝把模块缺失或未知 TypeId 当作 feature 失败。 + +新增 Revolution/Groove 原生成功 oracle,实际创建 profile、重算并校验有效单 Solid;两项分别得到体积 `75.39822368615502` 与 `995.2876110196153`。两道 checker 已进入默认 `check:freecad-sketcher-constraints`,并由质量闭环再次核对;EX-ORA-02 的结构化证据列表也已登记。 + +本增量把 family 覆盖推进到 `25/35`,没有改变系统声明。后续补齐为 35/35 基础成功/失败边界,但参数 mutation 仍由独立矩阵 fail-closed;无原生 MappedNameRef/StringHasher、逐阶段 builder 或唯一同构来源时,仍禁止从最终几何生成私有 token 或中间历史。 + +## 225. 2026-08-10 Part 高级 builder 与 PartDesign 变换边界闭合 + +新增 `freecad-part-builders-oracle`,直接创建并重算 `Part::Extrusion/Revolution/Loft/Sweep/Fillet/Chamfer` 文档 feature。6/6 成功案例均为有效单 Solid;6/6 缺输入案例均进入原生 Invalid/null Shape,并锁定 `No object linked` 或 `No sections linked.` 诊断。Fillet/Chamfer 按 1.1.1 `FilletBase` 源码使用单对象 `Base` 和 `(edgeId,r1,r2)` Edges,保留 FreeCAD 输出的 Compound 顶层容器与单 Solid 子结构。 + +PartDesign transform oracle 由 4 项扩为 10 项:补入 PolarPattern `4000` 和 Mirrored→LinearPattern→PolarPattern MultiTransform `20000` 的原生有效单 Solid;另以有效 Originals 加缺失 plane/axis 或越界 `Edge999` 采集四项真实 rejected。MultiTransform 在子变换失败时保留旧的非空 Shape,同时状态为 `Touched + Invalid` 并报告 `Shape index 999 out of bound 12`;门禁把它锁定为 stale-shape-on-failure,不能按 Shape 非空误判成功。 + +当前 35/35 Part/PartDesign family 均有基础成功与真实失败边界,新增 oracle checker 已进入默认验证链,覆盖门禁记录 27 项原生成功和 23 项原生失败证据。EX-ORA-02 仍为 `in_progress`:参数 mutation 尚非穷举,219/219 阶段的运行时索引证据也不等于中间 builder 或私有 token exact。因此 `systemExact=false`、`EX-REL-01=pending`、`1/52 completed` 与 `0/34 exact` 均不变。 + +## 226. 2026-08-10 原生阶段命名证据与参数 mutation fail-closed 矩阵 + +复合历史采集器已改为直接调用 FreeCAD 1.1.1 运行时 API:对每个 Face/Edge/Vertex 读取 `getElementMappedName(name, true)`、`getElementIndexedName(name, true)`、返回的 StringID 和 `getElementHistory()`,并将结果绑定到 `stageId/resultObjectId`。30/30 模型的 219/219 阶段现在均为 `native-evidence`,`check:freecad-composite-history-elementmap` 与 `check:freecad-native-naming-evidence` 都会逐阶段验证 identity、索引唯一性、引用格式和来源链。 + +该状态只证明 FreeCAD 运行时确实返回了当前结果的 MappedName/IndexedName 证据。219 个阶段都有 IndexedName,其中 74 个阶段的所有子形同时具有 MappedName,另 145 个阶段只能保留原生索引身份,不能把 `FaceN/EdgeN/VertexN` 提升为私有 token。采集器明确保留 `internalBuilderEvidence=false`,目前 42 个 Part/PartDesign 操作阶段仍没有逐个中间 OCCT builder 的 Shape/history 证据;这些阶段不能从最终 Shape 反推 Generated/Modified/Deleted 中间关系或私有 token,系统 `exact=false` 不变。 + +新增 `config/freecad-parameter-mutation-plan.json`、`config/freecad-parameter-mutation-report.json` 和 `scripts/generate-freecad-parameter-mutation-report.mjs`。矩阵把每个 35 个 feature family 分成 nominal 参数、非法边界、两个以上参数快照、编辑-重算-恢复事务、FCStd 往返五项;报告从现有 FreeCAD/Chrome 黄金证据抽取,不把 outcome-only 记录当参数快照。当前为 `1/35` family 完整、`35/35` nominal、`35/35` invalid boundary、`15/35` 参数变体、`6/35` 编辑恢复、`34/35` 往返;门禁输出 `freecad-parameter-mutation-fail-closed`,并已通过 `check:execution-plan` 接入默认 `verify`。 + +运行 `./npmw run generate:freecad-parameter-mutations` 可在新增原生黄金模型后更新报告;`./npmw run check:freecad-parameter-mutations` 会拒绝陈旧报告。只有每个 family 都有真实参数快照及编辑后重算/恢复证据,且阶段 builder、MappedNameRef/StringHasher 和同构来源边界同时闭合,才允许继续评估 `EX-REL-01`,不允许通过修改 claim 或能力矩阵字段绕过。 diff --git a/docs/freecad-baseline-and-golden.zh-CN.md b/docs/freecad-baseline-and-golden.zh-CN.md index 046c3bb..12912ed 100644 --- a/docs/freecad-baseline-and-golden.zh-CN.md +++ b/docs/freecad-baseline-and-golden.zh-CN.md @@ -12,7 +12,7 @@ 源码、构建和安装目录均在 `.cache/` 下,不进入 Git。仓库保存精确提交、构建参数、工具版本、产物哈希和回放契约;当前产物是用于几何对照的无界面 Part oracle,不是完整 FreeCAD 桌面发行版。 -本机 oracle 可作为锁定版本的行为参考。`./npmw run probe:freecad-reference` 会通过 `FreeCADCmd` 采集版本、Git 提交、GUI 能力、可导入 Python 模块和核心 TypeId/Property 元数据,输出机器可读报告;当前无界面构建只启用 `Part`、`Material`、`Measure`,未加载的 Sketcher、PartDesign、TechDraw 等模块会明确标记为 unavailable。完整桌面/工作台对照仍需单独构建 GUI oracle,不能从该报告推断已支持。 +本机 oracle 可作为锁定版本的行为参考。`./npmw run probe:freecad-reference` 会通过 `FreeCADCmd` 采集版本、Git 提交、GUI 能力、可导入 Python 模块和核心 TypeId/Property 元数据,输出机器可读报告。模块状态明确区分 `not-built`、`compiled-importable`、`compiled-import-failure` 和 `gui-only-unprobeable`,并分别记录 `compiled`、`importable`、`guiRequired`、`guiAvailable`;当前无界面构建报告 3 个 `compiled-importable`、9 个 `not-built`。完整桌面/工作台对照仍需单独构建 GUI oracle,不能从该报告推断已支持。 ## 2. Debian trixie 依赖 diff --git a/docs/freecad-cam-path-native-oracle.zh-CN.md b/docs/freecad-cam-path-native-oracle.zh-CN.md new file mode 100644 index 0000000..08a8d66 --- /dev/null +++ b/docs/freecad-cam-path-native-oracle.zh-CN.md @@ -0,0 +1,49 @@ +# FreeCAD CAM Path 原生 Oracle 实施说明 + +更新时间:2026-08-07 + +这份说明覆盖浏览器 CAM 对标所需的三类原生证据:FreeCAD Path 算法回放、Qt CAM 工作台动态状态、以及 `Path::Feature` / `Path::FeaturePython` 的 FCStd 保存与恢复。当前 Web 编辑边界是经 FreeCAD 重开验证的原生 `Path::Feature` 命令资源子集;Python-backed 对象仍只读且不执行代码。 + +## 参考环境 + +- FreeCAD:1.1.1,源码提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d` +- 构建:`.cache/freecad/install-desktop/bin/FreeCAD` +- GUI:通过 `xvfb-run` 启动,`GuiUp=true` +- Qt:运行时采集为 6.8.2 +- CAM 模块:`PathApp.so`、`PathGui.so`、`PathSimulator.so` 均来自桌面构建 + +## 已完成的原生证据 + +| 能力 | 证据 | 状态 | +| --- | --- | --- | +| 原生 Profile 算法 | `Mod/CAM/CAMTests/test_profile.fcstd`,真实 `Path.Op.Profile` 覆盖工具补偿和无补偿两种场景;每种生成 32 条命令,其中 20 条切削命令;命令按 0.01 mm 数值容差规范化并锁定 SHA-256 | verified-2-scenarios | +| 原生 Helix 算法 | `Mod/CAM/CAMTests/test_holes00.fcstd`,0.9 mm 刀具、9 个 base 子元素,覆盖 Inside/Outside 与 Climb/Conventional 四种组合;每种包含 1260 条原生 G2 或 G3 弧命令并验证 CW/CCW 方向 | verified-4-scenarios | +| Qt 动态 oracle | 激活 `CAMWorkbench`,读取 56 个实时 `CAM_*` 命令、QAction 文本/图标/快捷键/注册状态、菜单和工具栏;并通过真实 `setEdit()`、QDialogButtonBox OK/Cancel、14 个 Task 字段和关闭回放验证 Job/Profile Task 生命周期 | verified | +| 原生 Path FCStd | 创建 `Path::Feature` 与 `Path::FeaturePython`,保存、重开、修改路径和属性、再次保存并重开;`Path::PropertyPath`、5/6 条命令和标签均被 FreeCAD 恢复 | verified | +| Web Path 编辑与透明往返 | Facade 对 `Path::Feature` 解码/重写 `.nc` 资源;显式 `allowFeaturePython` 时也可对 `Path::FeaturePython` 只改 `.nc` 资源,追加命令后由 FreeCAD 重开验证 5→6 条;脚本和 XML 仍保持不执行/不改写 | verified-safe-resource-only-opt-in | + +结构化结果在 [`config/freecad-cam-path-oracle.json`](../config/freecad-cam-path-oracle.json)。生成和校验脚本分别是 [`scripts/run-freecad-cam-path-oracle.ts`](../scripts/run-freecad-cam-path-oracle.ts)、[`scripts/freecad-cam-path-oracle.py`](../scripts/freecad-cam-path-oracle.py) 和 [`scripts/check-freecad-cam-path-oracle.mjs`](../scripts/check-freecad-cam-path-oracle.mjs)。 + +## 复跑和门禁 + +```bash +./npmw run probe:freecad-cam-path +./npmw run check:freecad-cam-path +./npmw run test:freecad-cam-path-report +``` + +`probe` 会在 `.cache/freecad/cam-path-oracle/` 生成源档案、变更档案和 Web 透明副本。报告中的 FCStd 完整性哈希是重开后 Path 对象语义哈希;运行时仍比较透明副本和源档案的完整字节。Profile 命令使用 0.01 mm 规范化,避免 OCCT 在 1e-6 mm 级别的浮点抖动造成假差异。连续两次完整 probe 的报告语义结果稳定。 + +## 任务安排 + +| 任务 | 交付物 | 当前状态 | 后续验收 | +| --- | --- | --- | --- | +| ORA-CAM-PATH-01 | Profile/Helix 等 Path 算法原生 fixture 与规范化黄金 | in_progress(Profile 2 场景 + Helix 4 场景) | 继续扩展 Drilling、Pocket、Surface 等工序的输入、失败和版本黄金 | +| ORA-CAM-PATH-02 | Qt 工作台命令、QAction、菜单、工具栏、选择上下文和 TaskPanel 生命周期采集器 | completed(56 命令 + Job/Profile 生命周期) | 扩展更多工序的字段/校验/焦点黄金 | +| ORA-CAM-PATH-03 | 原生 `Path::Feature` / `Path::FeaturePython` FCStd 双向保存恢复 | completed(native-native) | 增加 Job、ToolController、SetupSheet 和 Dress-up 对象 | +| ORA-CAM-PATH-04 | Web Facade `Path::PropertyPath` 结构化解码/编码与可编辑事务 | completed(Path::Feature + FeaturePython 安全资源 opt-in) | 扩展 Job/Operation 对象、属性/重算语义和 Undo/Redo;不宣称完整 operation-object 语义 | +| ORA-CAM-PATH-05 | FreeCAD Path 与 OpenCamLib/CAMotics 的连续差分 | pending | 版本锁定、同一 stock/tool/path 输入、体积/碰撞/时间差分 | + +## 明确边界 + +当前 Web Facade 对 `Path::Feature` 提供结构化 `Path::PropertyPath` 解码/编码;对 `Path::FeaturePython` 只有显式 `allowFeaturePython: true` 才开放同样的资源级编辑。两者都只允许修改已有 native `.nc` 资源的命令列表,资源路径、版本和 Center 元数据保持不变;XML、脚本和 Python 代码从不执行或改写,编辑后由 FreeCAD 重开验证。算法 oracle 当前只覆盖 2 个 Profile 场景和 4 个 Helix 场景;完整 Path 操作对象、FeaturePython 属性/重算语义、其余工序算法、Undo/Redo 和全量 Qt Task 行为仍未达到 exact parity,整体报告的 `exactParityClaim=false`。 diff --git a/docs/freecad-complete-parity-backlog.zh-CN.md b/docs/freecad-complete-parity-backlog.zh-CN.md index 8924cd8..eb2fd7d 100644 --- a/docs/freecad-complete-parity-backlog.zh-CN.md +++ b/docs/freecad-complete-parity-backlog.zh-CN.md @@ -212,7 +212,7 @@ Bitbybit npm 快照仍锁定为 `.cache/bitbybit/bitbybit` 提交 `d3f52bd1fcf78 |---|---|---| | QA-01 | 单元、属性、parser、图算法与领域状态覆盖 | 核心错误分支和不变量有自动测试 | | QA-02 | FreeCAD CLI/GUI 对照器 | 每个兼容命令至少一个成功和一个失败 fixture | -| QA-03 | Chrome/Firefox/Safari E2E 与视觉基线 | 目标版本矩阵可审计,无 P0/P1 回归 | +| QA-03 | Chrome E2E 与视觉基线 | 目标版本矩阵可审计,无 P0/P1 回归 | | QA-04 | 几何/求解确定性与 fuzzing | 公差内稳定,随机输入不崩溃/错绑 | | QA-05 | 性能和内存 | 1000 对象、百万三角形、大装配、大表、长会话 P95/峰值达预算 | | QA-06 | Worker/WASM/OPFS 故障注入 | 取消、崩溃、配额、断电点、过期结果和恢复行为通过 | @@ -236,6 +236,8 @@ Bitbybit npm 快照仍锁定为 `.cache/bitbybit/bitbybit` 提交 `d3f52bd1fcf78 本机参考环境、R0-R9 执行批次、立即队列和单项完成定义见 [FreeCAD 1.1.1 全功能对标执行路线图](freecad-reference-execution-roadmap.zh-CN.md)。当前缓存 oracle 是 headless `Part/Material/Measure` 子集;完整桌面工作台行为必须由 O2 oracle 单独采集。 +详细执行分配见 [FreeCAD 1.1.1 全功能对标执行 WBS](freecad-full-parity-execution-wbs.zh-CN.md)。`config/freecad-execution-plan.json` 当前登记 10 个 owner lane、10 个 program/gate 和 83 个带依赖、交付物及验收条件的任务,并由 `./npmw run check:execution-plan` 校验;`config/freecad-source-inventory.json` 记录锁定源码的 34 个模块、CMake 开关、App/Gui 目录、Python 文件和命令入口,由 `./npmw run check:freecad-inventory` 校验;`config/freecad-type-property-inventory.json` 记录源码可追溯的 TypeId/Property 候选,由 `./npmw run check:freecad-type-properties` 校验。 + 最近执行队列不得跳过依赖: 1. 完成 `BASE-01..04`、`INV-01..06` 和 `BYB-01..03`,生成全命令/对象/属性清册、完整 oracle 和可复现 Bitbybit/OCCT 源码构建。 diff --git a/docs/freecad-exact-promotion-runbook.zh-CN.md b/docs/freecad-exact-promotion-runbook.zh-CN.md new file mode 100644 index 0000000..ca6f993 --- /dev/null +++ b/docs/freecad-exact-promotion-runbook.zh-CN.md @@ -0,0 +1,122 @@ +# FreeCAD Web Exact Promotion Runbook + +本手册描述如何从当前兼容子集推进到系统级 FreeCAD exact。基线固定为 FreeCAD 1.1.1,提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`,浏览器基准为 Chrome 150。手册不允许通过改写能力矩阵、截图或最终几何猜测来缩短证据链。 + +## 当前状态 + +- exact claim:`false` +- exact 任务:`1/52 completed`、`37 in_progress`、`14 pending`、`0 blocked` +- exact 模块:`0/34` +- promotion task:`EX-REL-01=pending` +- 三项硬边界:无原生 MappedNameRef/StringHasher、无逐阶段 builder、无唯一同构来源时 fail-closed + +## 实施顺序 + +### 1. 冻结基线与证据环境 + +任务:`EX-ORA-01/02/03` + +1. 锁定 FreeCAD 源码、FreeCADCmd、GUI 构建、OCCT/Bitbybit/WASM、浏览器版本和许可证清单。 +2. 生成 TypeId、Property、GUI command、format、entrypoint inventory;每个候选必须有源码位置和 runtime 状态。 +3. 建立成功、失败、禁用、取消、重算、保存重开六类 oracle fixture。 +4. 运行 `npm run check:freecad-inventory`、`check:freecad-type-properties`、`check:freecad-gui-commands`、`check:freecad-entrypoints`。 +5. 运行 `npm run check:freecad-oracle-coverage`,核对 34 个模块和 1113 个 GUI 命令是否与真实桌面报告逐项一致;该 gate 同时报告未构建模块和仍待逐对象 probe 的静态候选。 +6. 运行 `npm run check:freecad-golden-coverage`,按 feature family 核对成功、失败、history、复合阶段、ElementMap2、FCStd 往返和浏览器回放七个维度;用 `-- --details` 输出逐 family 缺口。新增原生 feature-family fixture 时必须同时通过 `test:golden:freecad:families` 和 `test:golden:freecad:family-failures`,任何 missing 项继续保留为 EX-ORA-02 blocker。 +7. 运行 `npm run check:freecad-partdesign-failures`、`npm run check:freecad-partdesign-revolution-groove`、`npm run check:freecad-partdesign-transform` 和 `npm run check:freecad-part-builders`。原生缺输入后仍为 `Up-to-date + Valid + null Shape` 的 feature 必须分类为 `accepted-empty`,不能计入失败覆盖;只有真实 rejected 诊断才能关闭 `failure-fixture` 维度。局部重算失败保留旧 Shape 时,必须同时保存 `Invalid` 状态、原生诊断和 stale Shape,不得把旧 Shape 当作成功结果。 + +退出条件:没有未分类模块、命令、属性、格式或入口;所有后续任务均可引用固定 oracle。 + +### 2. 闭合内核、逐阶段历史与命名 + +任务:`EX-KER-01`、`EX-TSN-01/02/03/04` + +1. 为每个 Part/PartDesign/Boolean/Pattern/Dress-up builder 采集输入、每个中间 Shape、结果 Shape 和原生 history。 +2. 将 `Generated/Modified/Deleted` 按生产 stage 和 result index 写入 Facade;禁止把最终 Shape 的索引套到中间阶段。 +3. 让 native provider 输出 MappedNameRef、StringHasher、ElementMap2 token 的实际证据;没有证据时写 `final-shape-only`。 +4. 以对称 Boolean、拆分/合并、重复面/边/点和跨对象竞争模型验证唯一来源与 ambiguous 候选持久化。 +5. 运行 30-case ElementMap2/StringHasher gate、native history Chrome gate 和 topology replay。 + +退出条件:错误绑定、未解释关系、名称漂移、命名证据缺失及边界违规均为零;否则保持 compatible/fallback。 + +### 3. 完成 App 文档和特征内核 + +任务:`EX-DOC-01..05`、`EX-SK-01/02`、`EX-PART-01`、`EX-PD-01/02` + +1. 按 Property 类型、状态标志、表达式、LinkSub、Extension、Group、Body/Tip、Attachment、Datum、Binder 建立逐字段 oracle。 +2. 完成事务、observer 顺序、DAG 重算、局部失败、抑制、Undo/Redo、多文档和恢复语义。 +3. 按 Sketcher、Part、PartDesign 的特征族逐项推进;每个特征必须同时有成功、非法输入、取消、编辑、保存重开和 native history 证据。 +4. 每提升一个 feature level,更新 `compatibility-matrix.json`,不得批量提升整个 workbench。 + +退出条件:对象图、参数、Shape、history、拓扑引用和诊断在 FreeCAD↔Web↔FreeCAD 中稳定。 + +### 4. 完成 FCStd 与格式入口 + +任务:`EX-FC-01`、`EX-FMT-01..04` + +1. FCStd 按 Document.xml、GuiDocument、BRep、ElementMap2、StringHasher、脚本、未知资源逐项闭合。 +2. BREP/STEP/IGES 完成单位、颜色、名称、装配层级、容差和失败诊断。 +3. STL/OBJ/PLY/DXF/SVG/PDF/IFC/CSV/GCODE 按对象和元数据建立双向或显式只读契约。 +4. JT/IDF/OpenSCAD/Cloud/Help 逐项决定浏览器实现、受控 sidecar 或正式排除;不得保留 scope-only。 + +退出条件:支持格式无未知差异;不能实现的格式有明确排除报告,不计入 exact claim。 + +### 5. 完成 GUI 和工作台流程 + +任务:`EX-UI-01..05`、`EX-DRAFT-01`、`EX-TD-01`、`EX-SS-01`、`EX-PLOT-01`、`EX-DOCWB-01`、`EX-ASM-01`、`EX-BIM-01`、`EX-SURF-01`、`EX-MESH-01`、`EX-MAT-01` + +1. 建立 FreeCAD GUI oracle:菜单、工具栏、工作台、Combo/Task、属性、对话框、快捷键、上下文、焦点和状态栏。 +2. 每个工作台回放新建、选择、Task、属性修改、错误、取消、Undo/Redo、保存重开和导出。 +3. 对桌面、390px、键盘、读屏树、locale、长文本和 GPU fallback 做同一流程对照。 +4. 只有动态 enable/visible/focus/validation 与原生 oracle 对齐后,UI 任务才能完成。 + +退出条件:零未登记 UI 差异、零遮挡、零无名控件、零核心流程阻断。 + +### 6. 完成 FEM/CAM/Robot/数据/脚本/插件 + +任务:`EX-FEM-01`、`EX-CAM-01`、`EX-ROBOT-01`、`EX-DATA-01`、`EX-INSPECT-01`、`EX-SCRIPT-01`、`EX-ADDON-01`、`EX-PROXY-01`、`EX-PLATFORM-01` + +1. FEM:对象、网格、材料、求解器、结果场和后处理与原生 benchmark 对照。 +2. CAM:全部 Path operation/dress-up、原生 operation-object、Task、后处理、仿真、刀具/夹具和机床配置对照;生产授权继续 fail-closed。 +3. Robot、Points、ReverseEngineering、Inspection 完成算法、数据和报告闭环。 +4. Python/macro 只允许 capability-secure、可审计、可复现的受限 API;Addon 必须签名、隔离、可回滚。 +5. 五个 proxy 模块要么获得原生差分证据,要么出具正式排除边界。 + +退出条件:所有模块达到 exact,或被明确记录为不属于最终 exact scope;不能留 unexplained。 + +### 7. QA、报告和 promotion + +任务:`EX-QA-01/02/03`、`EX-REL-01` + +1. 运行 Chrome/Firefox/Safari、GPU fallback、桌面/平板/移动矩阵。 +2. 完成无障碍、locale、性能、安全、fuzz、压力、迁移、崩溃恢复和资源释放。 +3. 汇总八项指标:`wrongBindings`、`unexplainedRelations`、`roundtripNameDrift`、`unknownSemanticDifferences`、`namingEvidenceMissing`、`namingEvidenceBoundaryViolations`、`unexplainedModules`、`releaseBlockers`。 +4. 仅由 EX-REL-01 生成 `config/freecad-web-exact-promotion-report.json`,其结构必须符合 [report schema](../config/freecad-web-exact-promotion-report.schema.json)。 +5. 运行 `npm run check:freecad-web-exact-promotion`;通过后才可同步 claim、模块等级和签名发布物。 + +## Promotion 报告最低结构 + +```json +{ + "schemaVersion": 1, + "taskId": "EX-REL-01", + "completedTasks": 52, + "exactModules": 34, + "metrics": { + "wrongBindings": 0, + "unexplainedRelations": 0, + "roundtripNameDrift": 0, + "unknownSemanticDifferences": 0, + "namingEvidenceMissing": 0, + "namingEvidenceBoundaryViolations": 0, + "unexplainedModules": 0, + "releaseBlockers": 0 + }, + "evidenceClasses": [ + "native-oracle", "browser-runtime", "save-reopen-roundtrip", + "failure-cancel-recovery", "resource-release", "security", + "accessibility", "signed-release" + ] +} +``` + +当前不应创建该报告;在 EX-REL-01 完成前,缺少报告是预期状态,promotion gate 必须保持 `freecad-web-exact-promotion-fail-closed`。 diff --git a/docs/freecad-full-parity-execution-wbs.zh-CN.md b/docs/freecad-full-parity-execution-wbs.zh-CN.md new file mode 100644 index 0000000..d7cf537 --- /dev/null +++ b/docs/freecad-full-parity-execution-wbs.zh-CN.md @@ -0,0 +1,480 @@ +# FreeCAD 1.1.1 全功能对标执行 WBS + +## 1. 文档职责 + +本文负责执行组织和任务分配;[全功能主任务账本](freecad-complete-parity-backlog.zh-CN.md)负责范围,[执行路线图](freecad-reference-execution-roadmap.zh-CN.md)负责阶段顺序,`config/freecad-execution-plan.json` 是任务、依赖、状态、交付物和验收条件的机器可读真值,`config/compatibility-matrix.json` 是能力等级真值。 + +基线固定为 FreeCAD `1.1.1`、提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`。所有项目 Node/npm 命令使用 `./npmw`。 + +## 2. 责任分配 + +这里的 owner 是责任域,不绑定具体人员。给团队分配人员时,每个 lane 必须有一个最终负责人;跨 lane 评审不能替代 owner 的交付责任。 + +| Lane | Owner 职责 | 主 program | 必需评审方 | +|---|---|---|---| +| ORACLE | FreeCAD 构建、运行时探针、命令/对象/格式清册、黄金 fixture | P01 | QUALITY、相关工作台 owner | +| KERNEL | Bitbybit/OCCT 源码构建、WASM、Worker、Shape 生命周期、三方几何差分 | P02 | TOPO、QUALITY | +| TOPO | TopoRef、原生历史、签名、迁移、3D 选择和变异回放 | P03 | KERNEL、CORE、QUALITY | +| SKETCH | planegcs、草图模型、约束、诊断、编辑器和压力套件 | P04 | TOPO、CORE、QUALITY | +| CORE | App/Document/DAG、Part、PartDesign、Body/Tip、Support/Attachment | P05 | TOPO、SKETCH、IO | +| IO | SQLite/OPFS、FCStd、BRep/Shape、格式和双向 round-trip | P06 | CORE、QUALITY | +| DOC | TechDraw、Spreadsheet、Draft、Plot | P07 | CORE、IO、QUALITY | +| ENGINEERING | Assembly、BIM、Mesh/MeshPart、Surface | P08 | CORE、IO、PLATFORM | +| PLATFORM | FEM、CAM、Robot、Inspection、数据模块、Addon、脚本 | P09 | ENGINEERING、QUALITY | +| QUALITY | 自动化、浏览器、性能、安全、迁移、SBOM 和发布 | P10,且持续横切 P01-P09 | 所有 lane | + +## 3. 依赖与并行安排 + +关键路径为:`P01 → P02 → P03 → P04 → P05 → P06 → P07/P08 → P09 → P10`。P10 的日常 QA 任务从 P01 开始横切执行,但发布门 G9 仍等待全部上游产物。 + +允许的并行工作: + +1. P01 建立完整 oracle 时,P02 可继续已有原生 Worker 加固,但 G1 必须等待 G0 的比较器和 fixture。 +2. P03 的 schema/迁移基础与 P02 的浏览器实例化可并行;原生历史覆盖和三方黄金必须等待 P02。 +3. P04 的 planegcs 构建可在 P03 前启动;外部几何、Support 和完整压力回放必须等待稳定 TopoRef。 +4. P06 的 ZIP 安全、Document/GuiDocument 映射和未知字段保留可与 P05 并行;可编辑 Shape 和完整 round-trip 必须等待 P05。 +5. P07 与 P08 在 G4/G5 后并行;BIM 依赖 Draft/Spreadsheet 的共享对象和表达式合同。 +6. P10 的单测、安全预检和基线持续执行;最终发布任务必须等待 P01-P09 全部阶段门。 + +禁止的并行捷径:用 UI prototype 替代领域实现、用 Node smoke 替代浏览器证据、用网格索引替代 TopoRef、在 FCStd 未保留未知字段时写回用户文件、在 solver/post/addon 未隔离时启用执行入口。 + +## 3.1 连续执行编排与任务交接 + +以下编排是 P01-P10 的连续执行顺序;任务 ID 与状态仍以 `config/freecad-execution-plan.json` 为唯一真值。每个切片完成后立即领取同一关键路径上的下一个未完成切片,不等待人工确认。 + +1. `TSN-03` 先扩展 native OCCT `Generated/Modified/Deleted` 合同:从 `fuse/cut/common` 扩展到已实现的 Pad、Pocket、Loft、Pipe、Revolution、Groove、Fillet、Chamfer、Draft、Thickness、Pattern、Hole;每个操作必须有 STEP/Worker 请求、源子形状关系、Chrome 回放和释放证据。随后把关系交给稳定 TopoRef 迁移和 Body/Tip 生命周期。 +2. P04 按 `SK-06 → SK-07 → SK-11 → SK-09 → SK-10 → SK-12` 执行:先补 planegcs 几何约束图,再补尺寸/参考诊断和 profile fixture,之后完成交互编辑、B-spline 编辑、500 模型黄金与压力回放。 +3. P05 按 `PART-ALL → PD-BASE → PD-LOFT → PD-DRESSUP → PD-TRANSFORM → PD-CLOSURE` 执行;每个特征都必须同时覆盖参数编辑、失败保留上一 Shape、TopoRef/Support/Tip、撤销、保存/加载和 Chrome Worker 证据。 +4. P06 与 P05 可交错推进:`FC-04 → FC-05 → FC-06 → FC-08 → FC-09 → FC-10 → FC-11`。STEP/IGES/BREP 的已实现子集不得替代完整 100 模型格式黄金;未知 XML、BRep、Expression、Link、TopoRef 和 GuiDocument 都必须分类记录。 +5. P07 按 `TD-ALL`、`SS-ALL`、`DRAFT-BASE → DRAFT-OPS`、`PLOT-ALL`、`DOC-CLOSURE` 执行;P08 可在 P07 共享对象合同完成后并行,顺序为 `ASM-CORE → ASM-TOOLS`、`BIM-CORE → BIM-IFC`、`MESH-CORE`、`SURF-CORE`、`ENG-CLOSURE`。 +6. P09 在 P08 收口后按 `FEM-ALL`、`CAM-ALL`、`ROBOT-ALL`、`INSP-ALL`、`DATA-ALL`、`ADDON-ALL`、`SCRIPT-ALL`、`PLATFORM-CLOSURE` 执行;插件和脚本默认隔离,不能绕过 Facade、OPFS 权限或安全策略。 +7. P10 横切持续执行:`QA-01..QA-08` 按依赖逐项收口,之后 `REL-01 → REL-02 → REL-03 → REL-04`。发布前必须重新生成 Chrome 证据、FreeCAD oracle、round-trip、fuzz、性能、故障注入、SBOM 和差异矩阵。 + +所有任务的完成条件统一为:实现已落地;FreeCAD 1.1.1 oracle 或明确 proxy/unsupported 证据存在;Chrome 真实 Worker/OPFS 证据存在;Shape/Worker/资源释放回到零;Facade、构建和 `./npmw run verify` 通过;文档、兼容矩阵和计划状态同步。未满足任一条件只能保持 `in_progress`,不得提前标记 `completed`。 + +## 4. Program 任务包 + +### P01 完整桌面 oracle 与 34 模块清册 + +Owner:ORACLE。Gate:G0。当前 headless oracle 只覆盖 `Part/Material/Measure`。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| ORA-01 | ORACLE:完整 GUI/工作台 CMake profile、构建清单、依赖和 hash | 锁定提交可干净重建;GUI/工作台可探针 | +| ORA-02 | ORACLE:GUI-aware 探针和 compiled/import/gui-only 状态模型 | 输出确定性 JSON;失败类型不可混淆 | +| INV-01 | ORACLE:34 模块、工作台、命令及源码位置清册 | 无未登记目录或命令 | +| INV-02 | ORACLE:TypeId、Property、默认值、状态和最小对象 fixture;先由 `generate:freecad-type-properties` 生成源码候选,再由 O1/O2 探针确认 | 只读/隐藏/输出/表达式能力可追溯;静态候选不能替代运行时证据 | +| INV-03 | ORACLE:菜单、工具栏、上下文、快捷键、选择和 Task 前置 | 每个 GUI 命令有启用和禁用 oracle | +| INV-04 | ORACLE+IO+PLATFORM:格式、偏好、Python、宏、Addon 和可选库 | 每个入口有 Web 策略和能力等级 | +| BASE-03 | ORACLE+QUALITY:100 成功、50 失败 fixture | 覆盖单位、拓扑变化、核心对象和错误 | +| BASE-04 | ORACLE+QUALITY:树/属性/Shape/拓扑/诊断比较器 | 未登记差异直接失败 | + +### P02 原生 OCCT Worker、三方 Boolean 黄金与内存门禁 + +Owner:KERNEL。Gate:G1。现有原生历史 provider 为可配置、非默认状态。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| BYB-03 | KERNEL:Bitbybit/OCCT 可复现源码构建、补丁、ABI、hash、许可证 | 干净构建导出一致 | +| BYB-05 | KERNEL:能力握手、取消、超时、崩溃、stale-result 协议 | 错误消息安全失败;重启不接受旧结果 | +| BYB-06 | KERNEL:Shape 所有权、引用计数、释放账本和指标 | 无 use-after-release;保留内存受控 | +| BROWSER-OCCT-01 | KERNEL+QUALITY:Chrome 真实 Worker/WASM harness | COOP/COEP、OPFS、加载、取消、崩溃恢复通过 | +| BYB-07 | KERNEL+ORACLE+TOPO:Fuse/Cut/Common 三方报告 | 几何、历史、公差和错误差异均可解释 | +| MEM-OCCT-01 | KERNEL+QUALITY:1000 次 Boolean 压力和堆/WASM/GPU 报告 | 临时 Shape 全部对账;峰值/保留量达预算 | +| BYB-08 | KERNEL+QUALITY:依赖升级 API/ABI/黄金漂移门禁 | 上游变化不能静默进入主线 | + +### P03 稳定 TopoRef、邻接/曲率签名和变异回放 + +Owner:TOPO。Gate:G2。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| TSN-03 | TOPO+KERNEL:Boolean/PartDesign Generated/Modified/Deleted | 每个源子形状关系可解释 | +| TSN-04 | TOPO:解析曲线/曲面参数、方向、容差和曲率签名 | 不依赖三角网格精度和瞬时索引 | +| TSN-05 | TOPO:邻接图、一对一/一对多评分和置信度 | 刚体变换和参数修改保持安全引用 | +| TSN-06 | TOPO:对称、重复、分裂、合并歧义策略 | 低置信度不强绑 | +| TSN-07 | TOPO+CORE:多输入 Boolean、Pattern、跨 Body lineage | 结果可追溯到源对象和实例 | +| TSN-08 | TOPO+IO:LinkSub、外部几何、数据库、FCStd 迁移 | stable/ambiguous/deleted 可跨版本往返 | +| TSN-09 | TOPO+CORE:3D pick/preselect/highlight/candidate repair Facade | UI 不保存网格索引 | +| TSN-10 | TOPO+QUALITY:100 模型、1000 参数变异和随机回放 | 无静默错绑;歧义全部可诊断 | + +### P04 planegcs WASM 与完整 Sketcher + +Owner:SKETCH。Gate:G3。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| SK-03 | SKETCH+KERNEL:最小 planegcs 源图、Emscripten 构建和 hash | 独立 Worker 确定性求解 | +| SK-04 | SKETCH:provider 能力、诊断、取消、stale、崩溃恢复 | 替换 solver 不改变 Facade 合同 | +| SK-05 | SKETCH:椭圆、B-spline、周期和构造几何模型 | 稳定 ID 完整往返 | +| SK-06 | SKETCH:完整几何约束 | 每种约束有成功/失败 FreeCAD fixture | +| SK-07 | SKETCH:尺寸/参考约束、DOF、冗余、冲突分类 | 分类与 FreeCAD oracle 一致 | +| SK-08 | SKETCH+TOPO:平面/面 Support、投影、CarbonCopy | 上游拓扑变化安全迁移 | +| SK-09 | SKETCH:trim/extend/split/drag/autoconstraint 和回放 | Task、键鼠和编辑行为与 oracle 对齐 | +| SK-10 | SKETCH:B-spline poles/knots/weights/degree/periodic | 编辑和约束 round-trip 通过 | +| SK-11 | SKETCH+CORE:开放/闭合/多环/自交 profile 分类 | PartDesign 获得兼容错误 | +| SK-12 | SKETCH+QUALITY:500 模型确定性与性能套件 | 成功、冲突、冗余、拖拽均达预算 | + +SK-10 收口证据:`public/chrome-sketcher-bspline-harness.html` 在 Chrome 150 中回放 poles/knots/weights/degree/periodic 编辑和非法输入,并将带两个 Weight、一个 control-point InternalAlignment 的三次有理 B-spline 经 FCStd 导出/导入后逐字段比较。`./npmw run test:chrome-sketcher-bspline` 与 `./npmw run check:chrome-sketcher-bspline` 还会交叉检查 planegcs Worker/Provider 和 FreeCAD 1.1.1 Weight oracle;几何、约束、残差、DOF 与归档往返均通过。 + +SK-12 收口证据:固定种子 500 模型/1000 次求解覆盖 constraints、conflict、redundant、reference、drag 各 100 项,Node 与 Chrome 150 摘要均为 `edac8aed`,确定性差异和意外结果为 `0`,最大迭代 `64`、最大残差约 `4.58e-16`,Chrome 耗时低于 `2000 ms` 预算。`./npmw run test:chrome-sketcher-stress` 与 `./npmw run check:chrome-sketcher-stress` 记录 OPFS 生命周期;FreeCAD 约束分类和 editor oracle 单独锁定分类与拖拽语义。 + +SK-06/SK-07 增量证据:`public/chrome-sketcher-diagnostics-harness.html` 在 Chrome 150 + OPFS 中回放 Coincident(指定端点零残差)与 Block(`0` DOF、坐标保持),并同时验证参考尺寸、冗余和冲突诊断;`./npmw run test:chrome-sketcher-diagnostics` 与 `./npmw run check:chrome-sketcher-diagnostics` 通过,OPFS marker 创建/读取/删除完成。该证据仍不代表 planegcs 原生已覆盖完整 FreeCAD 约束集。 + +SK-06 原生子集增量:锁定 FreeCAD `GCS::System::addConstraintP2PCoincident` 的 `solveCoincidentLines` Embind/WASM 函数,Facade 仅接受 `first.end -> second.start` 的两线 driving Coincident。`./npmw run test:chrome-planegcs` 与 `./npmw run check:chrome-planegcs` 在 Chrome 150 Dedicated Worker 中验证状态 `0`、零残差、Provider 生命周期和 `coincident` capability;完整约束图仍待继续扩展。 + +SK-07 原生尺寸增量:锁定 FreeCAD `ConstraintDifference` 的 `solveDistanceX` Embind/WASM 函数,Facade 仅接受单线正值 `DistanceX` 与 Horizontal 组合。Chrome 150 Dedicated Worker 验证 X 差值、零残差和 capability;完整 DistanceY/角度/半径/参考尺寸图仍待继续扩展。 + +SK-07 原生尺寸增量:`solveDistanceY` 将相同的 FreeCAD `ConstraintDifference` 合同扩展到单线 Vertical 投影距离。Chrome 150 Dedicated Worker 验证 Y 差值、零残差和 `distanceY` capability;任意端点、角度、半径和参考尺寸图仍待继续扩展。 + +SK-07 原生角度增量:`solveAngle` 锁定 FreeCAD `GCS::System::addConstraintP2PAngle`,以固定首点、正值端点 Distance 和弧度 Angle 求解单线。Chrome 150 Dedicated Worker 验证 45 度、长度 5、零量级残差、`angle` capability 与 Provider 生命周期;任意端点、两线夹角、半径/直径和完整尺寸图仍待继续扩展。 + +SK-07 原生圆半径增量:`solveCircleRadius` 锁定 FreeCAD `GCS::System::addConstraintCircleRadius`,固定圆心并接受一个正值 Radius。Chrome 150 Dedicated Worker 验证圆心 `(2,3)`、半径 `4`、零残差、`radius` capability 与 Provider 生命周期;Arc、Diameter、圆与其他几何的关系及完整尺寸图仍待继续扩展。 + +SK-07 原生圆直径增量:`solveCircleDiameter` 锁定 FreeCAD `GCS::System::addConstraintCircleDiameter`,固定圆心并接受一个正值 Diameter。Chrome 150 Dedicated Worker 验证圆心 `(2,3)`、直径 `8`、`diameter` capability 与 Provider 生命周期;Arc、圆与其他几何的关系及完整尺寸图仍待继续扩展。 + +SK-06/SK-07 原生 Equal 增量:`solveEqualLines` 使用 FreeCAD `GCS::System::addConstraintEqualLength`,固定第一条线和第二条线起点,求解两线等长;`solveEqualCircles` 使用 `addConstraintEqualRadius`,固定两个圆心和第一圆半径,求解第二圆半径。Facade 仅接受两线或两圆的单个 driving Equal,混合几何、圆弧、椭圆和完整约束图继续显式拒绝。Chrome 150 Dedicated Worker 验证两类零残差、能力声明、资源释放及取消/恢复/过期生命周期;计划计数仍为 30 completed、21 in_progress、32 pending、0 blocked。 + +SK-06 原生 Tangent 增量:`solveTangentCircles` 锁定 FreeCAD `GCS::System::addConstraintTangent(Circle, Circle)`,固定两个圆心和第一半径,求解外切第二半径。Facade 仅接受两个 Circle 的单个 driving Tangent;线-圆、圆弧、内切模式和多约束图显式拒绝。Chrome 150 Dedicated Worker 验证圆心 `(2,3)`/`(10,3)`、两半径 `4`、切线残差约 `8.9e-16`、`tangent` capability 与生命周期;计划计数保持 30 completed、21 in_progress、32 pending、0 blocked。 + +SK-11 收口证据:锁定 FreeCAD 1.1.1 的真实 Body/Sketch/Pad oracle。闭合、带孔、自交 bow-tie、分离双环分别得到体积 `360/320/80/370` 和实体数 `1/1/2/2`,开放线框返回 `Wire is not closed.` 且 Shape 为空。Web `sketchProfile` 在交点处分割线段并提取有界面,以 `additionalRegions` 表达 FreeCAD 多实体结果;Chrome 150 的生产 parser 与 Bitbybit OCCT Pad 得到相同体积和实体数,开放线框在调用运行时前返回 `PROFILE_OPEN`。FreeCAD/Chrome 检查器、Facade `166/166` 与 TypeScript 通过,SK-11 完成。 + +SK-09 收口证据:真实 FreeCAD 1.1.1 editor oracle 覆盖 drag、split、extend、trim、construction、事务 Undo/Redo 和 Coincident+Horizontal 自动约束。Web 对齐拖动优先点、Split Coincident 与 Trim PointOnObject,并以 `SketchEditorInteractionSession` 提供工具、指针、选择、历史、取消和删除事务。Chrome 150 真实 `PointerEvent`/`KeyboardEvent` 回放与七项 FreeCAD 几何/约束结果一致,SK-09 完成。 + +FC-06 Chrome 增量:`src/chromeFcstdSemanticHarness.ts` 增加两项稳定 TopoRef 的 `App::PropertyLinkSubList`,Chrome 150 + OPFS 验证 `topo-ref-list` 依赖、归档往返、GuiDocument 和 BRep/ElementMap 保持不丢失;完整 FCStd 全类型双向 round-trip 仍未闭环。 + +### P05 Part/PartDesign 参数化闭环 + +Owner:CORE。Gate:G4。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| CORE-09 | CORE:Body、Origin、Feature 顺序、Tip 重定向和单实体 | 抑制/删除/重排与 FreeCAD 一致 | +| CORE-10 | CORE+TOPO:Support、MapMode 和 Attachment engine | 面/平面支撑可跨拓扑变化 | +| CORE-11 | CORE:AttachmentOffset、Placement 组合和局部坐标链 | 结果位置在声明公差内一致 | +| PART-ALL | CORE+KERNEL:Part 基本体、Boolean、Builder、修改、检查和格式 | 全 Part 命令及交换格式黄金通过 | +| PD-BASE | CORE+SKETCH:Pad/Pocket/Revolution/Groove 全模式 | 参数编辑使用原生历史重算 | +| PD-LOFT | CORE:Additive/Subtractive Loft/Pipe | 失败保留最近有效 Shape | +| PD-DRESSUP | CORE+TOPO:Fillet/Chamfer/Draft/Thickness 稳定选择 | 边面变化迁移或报告歧义 | +| PD-TRANSFORM | CORE:特征列表变换、完整 Hole 和标准 | 单实体、轴面、螺纹语义有证据 | +| PD-CLOSURE | CORE+QUALITY:创建→编辑→重算→Undo→保存→加载 | 无 stale Shape、断 Tip 或 Support | + +PART-ALL 收口证据:Chrome 150 锁定 100 个 Part 场景,对 STEP、IGES、BREP 各执行 100 次导出/导入和结构、质量属性、容差比较,未知差异为 `0` 且释放后 ShapeHandle/kernel reference 为 `0/0`。`./npmw run test:chrome-fcstd-golden`、`./npmw run check:chrome-fcstd-golden`、Part primitive/geometry feature 门禁与 FreeCAD 100 成功/50 失败 fixtures 共同覆盖原语、Boolean、Builder、Modification、检查和三格式验收。 + +PD-BASE 收口证据:FreeCAD 1.1.1 实际 PartDesign 对照锁定锥度 Pad、锥度 Pocket、Through all Pocket、Up to face Pocket 和 Midplane Pad 5/5;Chrome 150/WASM 得到相同体积(误差不超过 `1e-7`)并释放到 `0/0`。Facade 覆盖 To-face 稳定 TopoRef、双向与两角度模式、失败保留上一 Shape;Chrome 参数编辑 `42→31`、重算、Undo `31→42`、保存/加载通过,Pad/Pocket/Revolution/Groove 原生 OCCT history 分别记录 `25/42/23/2` 条关系。 + +PD-LOFT 收口证据:Chrome 150 通过 Facade 顺序创建 AdditiveLoft、AdditivePipe、SubtractiveLoft、SubtractivePipe,四个结果均为正体积有效 Shape,Transformed transition、section/path 链、Body.Tip、OPFS 保存/加载和 `0/0` 释放通过。重复 section 与分叉 path 分别返回稳定诊断,Loft/Pipe 失败期间 Shape ID 不变且修复后恢复;FreeCAD 1.1.1 原生四对象 oracle 4/4,Loft/Pipe 原生 OCCT history 为 `24/28` 条。 + +PD-DRESSUP 收口证据:Chrome 150 Facade 生命周期在 Hole 基体上顺序创建 Fillet、Chamfer、Draft、Thickness,随后继续 Mirrored、LinearPattern、PolarPattern、MultiTransform 与 Hole;10 个结果均为正体积,Body.Tip、sqlite-opfs 保存/加载和 `0/0` 释放通过。Pad 参数编辑后一个面引用稳定迁移,三个边/面引用保守报告歧义且没有错误绑定;歧义 Fillet 保留上一有效 Shape并可修复恢复。FreeCAD 1.1.1 原生 Fillet/Chamfer/Draft/Thickness oracle 4/4,通过真实选边/选面、Reversed Thickness 和质量/拓扑断言;四类原生 OCCT history 分别记录 `150/150/5/38` 条。 + +### P06 FCStd 双向 round-trip + +Owner:IO。Gate:G5。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| FC-04 | IO:Document/GuiDocument 对象、Property、Extension、视图映射 | 已知元数据双向无语义丢失 | +| FC-05 | IO+KERNEL:BRep/Shape/缩略图资源解析和写出 | 拓扑、质量属性、颜色、精度对齐 | +| FC-06 | IO+TOPO+SKETCH:Expression/Unit/Link/TopoRef/Sketch codec | FreeCAD 可重算支持对象 | +| FC-07 | IO+QUALITY:未知 XML/对象/资源透明保留和脚本隔离 | proxy 字节在读写后不变 | +| FC-08 | IO+KERNEL:STEP/IGES/BREP 完整适配 | 100 模型单位/颜色/公差黄金通过 | +| FC-09 | IO+相关 workbench:Mesh/2D/BIM/数据格式 | 每格式有成功、失败和 round-trip | +| FC-10 | IO+ORACLE:FreeCAD→Web→FreeCAD 核心/代理报告 | 无静默丢失;差异全部分类 | +| FC-11 | IO+QUALITY:大文件、损坏、取消、中断和恢复 | 能力内不崩溃;超限明确拒绝 | + +P06 已由 `check:fcstd-closure` 聚合关闭:FreeCAD 1.1.1 原生双向 22 场景没有未知差异,未知 proxy 归档逐字节保持;Chrome 锁定 Expression/Link/LinkSubList/TopoRef/Sketcher/GuiDocument/BRep/ElementMap 语义。100 模型 FCStd+BRep 以及 STEP/IGES/BREP 三格式质量、毫米单位和容差矩阵全部通过;DXF/SVG/PDF、OBJ/PLY/STL、IFC、CSV 八种次级格式分别具有成功、错误签名拒绝和字节精确回环。FCStd ZIP/XML/stream 限额、损坏、取消与 checkpoint 恢复由 `check:fcstd-hardening` 锁定。 + +### P07 TechDraw、Spreadsheet、Draft、Plot + +Owner:DOC。Gate:G6。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| TD-ALL | DOC+TOPO:Page/View/Section/Dimension/GD&T/Annotation、SVG/PDF | 投影、比例、TopoRef 更新通过 | +| SS-ALL | DOC+CORE:Cell/Formula/Alias/Style/Merge/Binding/CSV | DAG 循环和对象绑定与 FreeCAD 一致 | +| DRAFT-BASE | DOC+SKETCH:Working Plane/Snap/Grid 和参数化二维对象 | 创建编辑 fixture 通过 | +| DRAFT-OPS | DOC+CORE:变换、Offset、Trim、Array、Clone、Layer | 保存后仍参数化 | +| PLOT-ALL | DOC:Series/Axis/Legend/Style/Binding、图片/SVG/CSV | 绑定数据确定性更新 | +| DOC-CLOSURE | DOC+IO+QUALITY:四工作台混合文档 | 创建、编辑、保存、加载、导出全通过 | + +### P08 Assembly、BIM、Mesh、Surface + +Owner:ENGINEERING。Gate:G7。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| ASM-CORE | ENGINEERING:Component/Link/LCS/Joint、solver Worker | 固定/距离/角度/运动 fixture 通过 | +| ASM-TOOLS | ENGINEERING:碰撞、爆炸、BOM、变体 | 大装配和 FCStd 门禁通过 | +| BIM-CORE | ENGINEERING+DOC:空间层级、建筑元素、材料、属性集、清单 | 参数编辑和数量表通过 | +| BIM-IFC | ENGINEERING+IO:IFC2x3/IFC4、分类和 proxy | 几何、层级、Property 往返 | +| MESH-CORE | ENGINEERING+KERNEL:导入、转换、分析、修复、Worker/LOD | 非流形、自交、孔和大网格通过 | +| SURF-CORE | ENGINEERING+TOPO:BSpline/Bezier/Fill/Offset/Trim/Join | 连续性、容差和 TopoRef 通过 | +| ENG-CLOSURE | ENGINEERING+QUALITY:大型混合工程项目 | 跨工作台保存加载和性能达预算 | + +### P09 分析、制造、数据、插件和脚本 + +Owner:PLATFORM。Gate:G8。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| FEM-ALL | PLATFORM:Analysis/Material/Sets/Loads/Mesh/Solver/Results | 本地或远端策略明确;参考求解通过 | +| CAM-ALL | PLATFORM:Job/Stock/Tools/Operations/Simulation/Post | 碰撞、仿真和 G-code 黄金通过 | +| ROBOT-ALL | PLATFORM:Robot/Axes/Pose/Trajectory/Kinematics/Collision | 运动和工作空间 fixture 通过 | +| INSP-ALL | PLATFORM+TOPO:测量、剖切、偏差、检查和报告 | 单位、精度、TopoRef 和导出通过 | +| DATA-ALL | PLATFORM+IO:Points/RE/OpenSCAD/IDF/JT/Material/Import | 每模块有适配器或显式 proxy | +| ADDON-ALL | PLATFORM+QUALITY:签名目录、安装/更新/删除、权限、隔离、回滚 | 不可信插件不能越过 Facade/权限 | +| SCRIPT-ALL | PLATFORM+QUALITY:API 映射、受限解释器、宏回放 | 文件/网络/时间/资源权限强制执行 | +| PLATFORM-CLOSURE | PLATFORM+ORACLE:34 模块最终覆盖报告 | 无 scope-only 或未解释 unsupported | + +### P10 QA、浏览器、性能、安全、迁移与发布 + +Owner:QUALITY。Gate:G9。P10 从第一天持续执行,最终关闭依赖 P01-P09。 + +| 任务 | 分配与交付 | 验收重点 | +|---|---|---| +| QA-01/02 | QUALITY+ORACLE:单元/属性覆盖、CLI/GUI 每命令成功失败 fixture | 核心不变量和兼容声明有证据 | +| QA-03 | QUALITY:Chrome E2E 与视觉矩阵 | 核心桌面/移动工作流无阻断差异 | +| QA-04 | QUALITY+TOPO+SKETCH:几何/solver/parser seeded fuzz | 无崩溃、静默损坏和错绑 | +| QA-05 | QUALITY:1000 对象、百万三角形、大装配、大表和长会话 | P95、峰值和保留内存达预算 | +| QA-06 | QUALITY+IO+KERNEL:Worker/WASM/OPFS 崩溃、配额、断电、stale | 恢复确定,数据损失明确报告 | +| QA-07 | QUALITY+PLATFORM:文件、消息、脚本、Addon、CSP 和权限安全 | 无未处置 critical | +| QA-08 | QUALITY+DOC:键盘、读屏、locale、长文本和移动 | 核心流程达到目标 a11y 标准 | +| REL-01 | QUALITY:PWA、离线、cache、COOP/COEP、CSP runbook | 首装、升级、离线、缓存恢复通过 | +| REL-02 | QUALITY+IO:版本迁移、回滚或无损导出演练 | 每个支持版本有恢复路径 | +| REL-03 | QUALITY:SBOM、许可证、漏洞和签名产物 | 无未知二进制或未处置 critical | +| REL-04 | QUALITY+全体 owner:最终能力/差异矩阵和发布 runbook | G0-G9 通过,无未解释 unsupported | + +## 5. 任务状态与交接合同 + +状态只允许 `pending`、`in_progress`、`completed`、`blocked`。`completed` 必须同时满足:代码/文档已落地、配置中的 deliverables 全存在、acceptance 全有自动证据、兼容矩阵已更新、下游 owner 已完成接口验收。 + +每次跨 lane 交接必须包含: + +1. 版本化 Facade/Worker/schema 合同。 +2. 能力探测和 unsupported 原因。 +3. 成功、失败、取消、超时、stale 和资源释放测试。 +4. FreeCAD oracle fixture 与差异报告。 +5. 持久化/迁移影响和安全说明。 +6. 下游不得依赖的内部句柄、瞬时索引或实现细节。 + +阻塞条件必须记录具体缺失依赖、复现命令和解除条件;“任务很大”或“以后支持”不是有效阻塞原因。 + +## 6. 统一门禁 + +日常增量: + +```bash +./npmw run check:execution-plan +./npmw run verify +git diff --check +jq empty config/freecad-execution-plan.json +jq empty config/compatibility-matrix.json +``` + +## 14. ADDON-ALL 与 SCRIPT-ALL 增量证据 + +`src/facade/addonGovernance.ts` 已落地插件目录治理合同:包内容摘要、可信签名者、权限白名单、依赖检查、安装/更新/回滚/删除和清单导出。插件包只登记 Facade 命令入口,不执行桌面 Python、网络或任意文件系统代码;默认仅允许 `geometry.read` 与 `project.read`。篡改摘要、未知签名者、越权权限和未满足依赖都会在进入目录前拒绝。 + +`src/facade/scriptSandbox.ts` 已落地脚本宏合同:仅允许登记的 Facade 命令 ID,限制命令数和参数字节数,支持确定性录制、JSON 导入和回放诊断,不调用 `eval`、网络、文件系统或桌面 Python 解释器。 + +`./npmw run test:addon`、`./npmw run test:chrome-addon`、`./npmw run test:script` 与 `./npmw run test:chrome-script` 使用 Chrome 150、隔离上下文和 OPFS 资源 round-trip 证明两个合同及资源释放;对应 `check:chrome-*` 是机器门禁。此增量仍不是完整 FreeCAD AddonManager/Python API:没有在线仓库协议、桌面 Python 执行或第三方插件运行时,兼容等级保持 `experimental`。 + +SURF-CORE 已完成受控曲面合同:Bezier/BSpline/Loft/Fill/Offset、参数域 Trim、C0 连续性、Sew 容差、稳定边界 TopoRef、质量分析和确定性 OBJ。Chrome 150 验证 5 个 patch、20 个 poles、1 个 trim、1 个 sew、`1.5` offset 和 4 个稳定 TopoRef,并完成 sqlite-opfs 往返及资源归零。 + +QA-08 增量由 `src/facade/locale.ts` 提供:`en-US`、`zh-CN`、`de-DE` 消息和单位格式化、长文本样例,以及可访问名称/重复 ID/可聚焦控件语义检查。`./npmw run test:locale` 与 `./npmw run test:chrome-qa08` 在 Chrome 150 + OPFS 下通过,`./npmw run check:chrome-qa08` 记录 4 个控件、0 个缺名/重复/未命名焦点控件。该证据不等于完整 WCAG/读屏认证,仍需最终 QA-08 人工与自动矩阵。 + +FC-09 增量由 `src/facade/secondaryFormats.ts` 提供:DXF、SVG、OBJ、PLY、STL、PDF 的签名探测、大小限制、确定性导出和显式 proxy/native 能力矩阵。`./npmw run test:secondary-formats`、`./npmw run test:chrome-secondary-formats` 与 `./npmw run check:chrome-secondary-formats` 使用 Chrome 150 + OPFS 验证 6 个格式记录及资源释放;这不是完整 FreeCAD 原生格式解析,二级格式仍按 proxy 边界管理。 + +QA-05 的通用基准保持 1000 个文档对象、1,000,000 个三角形索引计算和 100,000 个表格单元;ENG-CLOSURE 另增加真实 1000 组件 Assembly/BOM 构建预算,Chrome 150 实测约 `5.04 ms`,低于 `1000 ms` 门槛。百万三角形索引基准与工程工作台真实对象预算分别记录,不混写为同一种模型。 + +PLOT-ALL 已完成:`src/facade/plot.ts` 支持线性/对数轴、Series/Legend/Style/Spreadsheet Binding 和确定性 SVG/CSV;Chrome 150 使用真实 SVG 解码与 Canvas PNG 编码生成 `640x360`、`19408` byte 的 PNG,两次导出 SHA-256 一致且签名、OPFS round-trip/release 均通过。聚合门禁同时验证绑定值由 Spreadsheet 确定性更新到 `16`。 + +DOC-CLOSURE 已完成:Chrome 150 内真实创建 Spreadsheet、Draft、TechDraw、Plot 实例并分别编辑一次,公式值为 `6`、Draft 起点 X 为 `1`、TechDraw 尺寸为 `5`、Plot 末值为 `6`;实际导出 Spreadsheet CSV、Draft JSON、TechDraw SVG/PDF、Plot SVG/CSV。四个 artifact 均从版本 `1` 更新到 `2`,文档版本 `8`,保存到 sqlite-opfs 后字节精确读取、释放并重开,依赖闭包无缺失或环。`check:document-closure` 已纳入 `verify`,统一要求 TD-ALL、SS-ALL、DRAFT-BASE、DRAFT-OPS、PLOT-ALL、DOC-CLOSURE 的浏览器报告和资源归零。 + +ENG-CLOSURE 已完成真实混合工程闭包:Assembly、BIM、Mesh、Surface 实例各创建并编辑一次,JSON/IFC/OBJ 导出均为非空;四个 artifact 版本为 `2`、工程版本为 `8`,sourceRef 完整,sqlite-opfs 保存、字节读取、释放和重开通过。`check:engineering-closure` 聚合 Assembly Worker/FCStd、BIM IFC2X3/IFC4、Mesh Worker LOD/修复、Surface TopoRef 和混合工程预算,并通过 `check:chrome-engineering` 纳入 `verify`。 + +REL-03 增量增加 `scripts/release-signature.mjs` 及受控入口:本地使用权限为 `600` 的 `.secrets/release-signing-private.pem`,CI/发布机使用 `RELEASE_SIGNING_PRIVATE_KEY` 与 `RELEASE_SIGNING_KEY_ID`;两条路径都强制 Ed25519、公钥匹配和 payload SHA-256,缺少密钥时 fail-closed,不会生成 `unsigned-development` 发布清单。`./npmw run check:release-signing-key`、`./npmw run test:release-signature`、`check:release-artifacts` 和 `check:release-closure` 共同验证签名、验签、篡改拒绝与清单闭包。 + +QA-07 增量由 `src/facade/securityPreflight.ts` 统一执行资源路径、归档条目/压缩比、XML 禁止声明和插件权限白名单预检。`./npmw run test:security-preflight`、`./npmw run test:chrome-security` 与 `./npmw run check:chrome-security` 在 Chrome 150 + OPFS 下验证 4 类恶意输入拒绝、资源 round-trip 和释放;这不是完整安全审计,仍需持续 fuzz 与发布环境扫描。 + +## 14. ADDON-ALL 增量证据 + +`src/facade/addonGovernance.ts` 已落地插件目录治理合同:包内容摘要、可信签名者、权限白名单、依赖检查、安装/更新/回滚/删除和清单导出。插件包只登记 Facade 命令入口,不执行桌面 Python、网络或任意文件系统代码;默认仅允许 `geometry.read` 与 `project.read`。篡改摘要、未知签名者、越权权限和未满足依赖都会在进入目录前拒绝。 + +`./npmw run test:addon` 与 `./npmw run test:chrome-addon` 使用 Chrome 150、隔离上下文和 OPFS 资源 round-trip 证明该合同及资源释放;`./npmw run check:chrome-addon` 是 ADDON-ALL 的机器门禁。此增量仍不是完整 FreeCAD AddonManager:没有执行桌面 Python、在线仓库协议或第三方插件运行时,兼容等级保持 `experimental`。 + +ASM-CORE/ASM-TOOLS 已完成受控装配合同:固定/重合、距离、角度和运动帧均有 fixture,浏览器通过独立 module Worker 求解;碰撞、爆炸、BOM、变体、1000 组件预算和真实 FCStd `App::Link` 归档/重开通过。BIM-CORE/BIM-IFC 同时覆盖 Site/Building/Level/Space、材料、属性、分类、数量表及 IFC2X3/IFC4 双 schema 摘要往返。MESH-CORE 覆盖焊接、退化移除、OBJ/PLY/STL、Worker LOD,以及自交、非流形和孔 fixture。 + +REL-01 增量增加 `public/sw.js` 的真实 Chrome 生命周期门禁:`src/chromeOfflineHarness.ts` 注册并取得 Service Worker 控制权,验证 shell 预缓存、旧 cache 版本清理和断连后的缓存回退;`vite.config.ts` 在生产构建后注入 `dist/assets/*`(含 WASM)precache,`scripts/check-built-pwa-assets.mjs` 防止哈希资源遗漏。同一回放通过 OPFS marker、SQLite-OPFS 资源 round-trip 与 Shape 释放检查。`./npmw run test:chrome-offline`、`./npmw run check:chrome-offline` 与 `./npmw run check:built-pwa` 只使用 Chrome 150,证明 PWA 首装/升级/离线恢复的可执行子集;完整发布仍需部署环境的 CSP、缓存 CDN 和断电矩阵。 + +QA-06/REL-02 专项回放复核:`./npmw run test:chrome-fault-injection` 验证 planegcs Worker 的完成、取消、注入崩溃、不可用态、重建恢复和 stale 结果,且 OPFS marker 删除;`./npmw run test:chrome-opfs-migration` 验证 schema 1→6 迁移、重开、checkpoint、资源 round-trip、注入失败回滚和 SQLite 文件清理。两个 `check:chrome-*` 均只接受 Chrome 150 + crossOriginIsolated + OPFS 证据;它们不替代真实配额耗尽和操作系统断电演练。 + +FC-10 增量增加 `src/facade/fcstdRoundTrip.ts` 的稳定指纹和未知差异分类合同;`src/chromeFcstdRoundTripHarness.ts` 在 Chrome 150 + OPFS 回放 `freecad-web-freecad` 与 `web-freecad-web` 两个方向,验证对象/属性/GUI/Shape 语义、SQLite-OPFS 资源释放和 `FC-10` marker。`./npmw run test:fcstd-roundtrip`、`./npmw run test:chrome-fcstd-roundtrip` 与 `./npmw run check:chrome-fcstd-roundtrip` 已纳入机器门禁;它覆盖当前可编辑/proxy 子集,不宣称完整 FreeCAD 全模块 round-trip。 + +PD-CLOSURE 增量扩展 `BitBybitWebCadFacade.app.document`:`reorderBodyFeature` 保持依赖拓扑顺序,非法重排原子拒绝;`removeObject` 默认拒绝有依赖对象,显式 `cascade` 才删除依赖闭包,并自动重定向 Body.Tip。Chrome PartDesign lifecycle 现验证结构删除、Undo/Redo、Tip 回退/恢复、参数编辑、抑制、保存加载和 Shape 释放;报告写入 `config/chrome-partdesign-lifecycle-verification.json`,完整多 Body/跨文档重排仍未宣称完成。 + +PD-TRANSFORM 已完成 Feature-list 与 Whole shape 两类变换:LinearPattern、PolarPattern、Mirrored 和有序 MultiTransform 支持显式方向/轴/平面,局部模式按 additive/subtractive 原始特征工具应用并强制 PartDesign 单实体。Hole 已覆盖标准/规格、左右旋、线程深度和实际螺旋模型线程;Chrome 150 的 14 步链、FreeCAD 1.1.1 的 Feature-list/ISO M6 oracle、四类原生 OCCT history、OPFS 重开与 Shape 释放均由 `check:chrome-partdesign-transform` 和 `check:freecad-partdesign-transform` 锁定。 + +PD-CLOSURE 已由 `check:partdesign-closure` 聚合关闭。Chrome lifecycle 在初始、参数编辑、Undo 和 OPFS 重开后分别生成不同 ShapeHandle,Pad 体积为 `504→372→504→504`,各阶段 Body.Tip=`pad`、Sketch.Support=`XY_Plane`、solid=1;Loft/Pipe 与 dress-up 的三类失败均保留上一有效 Shape 并在修复后生成新 Shape。基础模式、四类 Loft/Pipe、14 步 dress-up/transform/Hole 创建链、三套保存加载、15 类原生历史及全部资源归零同时通过。 + +## 15. P09 平台工作台闭包证据 + +FEM 以本地轴向参考求解策略覆盖材料、节点集、约束、载荷、位移/应力结果场;CAM 覆盖 Job/Stock/Tool/Operation、碰撞负例、仿真、GRBL/LinuxCNC 白名单后处理和确定性 G-code;Robot 覆盖三轴正运动学、工作空间、轨迹、碰撞及控制器导出;Inspection 覆盖距离、角度、面积、体积、偏差、截面和稳定/歧义 TopoRef 报告。四套 Chrome 150 报告均通过隔离、sqlite-opfs 往返和 Shape 资源归零。 + +Points、ReverseEngineering、OpenSCAD、IDF、JT、Material、Import 七个专业模块逐项登记为受支持适配器或显式 proxy。AddonManager 通过摘要/签名者/权限/依赖、安装、更新、回滚和删除门禁;Script 仅回放白名单 Facade 命令,并显式拒绝 file/network/time/resource 四类环境能力。 + +`config/platform-module-coverage.json` 与锁定 FreeCAD 1.1.1 源清单逐项对齐 34 个模块,结果为 24 compatible、7 proxy、3 development、0 unexplained。`check:platform-closure` 聚合七份浏览器实跑报告、模块边界和 16 个可执行证据脚本;FEM-ALL、CAM-ALL、ROBOT-ALL、INSP-ALL、DATA-ALL、ADDON-ALL、SCRIPT-ALL、PLATFORM-CLOSURE 已关闭。 + +## 16. P10 QA 与发布闭包证据 + +QA-01/02 由 24 个测试套件、217 个 Node 用例、100 个成功/50 个失败 FreeCAD golden、19 类 Sketcher 成功/失败 oracle、17 个 PartDesign oracle 和 22 个 FCStd 双向 round-trip 场景关闭。QA-03 的 Chrome 150 生产构建回放 8 个核心流程,桌面/移动截图均为有效 PNG;初始几何预览来自 Bitbybit OCCT,任务态 canvas 仍通过像素和 WebGL 检查。 + +QA-04 三套固定种子 fuzz 覆盖 1000 个 FCStd parser、2000 个 geometry input、2000 个 Sketch solver 模型,均有正/负分类、输入不变性、确定性和 P95。QA-05 覆盖 1000 对象、1000000 三角形、100000 表格单元,Chrome 堆约 35 MB;QA-06 覆盖 Worker/WASM 取消、崩溃、恢复、stale、OPFS 迁移和事务回滚;QA-07 覆盖路径/归档/XML/权限、Addon 和 Script、CSP/依赖审计。 + +QA-08 同时检查 en-US/zh-CN/de-DE、单位与长文本、4 个 Facade 语义控件、真实应用 8 步键盘焦点、165 个 Accessibility Tree 节点、390px 移动布局和两张截图。REL-01 验证 PWA 安装、cache 升级清理、离线回退和 WASM precache;REL-02 验证 schema `1→6`、6 个正向迁移、6 个回滚和 OPFS 清理;REL-03 生成 172 组件 CycloneDX SBOM、无 critical audit,并用 Ed25519 签名 74 个 dist 文件清单。 + +REL-04 的 `release-capability-matrix.json` 引用 34 模块覆盖,G0-G9 全部 pass,`exact=0/compatible=24/proxy=7/development=3/unsupported=0`,无 scope-only 或 unexplained 条目;`docs/release-runbook.zh-CN.md` 定义签名、部署、缓存、迁移、回滚和诊断步骤。QA-01..QA-08、REL-01..REL-04 全部完成。 + +涉及 FreeCAD、OCCT 或浏览器时追加: + +```bash +./npmw run probe:freecad-reference +./npmw run test:golden:freecad +./npmw run test:occt-history +``` + +浏览器 E2E、内存、FCStd round-trip、solver、FEM/CAM 或安全任务必须执行各自配置中声明的专项证据,不能只用 `./npmw run verify` 关闭任务。 + +## 17. 后续对标波次:DATA-PTS/RE-FIT(2026-08-07) + +P01-P10 收口后,按 FreeCAD 1.1.1 的 `Points` 命令表(Import、Export、Convert、Merge、PolyCut、Structure)和 `ReverseEngineering` 命令表(Plane、Sphere、Cylinder)直接领取下一批可移植功能。网页 Facade 现在提供: + +- ASCII `ASC/PTS/XYZ/CSV/PCD/PLY` 点云解析和确定性导出;UTF-8、点数、字节、PTS 计数、ASCII-only PCD/PLY 和非有限数值均有拒绝诊断。 +- 点云平移、合并、AABB/XY 多边形裁剪、体素降采样、XY 结构化网格和统计边界/质心;派生云不修改源云。 +- 基于协方差特征分解和最小二乘的平面、球体、圆柱、二次多项式曲面拟合,以及半径邻域区域分割;返回稳定方向、尺寸、系数、RMS、簇标签和源 ID,共线/退化点集拒绝。 +- Chrome 150 + crossOriginIsolated + sqlite-OPFS 实跑:CSV 主点云 6 点、PTS/PCD/PLY 解析、合并 12、AABB/多边形裁剪各 4、降采样 1、结构网格 `3×2`、六种格式导出和 `0/0` 资源释放;拟合结果为平面 RMS `1.73e-16`、球半径 `2`、圆柱半径 `3`/高度 `8`、多项式 RMS `0`,区域分割为两个各 2 点的簇。 + +因此 `Points` 与 `ReverseEngineering` 从 `proxy` 提升为 `compatible` 子集;E57/二进制点云、Poisson 重建、法向驱动区域生长、完整 B-spline 曲面拟合和桌面 Python/Qt 交互仍明确保留为差异。平台矩阵现为 `exact=0/compatible=26/proxy=5/development=3`,无 unexplained 项;`check:chrome-data`、`check:platform-closure` 和完整 `verify` 均必须继续通过。 + +## 18. FreeCAD UI/交互对标执行波次(UI-19..UI-30) + +P01-P10 的 `83/83` 完成只表示既定功能和发布门已收口,不表示网页界面已经与 FreeCAD 桌面端完全一致。已有 Chrome E2E、键盘、移动布局和截图证据只能作为本波次的输入,不能直接关闭 UI 任务。UI 对标基线固定为 FreeCAD `1.1.1`、提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`;`UI-01..UI-18` 的现有应用壳和组件合同继续有效,`UI-19..UI-30` 负责逐界面、逐状态和逐流程完成桌面行为对照。 + +### 18.1 对标合同 + +对标不以“看起来类似”为验收。每个界面必须同时记录 FreeCAD 来源、默认布局、尺寸/停靠关系、菜单和控件顺序、可见/启用条件、焦点与键盘行为、命令调用、事务边界、成功/失败/取消结果和浏览器差异。语义顺序、命令状态和使用流程按 `exact` 验收;字体栅格化、操作系统窗口装饰和浏览器原生文件选择器按 `compatible` 验收,并在差异清单中逐项说明。 + +| 界面范围 | FreeCAD 对标要求 | Web 验收要求 | +|---|---|---| +| 菜单 | 保持 File/Edit/View/Tools/Macro/Windows/Help 和工作台菜单的顺序、分组、分隔符、图标、助记键、快捷键提示及动态启用条件 | 同一文档、工作台和选择状态下,命令可见性、顺序、启用/禁用及原因与 oracle 一致;未实现命令显式禁用,不得静默成功 | +| 工具栏 | 保持标准、视图、工作台及领域工具栏的分组、图标、tooltip、切换态和工作台切换后的显隐 | 桌面宽度优先复现 FreeCAD 工具栏行;窄屏只允许确定性 overflow,不得改变命令语义或遮挡视口 | +| 工作台 | 工作台选择器位置、名称、切换后的菜单/工具栏/任务状态和活动文档关系一致 | 切换必须通过命令注册表原子更新;进行中的 Task 按 FreeCAD 规则阻止、确认或结束,不能留下旧工作台命令 | +| Combo View | 左侧停靠区、Model/Tasks 标签、模型树、选择同步、展开状态、搜索/过滤和可调整分隔条一致 | 树与 3D 选择双向同步;对象状态、Body/Tip、可见性和活动对象可辨识;布局保存/恢复确定 | +| Task panel | 任务标题、参数分组、选择提示、预览、错误、Apply/OK/Cancel 和任务锁定顺序一致 | 打开命令自动进入 Tasks;预览不提交文档;Apply/OK 建立正确事务;Cancel/Esc 回滚草稿并恢复 Model/选择/焦点 | +| Data/View 属性 | Data/View 标签、分组、名称、只读/隐藏/输出状态、单位、枚举、Placement、Link/LinkSub、表达式和 mixed 值一致 | Enter/失焦/Cancel 提交语义明确;编辑走 Facade/Command Bus;非法值保持原值并定位错误,多选不覆盖 mixed 值 | +| 对话框 | 标题、字段、标签页、按钮顺序、默认按钮、校验、焦点、Enter/Esc、尺寸和打开位置与对应 FreeCAD 对话框一致 | 偏好、导入/导出、保存/关闭、颜色/线型、表达式、单位及命令参数逐类回放;浏览器文件选择器差异单独登记 | +| 快捷键 | FreeCAD 默认快捷键、菜单 accelerator、命令序列和作用域一致 | 命令搜索与 tooltip 展示同一绑定;输入框/视口/Task 作用域无冲突;浏览器保留键必须提供等价入口和明确差异 | +| 上下文菜单 | 根据树、视口、对象类型、子元素、多选、空白区和工作台生成相同的命令组与状态 | 右键前选择规则、菜单位置、分隔组、启用谓词和执行后的选择/焦点均有 oracle;不得以通用菜单替代领域菜单 | +| 状态栏 | 显示当前命令提示、预选对象/子元素、坐标/单位、进度、取消和错误入口 | 鼠标移动、预选、长任务、保存和失败状态实时更新;完成/取消后清理,不覆盖持久错误和未保存状态 | +| 使用流程 | 保持“新建/打开文档 -> 选择工作台 -> 创建或选择对象 -> Task 参数/预览 -> Apply/OK/Cancel -> Data/View 编辑 -> 重算 -> 保存/导出”的动作、选择和事务语义 | Part、PartDesign、Sketcher、Draft、TechDraw、Spreadsheet、Assembly、BIM、Mesh、FEM/CAM 各有成功、失败、取消、Undo/Redo、保存重开回放 | + +### 18.2 任务分配 + +本波次沿用第 2 节责任 lane;共享 React Presentation 壳由 `CORE` 主责,领域工作台 owner 负责本工作台菜单、Task 和上下文贡献,`ORACLE` 提供 FreeCAD 证据,`QUALITY` 拥有最终门禁。状态仅允许 `pending/in_progress/completed/blocked`。任务建立后已立即领取 UI-19..UI-28;已有 Web 实现和 Chrome 证据只能使任务进入 `in_progress`,完整 FreeCAD GUI oracle 缺失时不得标记 `completed`。 + +| 任务 | Owner | 依赖 | 交付与验收 | 状态 | +|---|---|---|---|---| +| UI-19 FreeCAD GUI oracle 与 UI manifest | ORACLE+QUALITY | INV-03、ORA-02 | 采集锁定版本的菜单、工具栏、工作台、Combo/Task、属性、对话框、快捷键、上下文和状态栏;至少覆盖空文档、活动文档、单选、多选、Task、错误六类状态,产出可追溯 manifest、截图和焦点/命令回放 | in_progress | +| UI-20 应用壳、菜单和文档区 | CORE | UI-19、UI-01 | 顶部菜单、菜单分组/状态、MDI 文档标签、活动文档、关闭确认和中心视口布局与 oracle 对齐;桌面基准下关键边界在声明的像素容差内,命令状态无未知差异 | in_progress | +| UI-21 工具栏与工作台切换器 | CORE+各工作台 owner | UI-19、UI-20、UI-09 | 标准/视图/领域工具栏、图标/tooltip/切换态、工作台选择及动态贡献对齐;切换后旧命令清理,窄屏 overflow 可键盘访问且不改变命令顺序 | in_progress | +| UI-22 Combo View 与模型树 | CORE+TOPO | UI-20、UI-03、UI-04、TSN-09 | Model/Tasks、分隔条、树层级、展开/选择/可见性/活动 Body/Tip、拖放和上下文前置对齐;树/3D 双向选择、保存恢复、万级节点回放通过 | in_progress | +| UI-23 Task panel 与命令生命周期 | CORE+SKETCH+各工作台 owner | UI-21、UI-22、UI-08 | 通用 Task 容器和 Sketcher/PartDesign/领域 Task 模板对齐标题、参数组、选择提示、预览、Apply/OK/Cancel;成功、校验失败、Esc、命令切换、Undo/Redo 的事务和焦点回放一致 | in_progress | +| UI-24 Data/View 属性编辑器 | CORE+DOC+TOPO | UI-22、UI-05..UI-07、INV-02 | Data/View 分类、属性顺序、编辑器、单位、表达式、LinkSub、只读状态和 mixed 值与对象元数据一致;单选/多选、非法输入、提交/取消、重算和 FCStd 重开通过 | in_progress | +| UI-25 对话框系统与浏览器替代策略 | CORE+IO+PLATFORM | UI-19、UI-20、FC-04 | 对偏好、导入/导出、保存/关闭、颜色/线型、表达式、单位和领域参数建立逐对话框合同;按钮顺序、默认动作、Tab 顺序、Enter/Esc、校验和恢复一致,文件/权限差异可追溯 | in_progress | +| UI-26 快捷键、accelerator 与命令路由 | CORE+QUALITY | UI-20、UI-21、UI-14 | FreeCAD 默认绑定、菜单提示、命令搜索、chord/作用域和输入焦点冲突矩阵完成;同一命令只走一个注册表,浏览器保留键有等价路径,真实键盘回放无误触 | in_progress | +| UI-27 上下文菜单与选择语义 | TOPO+CORE+各工作台 owner | UI-22、UI-24、TSN-09 | 树/视口/空白、对象/子元素、单选/多选上下文命令、分组和状态与 oracle 一致;右键选择、预选、执行后选择及歧义修复全流程通过 | in_progress | +| UI-28 状态栏、Report 与长任务反馈 | CORE+QUALITY+KERNEL | UI-20、UI-22、UI-12、BYB-05 | 预选/坐标/单位/命令提示、进度/取消、未保存状态、错误和 Report 入口对齐;Worker 保存/导入/重算的完成、失败、取消和 stale 都能确定清理 | in_progress | +| UI-29 FreeCAD 使用流程逐工作台回放 | 各工作台 owner+IO+QUALITY | UI-23..UI-28 | 对核心与已声明 compatible 工作台执行新建/打开、切换、创建、选择、Task、属性编辑、重算、Undo/Redo、保存重开、导出;每步比较命令状态、活动标签、选择、树、属性、视图和诊断 | pending | +| UI-30 UI/交互闭包与差异矩阵 | QUALITY+ORACLE+全体 owner | UI-19..UI-29、QA-03、QA-08 | Chrome 桌面/窄屏视觉、Pointer/Keyboard、Accessibility Tree、locale/长文本和跨工作台录制全部通过;生成 UI 能力/差异矩阵,零未登记差异、零遮挡、零无名控件、零阻断流程后才可标记完成 | pending | + +### 18.3 连续执行与门禁 + +执行顺序为 `UI-19 -> UI-20/UI-21 -> UI-22 -> UI-23/UI-24 -> UI-25/UI-26/UI-27/UI-28 -> UI-29 -> UI-30`。同一阶段允许按 owner 并行,但每个上游交付后立即领取下一项,不等待另行确认。工作台任务只消费版本化 Facade 命令、对象 schema 和选择合同;页面不得直接访问 OCCT、Three.js、SQLite 或 OPFS 业务 API。 + +每项至少需要 FreeCAD 1.1.1 GUI oracle、Chrome 真实交互回放、桌面与 390px 窄屏截图、成功/失败/取消状态、键盘与焦点证据、无遮挡/溢出检查和无障碍名称检查。UI-30 还必须确认任务结束后 TaskSession、Worker 请求、ShapeHandle、临时资源和对话框焦点陷阱全部释放。未取得完整 GUI oracle 前,只能标记 `in_progress`,不能用静态源码、当前页面截图或 headless `FreeCADCmd` 证据标记 `completed`。 + +### 18.4 本轮已落地证据(2026-08-07) + +- 工作区改为 FreeCAD 桌面式紧凑层级:应用菜单、标准工具栏、按命令组生成的工作台工具栏、MDI 文档标签、左侧 Combo View(Model/Tasks)、中央 OCCT/Three.js 视口、右侧 Selection View、Report/Jobs/Diagnostics 和状态栏;左右 Dock 可显式折叠。 +- File/Edit/View/Tools/Macro/Windows/Help 菜单具备 `menu/menuitem` 语义、外部点击和 Escape 关闭;命令搜索统一展示菜单/工作台命令,Preferences、About、Macro、关闭/删除确认使用 `aria-modal` 对话框和桌面式按钮区。 +- 模型树支持对象选择驱动的右键菜单,包含可见性、重命名、重算和带依赖提示的删除确认;任务命令自动切换 Combo View 的 Tasks,保留 Apply/OK/Cancel 和已有 Facade 事务。 +- Chrome 150 生产 E2E 新增 `freecad-menus`、`command-search-dialog`、`preferences-about-dialogs` 和 `model-tree-context-menu`:File 7 项、命令搜索 18 个结果、Preferences `3 select + 2 checkbox`、模型树 4 项上下文命令、Part Design 5 个工具栏组;桌面 `1440x1000` 无横向溢出,OCCT canvas `892x679`、27 色、WebGL error 0,390px 启动页无溢出,162 个 AX 节点中的 16 个控件全部具名。 +- `build`、167 项 Facade 测试、230 项单元测试、13 条 Chrome 工作流、3 张有效 PNG、质量闭环、现有 10 项 release closure 和 `git diff --check` 均通过。新增 CAM 工作流验证 60 个菜单/工具栏命令、4 个工具栏组、5 个菜单组、Job/Fixture/Tool/Operation/ToolBit Load/Drilling/Drag Knife/Post 5 轴 Task、7 行 Job 树及三维刀路;此前 `verify` 曾在发布产物生成处因缺少签名环境而 fail-closed,现已通过受控本地 Ed25519 密钥重新生成清单并由公钥验签,禁止复用旧签名宣称新构建已签名。 + +当前 UI 波次为 `0 completed / 10 in_progress / 2 pending / 0 blocked`。未关闭项不是样式返工:UI-19 仍需可自动化的完整 FreeCAD GUI oracle;UI-20..UI-28 仍需按该 oracle 补齐动态禁用、全部对话框、视口/多选上下文、坐标预选和焦点陷阱;UI-29/UI-30 等待逐工作台回放和零未登记差异闭包。 + +## 19. CAM 完整对标执行波次(CAM-21..CAM-32) + +P09 的 `CAM-ALL=completed` 表示原 WBS 定义的 Job/Stock/Tool/Operation、碰撞负例、仿真和确定性 G-code 兼容门已经通过,不表示网页端已经等价实现 FreeCAD CAM/Path 的全部算法、对象模型、界面和机床验证。本波次继续锁定 FreeCAD `1.1.1`、提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`;能力口径由 `config/freecad-cam-parity.json` 管理,`check:cam-parity` 同时校验 FreeCAD GUI 清册、浏览器 CAM 报告和真实应用 E2E。FreeCAD 清册含 56 个 runtime CAM 命令和 5 个 source-only 注册,除 `CAM_%s` 动态模板外,当前 Web 已暴露全部 60 个可操作命令。除静态命令 ID/分组清册外,当前能力统一标记为 `compatible/development`,不得宣称 exact。 + +### 19.1 已落地的浏览器 CAM 合同 + +- CAM 工作台提供 FreeCAD 命名的 60 个可操作命令、4 个工具栏组和 5 个菜单组;Combo View 中显示 Job、Model、Stock、SetupSheet、Tools/Controllers、Operations,命令进入对应的 Job/Tool/Operation Task,保留 Apply/OK/Cancel。 +- Job 支持从模型包围盒、创建方盒、创建圆柱和选择现有实体 4 种 Stock;SetupSheet 提供快速进给、安全/间隙高度、深度表达式和 coolant;ToolBit 覆盖 End Mill、Ball End、Bull Nose、Drill、V-Bit、Thread Mill、Probe 7 种形状及控制器进给/主轴参数。 +- Facade 登记 Profile、Pocket、Contour、Mill Face、Helix、Adaptive、Slot、Drilling、Tapping、Engrave、Deburr、V-Carve、Pocket 3D、Surface、Waterline、Thread Milling、Probe、Area、Area Workplane、Custom、Shape、Path Shape Tool Controller 共 22 种工序,以及 Array、Axis Map、Boundary、Dogbone、Drag Knife、Lead In/Out、Ramp Entry、Holding Tags、Z Correct 共 9 种 dress-up。 +- 三维视口渲染按工序着色的刀路;Chrome CAM harness 实际生成 2 把刀、2 个控制器、3 个工序、23 个路径点和 1 个 dress-up,通过 Sanity、无碰撞正例和 1 个碰撞负例。GRBL、LinuxCNC、Mach3/Mach4、Centroid、Marlin、MASSO G3、Snapmaker 7 个 allowlisted post 均生成稳定 SHA-256,未知 post 显式拒绝。 +- Chrome 150 应用回放覆盖 13 条流程;CAM 流程验证 60 个 CAM 菜单项、Job/Fixture/Tool/Operation/ToolBit Load/Drilling/Drag Knife Task、7 行 Job 树、5 个三维刀路点、图例、零横向溢出和零页面错误。独立 CAM 报告还验证 23 点材料去除时间线、夹具碰撞、sqlite-opfs 往返、marker 删除及释放后 `ShapeHandle/kernel reference=0/0`。 + +### 19.2 任务分配与连续执行 + +| 任务 | Owner | 依赖 | 交付与验收 | 状态 | +|---|---|---|---|---| +| CAM-21 FreeCAD CAM 命令与分组清册 | ORACLE+PLATFORM | UI-19、INV-03 | 锁定 InitGui/命令注册来源;60 个可操作 Web 命令均映射 FreeCAD 清册,其中 56 个 runtime-probed、4 个 source-only;`CAM_%s` 动态模板单独排除,基线漂移自动失败 | completed | +| CAM-22 CAM 工作台、菜单、工具栏与 Job 树 | CORE+PLATFORM | CAM-21、UI-20..UI-23 | 4 工具栏组、5 菜单组、60 个可操作命令、Combo/Task/Property/视口刀路已落地;仍需完成动态可见/启用和完整 Qt 截图/焦点 oracle | in_progress | +| CAM-23 Job、Stock 与 SetupSheet 浏览器合同 | PLATFORM | CAM-21、CAM-22 | 4 Stock mode、尺寸/边界、快速进给、安全/间隙高度、深度和 coolant 有成功/失败/持久化证据 | completed | +| CAM-24 ToolBit、Library 与 Tool Controller | PLATFORM+IO | CAM-23 | 7 种刀具、控制器、刀号、feed/rapid/spindle/coolant、holder 尺寸字段、版本化 JSON ToolBit Load/Save;仍须补齐 FreeCAD ToolBit asset schema、库迁移、holder 原生几何和全量编辑 oracle | in_progress | +| CAM-25 全工序 Path 算法对标 | PLATFORM+KERNEL | CAM-23、CAM-24、TSN-09 | 22 种浏览器工序已有确定性兼容实现;须逐工序与 FreeCAD 原生 Path 几何、进退刀、深度、方向、失败诊断及拓扑引用比较 | in_progress | +| CAM-26 Dress-up 与路径修改对标 | PLATFORM+TOPO | CAM-25 | 9 种 dress-up、Copy/Array/Toggle 生命周期已有合同;须补齐原生 Path dress-up 参数、组合顺序和 TopoRef oracle | in_progress | +| CAM-27 仿真、材料去除与碰撞 | PLATFORM+KERNEL | CAM-25、CAM-26 | 已有去重扣料的 browser-raster 时间线、feed 时间、holder-stock/cutter-fixture/holder-fixture swept envelope、侵入量/间隙和 Fixture Task;仍须以原生实体布尔去料、OCL/Path 与刀柄/夹具几何 oracle 对照 | in_progress | +| CAM-28 后处理与 G-code 安全 | PLATFORM+QUALITY | CAM-24、CAM-25 | 7 个 allowlisted post、稳定哈希和非法 post 拒绝;须补齐 FreeCAD post 参数/单位/机床差异、控制器 golden 与生产 dry-run | in_progress | +| CAM-29 CAM 文档、Undo/Redo 与 FCStd | IO+DOC+PLATFORM | CAM-23..CAM-28、FC-10 | 版本化 Job JSON 已覆盖 Stock、SetupSheet、ToolBit/Controller、Operation/Dress-up、路径、Fixture 和材料设置,具备受限导入、同身份重开及 Undo/Redo;FreeCAD 原生 Path::Feature/FeaturePython save/open/mutate/save/open 与 Web `Path::PropertyPath` 原生 Path::Feature 命令资源编辑已由 oracle 通过,FeaturePython/full operation-object 语义仍有边界 | in_progress | +| CAM-30 Task、选择、键盘与对话框 | CORE+TOPO+QUALITY | CAM-22、CAM-24..CAM-28、UI-23..UI-28 | 原生 Qt 已验证 Job/Profile Task 的 setEdit、OK/Cancel、14 个字段和关闭生命周期;完整 selection provider、base geometry、键盘/焦点、错误/警告和全部工序对话框仍需对照 | in_progress | +| CAM-31 OpenCamLib/CAMotics 与 4/5 轴 | PLATFORM+KERNEL | CAM-25、CAM-27 | OCL WASM、CAMotics source-stage G-code、CAMotics 1.3 原生 Qt/TPL 与 CLI sidecar、standalone sweep WASM、OCCT 实体去除(含 continuous-segment sweep)和 LinuxCNC XYZBC RTCP post/bridge 已接入;完整浏览器程序/同输入差分、FreeCAD 全工序算法和连续工具轴完整 oracle 仍须关闭 | in_progress | +| CAM-32 exact 闭包与机床认证 | QUALITY+ORACLE+全体 owner | CAM-21..CAM-31 | XYZBC 数字机型已按 CAD→OCL→CAMotics→G-code→LinuxCNC WASM 顺序完成 dry-run/run 接受;6 个 LinuxCNC INI 的生产安全矩阵保持 fail-closed,`productionOpen=false`。FeaturePython/full Path 语义、CAMotics GUI/浏览器同输入差分、泛化工具轴/奇异点、机型专属生产认证仍阻止 exact 声明 | in_progress | + +连续依赖链为 `CAM-21 -> CAM-22/CAM-23 -> CAM-24 -> CAM-25 -> CAM-26/CAM-28 -> CAM-27 -> CAM-29/CAM-30 -> CAM-31 -> CAM-32`。当前 CAM 波次状态为 `8 completed / 4 in_progress / 0 pending / 0 blocked`;本轮增加的 FreeCAD Path oracle、OCL/CAMotics source-stage、OCCT、LinuxCNC bridge 和 XYZBC 数字机床证书均已登记,剩余差异保持显式。 + +### 19.3 明确未关闭的 exact 差异 + +当前还缺少六类关键证据:FreeCAD 全工序 Path 算法及几何语义、完整 CAM Qt Task 的选择/焦点/键盘/校验 oracle、CAMotics 完整浏览器程序及同输入三轴差分、解析任意曲线的无弦误差扫掠及刀柄/夹具碰撞 oracle、连续工具轴全姿态/奇异点 golden、FeaturePython/完整 operation-object 的 Web `Path::PropertyPath` 语义往返。LinuxCNC WASM G-code bridge 已成为唯一解析/控制器入口;安全矩阵只证明 fail-closed,不打开生产授权,也不替代实体执行器/计量认证。 + +## 20. 系统级 FreeCAD exact 执行波次(EX01..EX10) + +既有 P01..P10 的 `83/83 completed` 是已声明浏览器兼容范围的发布闭包,不是 FreeCAD 全系统 exact。系统 exact 的唯一机器计划改由 `config/freecad-web-exact-parity-plan.json` 管理,锁定 FreeCAD `1.1.1` 与提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`。该计划逐项覆盖 34 个模块、15 种格式、6 类入口,任何遗漏、未知依赖、循环依赖、缺失阻断原因或提前 exact 都由 `check:freecad-web-exact-parity-plan` 拒绝。 + +| Program | 范围 | 任务状态 | 首要交付 | +|---|---|---:|---| +| EX01 | 全量 runtime/GUI oracle 与可选依赖 | 0 completed / 2 in progress / 1 pending | 每个 TypeId、Property、Command 和失败状态都有原生证据 | +| EX02 | OCCT、逐阶段历史、MappedNameRef/StringHasher、同构消歧 | 1 / 3 / 2 | 每个 builder 有原生 stage Shape/history/naming;无证据继续 fail-closed | +| EX03 | App 文档、属性、事务、表达式、跨文档与参数 | 0 / 4 / 1 | 原生对象图、observer 顺序、失败恢复和多文档生命周期一致 | +| EX04 | Sketcher、Part、PartDesign | 0 / 4 / 1 | 全几何/约束/特征/参数组合及 native naming 差异为零 | +| EX05 | FCStd 与全部 15 种格式 | 0 / 4 / 1 | 支持对象可编辑双向往返;代理格式显式排除出 exact claim | +| EX06 | 完整 GUI、Task、属性、选择、快捷键与工作流 | 0 / 4 / 1 | 动态 enable/visible/focus/validation 与 FreeCAD GUI oracle 一致 | +| EX07 | Draft、TechDraw、Spreadsheet、Plot | 0 / 4 / 1 | 对象、命令、跨工作台引用和导出完整往返 | +| EX08 | Assembly、BIM、Surface、Mesh、Material | 0 / 4 / 1 | 求解、IFC、曲面/网格算法和材料语义原生对照闭合 | +| EX09 | FEM、CAM、Robot、Points/RE、Inspection、脚本、插件、proxy 模块 | 0 / 6 / 3 | 全 Path/FEM/数据算法与安全 Python/addon 策略;五个 proxy 被实现或排除 | +| EX10 | 跨浏览器、A11y、locale、可靠性和 exact 发布 | 0 / 2 / 2 | 34 exact 模块、所有零差异指标和签名发布同时满足 | + +详细的 52 项任务均包含 `priority/status/dependencies/deliverables/acceptance/evidence/exactBlockedBy`。执行关键路径为: + +1. `EX-ORA-01 -> EX-ORA-02 -> EX-KER-01`,先扩展原生证据,禁止用 Web 当前行为自证。 +2. `EX-TSN-00 -> EX-TSN-01 -> EX-TSN-02/03 -> EX-TSN-04`,闭合逐阶段历史、私有 token 证据和同构来源。 +3. `EX-DOC-01..05 -> EX-SK/PART/PD -> EX-FC/FMT`,完成对象、特征和文件语义。 +4. `EX-UI-01..05` 与 EX07..EX09 按依赖推进,逐工作台比较成功、失败、取消、保存重开和资源释放。 +5. `EX-QA-01..03 -> EX-REL-01` 最后执行;不得通过修改 capability 文本绕过任何上游任务。 + +当前总状态为 `1 completed / 37 in_progress / 14 pending / 0 blocked`。唯一 completed 的 exact 子任务是 `EX-TSN-00`:缺少原生 MappedNameRef/StringHasher、逐阶段 builder 或唯一同构来源时硬失败或保持 ambiguous。系统 `exact=false`,直到 `EX-REL-01` 同时确认 52/52 completed、34/34 exact、错误绑定/未解释关系/名称漂移/未知语义差异/证据缺失/发布阻断全部为零。 + +Promotion 还必须经过 `check:freecad-web-exact-promotion`:它要求结构化 `config/freecad-web-exact-promotion-report.json`,并拒绝仅修改 `compatibility-matrix.json` 或 `claim.exact` 的人工提升。当前报告不存在是正常状态,因为 `EX-REL-01` 尚未完成;门禁必须输出 `freecad-web-exact-promotion-fail-closed`。 + +七阶段执行细节、命令顺序、退出条件和报告示例见 `docs/freecad-exact-promotion-runbook.zh-CN.md`;机器字段契约见 `config/freecad-web-exact-promotion-report.schema.json`。 diff --git a/docs/freecad-full-parity-plan.zh-CN.md b/docs/freecad-full-parity-plan.zh-CN.md index 4c2c018..bd851d1 100644 --- a/docs/freecad-full-parity-plan.zh-CN.md +++ b/docs/freecad-full-parity-plan.zh-CN.md @@ -269,7 +269,7 @@ Bitbybit 必须被充分用作几何、Worker、IO、三角化和缓存的首选 | P0-01 | `IN PROGRESS`:已固定 FreeCAD 源码提交、原生编译器/依赖版本、无界面 Part 构建脚本与产物哈希;依赖镜像 digest 尚未完成 | lock、容器、构建日志 | 同一输入产生相同版本信息 | | P0-02 | 生成 UI/命令/对象/Property/工作台 manifest | JSON manifest | 每条能力有来源和等级 | | P0-03 | `IN PROGRESS`:声明式契约、FreeCADCmd driver/比较器和首批 5 个 Part 成功样例已通过;100 个黄金文件与 50 个错误文件尚未达到 | fixtures、expected | 桌面结果可复现 | -| P0-04 | 固定浏览器能力矩阵和 COOP/COEP | browser matrix | Chrome/Firefox/Safari 最新两个版本有结果 | +| P0-04 | 固定浏览器能力矩阵和 COOP/COEP | browser matrix | Chrome 最新两个版本有结果 | | P0-05 | 许可证、供应链、WASM 安全评审 | SBOM、许可证清单 | 无未知二进制和高风险漏洞 | | API-01 | Facade API 版本化和 JSON Schema | `src/facade` 合同 | 破坏性变更有迁移和弃用期 | | API-02 | 统一请求上下文、取消、进度和诊断 | protocol types | 过期结果无法提交 | @@ -283,7 +283,7 @@ Bitbybit 必须被充分用作几何、Worker、IO、三角化和缓存的首选 | GEO-04 | 几何精度、容差和确定性 | tolerance policy | 体积/面积/拓扑黄金稳定 | | QA-01 | 单元/属性/解析器/图算法测试 | tests | 分支和错误分类达标 | | QA-02 | FreeCAD CLI/GUI 回放对照器 | comparator | 差异含输入、版本、对象和数值 | -| QA-03 | 浏览器 E2E、视觉和几何黄金 | Playwright fixtures | 三浏览器能力结果可审计 | +| QA-03 | 浏览器 E2E、视觉和几何黄金 | Playwright fixtures | Chrome 能力结果可审计 | | QA-04 | 性能/内存/取消/恢复压力 | benchmark reports | P95、峰值内存、失败率达门槛 | | QA-05 | 安全测试和 fuzzing | corpus/reports | 文件、表达式、Worker 消息不可越权 | @@ -333,7 +333,7 @@ Bitbybit 必须被充分用作几何、Worker、IO、三角化和缓存的首选 属性领域合同现覆盖标量、枚举、颜色、Vector、Placement、ObjectLink、ObjectLinkList/StringList 和版本化 SubshapeLink。Placement/Vector 使用结构化值并做有限数、角度范围及非零旋转轴校验,复合值深拷贝进入 Undo/Redo 与持久化。Facade 的对象级几何重算已在 Shape 生成后执行 Placement,并对恒等变换、畸形结构、变换失败释放和最近有效缓存保留给出测试证据;这不是 FreeCAD Body/Tip、Support、AttachmentOffset 或特征局部坐标链的等价实现,File/Shape 摘要和多选 mixed 编辑也仍未完成。 -TSN 已完成面/边/顶点量化签名、唯一/重复候选判定和匹配 API,并挂接到实际重算 generation。成功 Shape 会产生对象拓扑快照、迁移 matches 和 `signature-fallback` 历史;提交阶段自动写回 LinkSub 与草图外部几何,稳定引用更新 generation,歧义/删除引用保持显式状态、标脏所有者并产生修复诊断。候选替换 Facade 事务验证当前拓扑和 kind 后原子写入 stable TopoRef,重建 DAG、进入 Undo/Redo;属性面板和诊断页均通过 Facade 调用。schema v6 保存快照。当前仍没有 OCCT 原生历史、曲线/曲面参数签名、邻接图、跨 Boolean 原生映射或 3D 候选高亮,因此 TSN-03、TSN-07/09 与完整 TSN-08 仍未完成。 +TSN 已完成面/边/顶点量化签名、邻接指纹消歧和匹配 API,并挂接到实际重算 generation。成功 Shape 会产生对象拓扑快照、迁移 matches、`signature-fallback`/`occt-native` 历史和 schema v1 ElementMap;提交阶段自动写回 LinkSub 与草图外部几何,稳定引用更新 generation,歧义/删除引用保持显式状态、标脏所有者并产生修复诊断。候选替换 Facade 事务验证当前拓扑和 kind 后原子写入 stable TopoRef,重建 DAG、进入 Undo/Redo;属性面板和诊断页均通过 Facade 调用。schema v6 保存快照。Three.js 已支持多对象 Mesh 注册、OCCT analytic 面/边/顶点点击、预选、完整边折线高亮、window/crossing 框选和诊断聚焦闪烁;普通单向 Pad/Pocket/Revolution/Groove 已接入已有 OCCT `Generated/Modified/Deleted` provider,其余复合模式仍显式回退。 Sketcher 已有 Facade 事务模型和基础求解器适配器:Sketch 几何/约束快照进入 `DocumentObjectSnapshot`,新增几何、约束和求解会更新 `ConstraintStatus`、历史、自动保存与 SQLite schema v4;基础约束现覆盖 Diameter、Symmetric、Tangent。该适配器的职责是验证数据模型和提供可替换协议;它不宣称已经等价于 FreeCAD `planegcs`。SK-03 的 planegcs WASM、SK-07 的完整约束分类、SK-09 的交互回放和 SK-10 的 B-spline 仍是兼容门禁。 @@ -366,17 +366,17 @@ PartDesign Mirrored 已形成 experimental whole-shape 垂直切片:Facade 验 | P1-02 命令准确性 | manifest 仍可完整展示;Part `primitive/union/cut/intersection` 与 Part Design 核心命令已有 Facade executor;命令状态同时检查工作台和对象类型选择谓词;其余未接入 executor 的命令返回 disabled 与 `COMMAND_UNIMPLEMENTED`,不再静默完成 | Part 基本体/布尔 Shape 缓存、选择不兼容时的禁用原因、`additive-loft` 未实现状态与诊断测试通过 | 其余工作台要逐项增加真实 executor、Task 参数和黄金回放后才能启用 | | P3-05 Pattern 实验切片 | `linear-pattern` 和 `polar-pattern` 通过 Part Design 选择谓词、Task 和类型化属性创建对应对象;Linear 按总 Length 等距平移,Polar 在小于 360° 时覆盖首末角、360° 时不复制重合端点;两者均由 OCCT union 合并并释放临时副本 | 线性间距/方向、圆周完整/部分角度分布、联合输入、句柄释放、非法参数诊断、Base 链接、Body.Tip、属性校验和任务提交回归测试通过 | 当前为 FreeCAD 1.0+ 的 Transform body 近似,只复制整个 Base Shape;未实现 Transform tool shapes、连接单实体过滤、稳定 TopoRef、历史映射、反向轴和引用轴,因此保持 `experimental` | | P3-07 MultiTransform 实验切片 | `multi-transform` 使用结构化有序 Linear/Polar/Mirrored 步骤,Task 与属性面板共用编辑器;重算逐步扩展 whole-shape 实例并最终 union,限制最多 6 步和 100 个组合实例 | 6 实例组合、方向/平面映射、故障注入、中间 Shape 完整回收、最近有效缓存、深拷贝、Undo/Redo、fallback 保存恢复与任务提交测试通过 | 不是 FreeCAD 局部 Transform feature history;未实现特征列表、Datum/TopoRef 轴面、单实体规则与原生拓扑历史,保持 `experimental` | -| P3-05 Hole 基础切片 | `hole` 创建 `PartDesign::Hole`,用 32 边圆形 Profile 调用现有 OCCT Pocket;支持 Diameter、Depth 以及 Dimension/Through all,校验正尺寸并纳入 Base 链接和 Body.Tip | 圆孔 Profile、有限深度调用、非法直径诊断、Task 属性提交和 Tip 更新测试通过 | 仅为基体原点 XY 面、+Z 法向的直孔;草图圆/面定位、沉孔、锪孔、钻尖、螺纹、尺寸标准和稳定支撑面引用仍待实现,保持 `experimental` | -| TSN-02/05/06/08 TopoRef 基础迁移 | `topologyReferences` 提供 schema v1 创建、序列化、安全解析、解析和跨版本迁移;重复几何候选 ID 唯一,一旧多新不会错误继承;匹配按 kind 隔离并用形状尺度归一化几何评分支持纯平移 | round-trip、瞬时索引拒绝、resolved/ambiguous/deleted、重复拆分和纯平移回归测试通过 | 仍是网格签名启发式;没有 OCCT Generated/Modified/Deleted、邻接/曲率签名、布尔历史和黄金模型规模验证,不得提升为 compatible | -| TSN-08/09 LinkSub 文档接线 | `PropertyValue` 支持 schema v1 TopoRef;重算 generation 自动迁移 LinkSub/草图外部几何,歧义/删除不强绑;schema v6 保存对象拓扑快照;Facade 候选替换事务验证当前同 kind persistentId,重建 DAG 并支持 Undo/Redo;属性/诊断 UI 可替换;Pocket 暴露 `UpToFace` 槽 | 非法瞬时索引/候选拒绝、DAG 边、稳定/歧义/删除迁移、跨 generation 回退解析、候选替换、Undo/Redo、保存加载和 67 项全套测试通过 | 尚未从 3D 拾取、预选或高亮候选;Pocket Up to face executor 仍保持结构化 unsupported,等待原生面历史/解析接线 | -| TSN-03/07 历史适配器回退 | Bitbybit 1.1.1 绑定仅有 `HasGenerated()`,没有逐 Shape 的 Generated/Modified/IsDeleted;`signature-fallback` 已进入真实重算 generation,对每个成功 Shape 保存快照/matches/history,采集失败释放临时 Shape并保留最近有效缓存 | 平移修改、新增/删除/重复面、跨对象竞争、generation 写回、采集失败隔离和持久化测试通过;全套 63 项测试通过 | 此 provider 不是 OCCT history;多输入 Boolean 当前仍缺逐输入原生映射,只有自构建绑定暴露逐子形状历史并通过黄金模型后,才能将 TSN-03/07 标为完成 | +| P3-05 Hole 基础切片 | `hole` 创建 `PartDesign::Hole`,用 32 边圆形 Profile 或圆锥刀具调用现有 OCCT Pocket/Cut;支持 Diameter、DepthType/Depth、Position/Direction、Reversed、Flat/Angled DrillPoint、DrillForDepth、Tapered/TaperedAngle 以及 Dimension/ThroughAll,校验正尺寸并纳入 Base 链接和 Body.Tip | 圆孔 Profile、有限深度调用、位置/方向、90 度基准锥度、包含钻尖总深度、非法直径/方向诊断、Task 属性提交和 Tip 更新测试通过;Counterbore/Countersink/Counterdrill、Angled drill point 和 Tapered 由 Bitbybit 圆柱/圆锥刀具加 Boolean Cut 组合执行,并有 Chrome 非空 mesh 与 0/0 release 证据 | 仍未实现 Threaded/ModelThread、标准尺寸、Support/Profile 面定位和完整局部特征历史;螺纹保持显式 `HOLE_THREADING_UNSUPPORTED`,能力保持 `experimental` | +| TSN-02/05/06/08 TopoRef 基础迁移 | `topologyReferences` 提供 schema v1 创建、序列化、安全解析、解析和跨版本迁移;重复几何通过邻接指纹唯一消歧,一旧多新不会错误继承;匹配按 kind 隔离并用形状尺度归一化几何评分支持纯平移;对象快照附带 schema v1 ElementMap;新增原生 ElementMap2 v1 token AST/schema v2 writer,以及 StringHasher v1 AST/schema v2 codec | round-trip、瞬时索引拒绝、resolved/ambiguous/deleted、重复拆分、邻接唯一/对称回归、FaceN/EdgeN/VertexN 写出和持久化通过;FreeCAD 1.1.1 的 30 模型、91 个 ElementMap2、11 个 StringHasher 表完成解析、写回和引用闭合 | Web 拓扑仍不能凭最终几何生成 FreeCAD 私有算法未提供的历史 token/StringID;对称 Boolean 的同构子形需要原生候选证据才能消歧 | +| TSN-08/09 LinkSub 文档接线 | `PropertyValue` 支持 schema v1 TopoRef;重算 generation 自动迁移 LinkSub/草图外部几何,歧义/删除不强绑;schema v6 保存对象拓扑快照与 ElementMap;Facade 候选替换事务验证当前同 kind persistentId,重建 DAG 并支持 Undo/Redo;属性/诊断 UI 可替换;Three.js 多 Mesh 场景已将对象/OCCT analytic 面边点拾取、预选、完整曲线折线高亮、诊断闪烁和 window/crossing 框选回调 Facade;Pocket 暴露 `UpToFace` 槽;Pocket/Groove/Hole/MultiTransform 及双侧线性/角度特征可携带内部 builder 的 STEP/topology/history stage;ElementMap2 writer 可从 MappedNameRef/StringID 证据生成 FreeCAD 1.1.1 token,FCStd reader/writer 会校验 StringHasher 引用闭包 | 非法瞬时索引/候选拒绝、DAG 边、稳定/歧义/删除迁移、邻接消歧、候选替换、Undo/Redo、保存加载、无三角对角线的 BRep 边拾取、多选集合、真实双对象穿越框、诊断聚焦事件、live ElementMap、Pocket 双侧、Revolution/Groove 双角 Chrome 回放及 30 模型 naming-evidence gate 通过 | 未提供逐阶段 Shape/history 或 MappedNameRef/StringHasher 证据的算法继续保守回退;同构子形无唯一原生证据时不宣称 exact | +| TSN-03/07 历史适配器回退 | Bitbybit 1.1.1 绑定仅有 `HasGenerated()`,没有逐 Shape 的 Generated/Modified/IsDeleted;独立 native provider 已接入普通及双侧 Pad/Pocket/Revolution/Groove 参数路由与既有 Boolean/Pattern/Dress-up 子集;协议新增显式 input/stage、sourceStage/resultStage、一对多 resultIndexes、有序 feature sides 和 rotate stage,可向后兼容旧 object/tool 载荷;stage capture 按各自产生结果解释 index 并以邻接唯一性约束同构候选 | 平移修改、新增/删除/重复面、邻接唯一消歧、跨对象竞争、generation 写回、采集失败隔离、Up-to-face 有效距离、Two sides/Midplane/Two angles 路由通过;Groove 双角按 FreeCAD profile offset + 单 sweep + Cut 得到 native valid 单 solid;30 模型 history/ElementMap2/StringHasher exact gate 与 Facade `182/182` 通过 | provider 仍通过 STEP/BREP 跨 WASM;同构候选和未提供私有 builder/命名证据的算法仍需逐项黄金模型后才能声明 exact | -原生历史 provider 适配器现已进入重算执行器:当 Geometry Worker 暴露 `topologyHistory()` 且 Base/Tool/Profile 有拓扑快照时,Facade 将真实输入/输出 Shape 和记录交给 `captureNativeTopologyHistory()`;否则保守回退。该适配层有独立单测,但当前 Bitbybit 1.1.1 provider 仍未提供真实记录,因此 TSN-03/07 仍不能标记完成。 +原生历史 provider 适配器现已进入重算执行器:当 Geometry Worker 暴露 `topologyHistory()` 且 Base/Tool/Profile 有拓扑快照时,Facade 将真实输入/输出 Shape 和记录交给 `captureNativeTopologyHistoryStages()`,再由 `composeNativeTopologyHistoryLineage()` 把上游对象 stage 接入当前关系;普通 Pad/Pocket/Revolution/Groove、Up-to-face 有效长度以及双侧/Midplane/Two angles 会进入同一参数协议。Pocket、Hole、MultiTransform 和双侧 builder 保存中间 STEP/拓扑/记录;Groove TwoAngles 按 FreeCAD 语义保存 `rotate -> revolution -> cut` 的 BREP/history,并已通过 native BRepCheck Chrome 黄金门。provider 不声明组成 operation 时保留单响应兼容路径。exact 判定仍必须同时拥有逐阶段 Shape/history 与 MappedNameRef/StringHasher 命名证据,任一缺失都不能由最终几何补推。 后续按以下顺序连续开发: 1. `P4-06/DAG-08`:同步/异步重算已共享抑制传播和根因诊断语义,并支持定位、解除错误后的最小闭包重算与合法特征抑制;继续补齐多配置抑制、Body Tip 重定向、最近有效 Shape 显式回滚和性能计数器。Shape 缓存已进入 Facade,但尚未持久化。 -2. `P3-04/P3-05`:Pad/Pocket/Revolution/Fillet/Chamfer 已有 OCCT Worker 输入适配和 Shape 缓存回写,Pocket Through all 已接入;Linear/Polar Pattern 与原点法向直孔已完成实验切片;继续补齐 Up to face、局部特征/拓扑历史及 Hole 高级形态,未完成能力保持 disabled 或 experimental。 +2. `P3-04/P3-05`:Pad/Pocket/Revolution/Fillet/Chamfer 已有 OCCT Worker 输入适配和 Shape 缓存回写;Up-to-face 实际距离、Part 双向 Extrude/Revolution、PartDesign Two sides/旧 TwoLengths 与 Revolution/Groove Midplane/Two angles 已进入原生协议,Groove 双角的 FreeCAD 单 sweep 语义和结构有效性已闭合。继续扩展锥度逐阶段 history、局部 feature-list 重算、螺纹/标准尺寸及稳定 Support;未通过黄金 Shape/history 的能力保持 compatible 或 experimental。 3. `TSN-03/07/08`:TopoRef schema、面/边/点签名、基础迁移和歧义处理已落地;继续补齐 OCCT Generated/Modified/Deleted、邻接/曲率签名、跨布尔历史和数据库属性接线;任何 transient index 不得写入持久引用。 4. `SK-03/SK-06/SK-07`:编译和验证 planegcs WASM,按基础/高级约束建立 FreeCAD 黄金回放;基础 solver 维持 experimental。 5. `P2-04/P2-05/P2-06`:完成保存点恢复报告、迁移回滚、配额回收和 BroadcastChannel 单写者冲突。 @@ -384,3 +384,25 @@ PartDesign Mirrored 已形成 experimental whole-shape 垂直切片:Facade 验 7. `P6-03/P8-02`:把 disabled 原因、重算进度/取消、FCStd 报告和能力矩阵接入 React,并通过目标浏览器回放和视觉基线。 启用规则:`RecomputeExecutionResult.status=completed` 只表示已注册节点成功;FCStd `metadata-compatible` 只表示安全元数据可读;只有 FreeCAD 对照黄金测试、取消/失败/只读、保存/加载和跨浏览器门禁都通过,才能把对象或命令从 `experimental` 提升到 `compatible`,`exact` 还要求锁定版本后的逐项差异为零。 + +### 20. 命名证据与系统级 exact 评估(2026-08-09) + +运行时命名证据必须来自 native provider 的 `MappedNameRef`/`StringHasher` 或逐阶段 builder capture。`NativeStageNamingEvidence` 对缺失证据写出 `final-shape-only`,对只有原始表而没有可重建回调的 FCStd 资源写出 `opaque-preserved`;两者都不能仅凭最终 Shape 生成新 FreeCAD token。跨阶段 ElementMap2 映射保存 `sourceStageId`、来源集合和 `ambiguous` 候选,校验失败直接阻断写回。 + +逐 feature 等级目前由 `config/compatibility-matrix.json` 的 `facadeCapabilities.geometry.featureLevels` 管理:Pad/Pocket/Revolution/Groove/Boolean 为有 native history 子集的 `compatible`,Fillet/Chamfer/MultiTransform 保持 `experimental`。`systemExactEvaluation.exact` 必须在所有 feature 的阶段 Shape/history、私有 token 证据和同构来源都闭合后才允许改为 true;当前值固定为 false,阻断项为私有 FreeCAD token 算法、没有原生 builder stage、以及无唯一同构来源。 + +### 21. 全功能 exact 计划(2026-08-09) + +全功能对标不再沿用已经 `83/83 completed` 的 compatible 发布 WBS 作为完成判据。`config/freecad-web-exact-parity-plan.json` 建立 EX01..EX10、52 项 exact 任务,覆盖 34 模块、15 格式、6 入口,详细依赖和验收见 `docs/freecad-full-parity-execution-wbs.zh-CN.md` 第 20 节。优先顺序为原生 oracle -> kernel/history/naming -> document/property -> Sketcher/Part/PartDesign -> FCStd/formats -> GUI -> 生产/工程/平台工作台 -> 跨浏览器质量 -> exact 签名发布。 + +`check:freecad-web-exact-parity-plan` 与旧 execution-plan gate 一起进入默认 verify。开放任务必须保留 `exactBlockedBy`,完成任务必须具有已登记的可执行 evidence 且不能继续带阻断项;34 模块和 21 个格式/入口必须逐项映射到任务。最终 `EX-REL-01` 只有在所有任务完成、34 模块均为 exact、八项零差异指标成立时才允许关闭。当前状态为 `1/52 completed`,系统仍为 `exact=false`。 + +`check:freecad-web-exact-promotion` 进一步阻止直接编辑 `claim.exact` 或能力矩阵来“提升”版本:在 `exact=false` 状态只输出 fail-closed;只有 `EX-REL-01` 完成并提交结构化 promotion report,报告同时满足 52/52、34/34、八项指标全零和八类证据,才允许 promotion gate 通过。 + +详细实施手册见 `docs/freecad-exact-promotion-runbook.zh-CN.md`,报告结构见 `config/freecad-web-exact-promotion-report.schema.json`。手册按七个阶段规定输入、任务、命令、退出条件和失败回退,防止把规划状态、兼容子集或静态清册当成 exact 证据。 + +### 22. 参数 mutation 与阶段命名证据闭合规则(2026-08-10) + +EX-ORA-02 的 mutation corpus 由 `config/freecad-parameter-mutation-plan.json` 定义为五项独立证据:nominal 参数、非法边界、两个以上显式参数快照、真实编辑-重算-恢复事务,以及无差异 FCStd 往返。`config/freecad-parameter-mutation-report.json` 必须由现有黄金证据生成,`check:freecad-parameter-mutations` 会逐字节重算并拒绝陈旧或手工提升的报告。当前只有 `1/35` family 完整,因此 EX-ORA-02 保持 `in_progress`。 + +30 个复合模型的 219 个文档阶段已通过 FreeCAD 运行时 `getElementMappedName/getElementIndexedName/getElementHistory` 获得直接命名证据,并由两个门禁逐阶段验证。此处的 `native-evidence=219/219` 不等于内部 builder exact:219 个阶段都有 IndexedName,但只有 74 个阶段的全部子形有 MappedName,145 个阶段只有原生索引身份;当前识别出的 42 个操作阶段仍为 `internalBuilderEvidence=0`。没有内部 builder Shape/history 时,最终几何不能用于制造中间 Generated/Modified/Deleted;没有实际 StringHasher/MappedNameRef 时也不能制造私有 token;同构候选没有唯一原生来源时继续持久化为 ambiguous。 diff --git a/docs/freecad-reference-execution-roadmap.zh-CN.md b/docs/freecad-reference-execution-roadmap.zh-CN.md index 8dc6e0a..4d80195 100644 --- a/docs/freecad-reference-execution-roadmap.zh-CN.md +++ b/docs/freecad-reference-execution-roadmap.zh-CN.md @@ -18,28 +18,38 @@ | 批次 | 任务范围 | 主要交付物 | 退出门禁 | |---|---|---|---| -| R0 参考环境 | `BASE-01..04`、`INV-01..06` | 完整桌面 oracle 构建清单;34 模块、命令、TypeId、Property、格式和错误清册 | 锁定提交可重建;清册无未登记入口 | -| R1 几何内核 | `BYB-03..08`、`TSN-03..10` | 可复现 Bitbybit/OCCT 构建;浏览器原生历史;Shape 生命周期;三方黄金差分 | Boolean/PartDesign 历史无静默错绑;长会话无泄漏 | +| R0 参考环境 | `ORA-01..02`、`INV-01..04`、`BASE-03..04` | 完整桌面 oracle 构建清单;34 模块、命令、TypeId、Property、格式和错误清册 | 锁定提交可重建;清册无未登记入口 | +| R1 几何内核 | `BYB-03`、`BYB-05..08`、`BROWSER-OCCT-01`、`MEM-OCCT-01`、`TSN-03..10` | 可复现 Bitbybit/OCCT 构建;浏览器原生历史;Shape 生命周期;三方黄金差分 | Boolean/PartDesign 历史无静默错绑;长会话无泄漏 | | R2 Sketcher | `SK-03..12` | planegcs WASM;完整几何/约束/DOF/冲突;外部几何;编辑回放 | FreeCAD 草图成功/失败/冗余行为黄金通过 | -| R3 参数化核心 | `CORE-01..12`、`PART-*`、`PD-*` | Document/Property/DAG/Body/Tip/Support;Part 与 PartDesign 全特征 | 编辑→重算→Undo→保存→加载闭环通过 | -| R4 文件互操作 | `FC-04..11`、`PKG-*` | Document/GuiDocument、BRep/Shape、Expression/Link/TopoRef、未知字段保留 | FreeCAD→Web→FreeCAD 双向差异可解释且无静默丢失 | -| R5 核心工作台 | `TD-*`、`SS-*`、`DRAFT-*`、`PLOT-*` | TechDraw、Spreadsheet、Draft、Plot 的对象、命令、任务和格式 | 每命令至少成功/失败/round-trip fixture | -| R6 工程工作台 | `ASM-*`、`BIM-*`、`MESH-*`、`SURF-*` | 装配、BIM、网格、曲面全链路 | 求解/几何/IFC/网格黄金和大模型预算通过 | -| R7 分析制造 | `FEM-*`、`CAM-*`、`ROBOT-*`、`INSP-*` | 求解器/后处理/刀路/仿真/检测报告 | 求解或明确远端能力;G-code/结果文件黄金通过 | -| R8 平台长尾 | `PTS-*`、`RE-*`、`OSC-*`、`IDF-*`、`JT-*`、`MAT-*`、`APP-*`、`SCRIPT-*` | 数据模块、插件、宏/API、桌面通用能力的实现或显式代理 | 无未分类入口;安全和权限模型通过 | -| R9 发布 | `QA-*`、`REL-*`、F0-F9/G0-G9 | 跨浏览器、性能、故障注入、安全、SBOM、迁移和发布 runbook | 所有阻断项关闭后才允许声明完整对标 | +| R3 参数化核心 | `CORE-09..11`、`PART-ALL`、`PD-BASE`、`PD-LOFT`、`PD-DRESSUP`、`PD-TRANSFORM`、`PD-CLOSURE` | Document/Property/DAG/Body/Tip/Support;Part 与 PartDesign 全特征 | 编辑→重算→Undo→保存→加载闭环通过 | +| R4 文件互操作 | `FC-04..11` | Document/GuiDocument、BRep/Shape、Expression/Link/TopoRef、未知字段保留 | FreeCAD→Web→FreeCAD 双向差异可解释且无静默丢失 | +| R5 核心工作台 | `TD-ALL`、`SS-ALL`、`DRAFT-BASE`、`DRAFT-OPS`、`PLOT-ALL`、`DOC-CLOSURE` | TechDraw、Spreadsheet、Draft、Plot 的对象、命令、任务和格式 | 每命令至少成功/失败/round-trip fixture | +| R6 工程工作台 | `ASM-CORE`、`ASM-TOOLS`、`BIM-CORE`、`BIM-IFC`、`MESH-CORE`、`SURF-CORE`、`ENG-CLOSURE` | 装配、BIM、网格、曲面全链路 | 求解/几何/IFC/网格黄金和大模型预算通过 | +| R7 分析制造 | `FEM-ALL`、`CAM-ALL`、`ROBOT-ALL`、`INSP-ALL` | 求解器/后处理/刀路/仿真/检测报告 | 求解或明确远端能力;G-code/结果文件黄金通过 | +| R8 平台长尾 | `DATA-ALL`、`ADDON-ALL`、`SCRIPT-ALL`、`PLATFORM-CLOSURE` | 数据模块、插件、宏/API、桌面通用能力的实现或显式代理 | 无未分类入口;安全和权限模型通过 | +| R9 发布 | `QA-01..08`、`REL-01..04` | 跨浏览器、性能、故障注入、安全、SBOM、迁移和发布 runbook | G0-G9 和所有阻断项关闭后才允许声明完整对标 | -## 3. 当前立即执行队列 +## 3. 当前执行波次 -1. `ORA-01`:建立完整 FreeCAD 1.1.1 桌面/工作台 oracle 构建配置;探针必须区分编译缺失、导入失败和 GUI-only。 -2. `INV-02`:从 O1/O2 生成模块→命令→对象→属性→格式清册,并与 Web manifest 做机器差分。 -3. `BYB-06/07`:在真实浏览器实例化原生历史 Worker,执行 Bitbybit STEP→原生 OCCT→FreeCAD 三方 Boolean 黄金和内存释放测试。 -4. `TSN-04/07/10`:补曲面/曲线/邻接签名,扩展 Boolean、Pattern 和 PartDesign 的逐输入历史,建立参数变异套件。 -5. `SK-03/06/07`:编译 planegcs WASM,按 FreeCAD 草图约束分类逐组替换基础 TypeScript solver。 -6. `CORE-09..12`、`PD-*`:完成 Support/AttachmentOffset、Body 单实体、Tip 重定向、局部特征和编辑历史。 -7. `FC-04..10`:在现有安全 ZIP 和属性投影上增加 GuiDocument、BRep/Shape、Expression/Link/TopoRef 与未知 XML/资源保留。 -8. 按 R5→R8 顺序逐工作台交付,禁止只启用 UI 或把未实现命令标记为成功。 -9. 每个增量持续执行 R9 门禁;能力等级只能依据本机 FreeCAD 黄金证据提升。 +当前只将下表的 Wave A 作为立即开工集。Wave B/C 可先准备 fixture 和合同,但不能在前置门未通过时声称验收。 + +| 波次 | 任务 | 可并行工作 | 退出条件 | +|---|---|---|---| +| Wave A:解锁参考与浏览器内核 | `ORA-01`→`ORA-02`;`BYB-03`→`BYB-05`→`BROWSER-OCCT-01`,`BYB-06` 在 `BYB-05` 后并行 | 源码清册生成器、Worker 故障注入 harness、内存 telemetry 合同 | O2 可探针;Chrome 能加载原生 Worker,取消与崩溃可恢复 | +| Wave B:建立可比较证据 | `INV-01..04`→`BASE-03`→`BASE-04`;`BROWSER-OCCT-01`→`BYB-07`→`MEM-OCCT-01/BYB-08` | 成功/失败 fixture 生产可按工作台分片 | 34 模块入口无漏项;Fuse/Cut/Common 三方差异可解释;1000 次压测达到内存预算 | +| Wave C:关闭稳定拓扑 | `BYB-07`→`TSN-03/04`→`TSN-05/06`→`TSN-07/08/09`→`TSN-10` | `SK-03` planegcs 最小源图和 WASM POC | 100 模型/1000 参数变异无静默错绑;歧义和删除均可诊断 | +| Wave D:Sketcher 与参数化核心 | `SK-03..12`→`CORE-09..11`→`PART-ALL/PD-*` | `FC-04/07` 的未知数据保留可与核心对象映射并行 | 草图诊断与 FreeCAD 一致;Part/PartDesign 七步闭环通过 | +| Wave E:文件与工作台 | `FC-04..11`→P07→P08→P09 | P07/P08 在 G4/G5 后并行,BIM 共享合同等待 Draft/Spreadsheet | FCStd 双向无静默丢失;每工作台创建、编辑、重算、撤销、保存、加载、导出通过 | + +P10 不是最后才启动的波次:`QA-01/02/07` 从 Wave A 开始横切执行,其余 QA/REL 项在对应产物可用后立即纳入持续门禁。 + +### Wave A 首批交付顺序 + +1. 完成 GUI/34 工作台 CMake profile,锁定依赖、构建参数、产物 hash 和重建命令。 +2. 用 O2 实测模块导入、Gui 命令注册、选择前置和 Task 创建,不将静态候选提升为运行时能力。 +3. 完成 Bitbybit/OCCT 绑定的可复现构建和 Worker 版本握手,对请求实施取消、超时、stale generation 隔离和崩溃后重建。 +4. 在 Chrome 中实例化 JS/WASM Worker,记录 COOP/COEP、OPFS、CSP、产物 hash、启动时间和失败诊断。 +5. 将 Worker 句柄账本与 JS heap、WASM memory 和 GPU 资源指标对齐,为 Wave B 的 1000 次 Boolean 门禁准备可量化基线。 ## 4. 单项完成定义 @@ -49,7 +59,7 @@ 2. Facade 合同、取消、过期结果、Undo/Redo 和诊断均有测试。 3. 几何/求解结果在声明公差内,拓扑引用不使用瞬时索引。 4. 保存、加载、版本迁移和相关格式 round-trip 无静默丢失。 -5. Chrome、Firefox、Safari 目标版本的 Worker/OPFS/交互证据通过。 +5. Chrome 目标版本的 Worker/OPFS/交互证据通过;其他浏览器测试延期至全部任务完成并收到明确通知。 6. 内存、性能、安全、许可证和能力矩阵已更新。 `compatible` 允许已记录且可解释的浏览器差异;`exact` 要求锁定版本的声明语义无差异。无法在浏览器安全实现的桌面能力必须标为受限代理,不能隐藏。 @@ -66,3 +76,5 @@ jq empty config/compatibility-matrix.json ``` O2 完整桌面 oracle 建立后,所有相关探针和黄金命令必须显式设置 `FREECAD_CMD`,防止回退到仅含 Part 的缓存构建。 + +详细责任 lane、83 个任务、交付物、验收和交接合同见 [FreeCAD 1.1.1 全功能对标执行 WBS](freecad-full-parity-execution-wbs.zh-CN.md);机器可读任务真值为 `config/freecad-execution-plan.json`。 diff --git a/docs/release-runbook.zh-CN.md b/docs/release-runbook.zh-CN.md new file mode 100644 index 0000000..c7d39ef --- /dev/null +++ b/docs/release-runbook.zh-CN.md @@ -0,0 +1,20 @@ +# BitBybit CAD Studio 发布 Runbook + +基线:FreeCAD `1.1.1`(提交 `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`),Chrome `150`,COOP/COEP 隔离上下文,sqlite-opfs 持久化。 + +## 发布前 + +1. 使用锁定 Node/npm 环境运行 `./npmw run verify`。 +2. 确认 `./npmw run check:release-closure` 输出 G0-G9 全部通过。 +3. 受控本地发布使用 `.secrets/release-signing-private.pem`(权限 `600`,已被 Git 忽略)和默认 key id `bitbybit-local-release-2026`;先执行 `./npmw run check:release-signing-key`,再执行 `./npmw run build && ./npmw run generate:release-artifacts`。CI/发布机也可注入 `RELEASE_SIGNING_PRIVATE_KEY`、`RELEASE_SIGNING_KEY_ID`,入口会校验其 Ed25519 类型及与仓库公钥的一致性。 +4. 只发布 `dist/`、`config/sbom.cdx.json`、`config/release-artifacts.json` 和对应公钥;私钥不得进入仓库或静态资源。密钥轮换必须同时更新受控私钥和 `config/release-signing-public.pem`,然后重新生成清单。 + +## 部署 + +保持 `Cross-Origin-Opener-Policy: same-origin`、`Cross-Origin-Embedder-Policy: require-corp`、`Cross-Origin-Resource-Policy: same-origin`、`Permissions-Policy` 和 CSP。Service Worker cache 名称由构建产物固定为 `bitbybit-cad-shell-v1`;哈希资源和 OCCT/SQLite WASM 必须存在于 precache。 + +## 升级、回滚与诊断 + +先保留旧 cache 和旧发布清单,再切换新版本。首装/升级/离线/缓存清理使用 `./npmw run test:chrome-offline` 复核;项目 schema 迁移与整事务回滚使用 `./npmw run check:project-migration` 和 `./npmw run check:chrome-opfs-migration`。若签名或 SBOM 校验失败,停止切换并回滚至上一份已签名清单;不得以 unsigned-development 产物替代。 + +出现 Worker/WASM 崩溃或 stale 结果时运行 `./npmw run check:chrome-fault-injection`,确认恢复状态和资源计数;出现格式/权限问题时运行 `./npmw run check:chrome-security`。浏览器不满足隔离或 OPFS 能力时显示明确降级/导出路径,不伪装为完整兼容。 diff --git a/docs/web-cad-implementation-plan.zh-CN.md b/docs/web-cad-implementation-plan.zh-CN.md index b10d308..25d4b26 100644 --- a/docs/web-cad-implementation-plan.zh-CN.md +++ b/docs/web-cad-implementation-plan.zh-CN.md @@ -805,7 +805,7 @@ UI 兼容验收分三类: ### 7.4 浏览器支持 -首发验证 Chrome/Edge、Firefox、Safari 的最新两个稳定大版本;明确 WebAssembly、WebGL2、Worker、OPFS 和 File System Access API 的支持差异。Safari 的 OPFS VFS 兼容性必须以实际版本测试为准,不能仅依赖能力探测。 +首发仅验证 Chrome 的最新两个稳定大版本;明确 WebAssembly、WebGL2、Worker、OPFS 和 File System Access API 的支持差异。其他浏览器测试延期至全部任务完成并收到明确通知。 ## 8. 文件格式与互操作 @@ -1296,7 +1296,7 @@ SQLite 是运行时的主存储,不要求项目包直接暴露数据库内部 | BitBybit/OCCT WASM 体积和重计算速度不足 | 高 | Worker、按需加载、缓存、简化显示;设置模型规模上限和服务器后备路线 | | Sketch 求解器移植成本超预期 | 极高 | 把求解器列为独立 POC;先支持受限约束集,保留服务化替换接口 | | OCCT 拓扑命名导致链接丢失 | 高 | 自建稳定引用、特征映射、几何相似回退和明确的失效提示 | -| OPFS/Safari/多标签页差异 | 高 | 启动能力探测;单写者;备份和降级;跨浏览器回归 | +| OPFS/多标签页/目标浏览器差异 | 高 | 启动能力探测;单写者;备份和降级;Chrome 回归 | | WASM/SharedArrayBuffer 受安全响应头限制 | 中 | 首发不强依赖线程化;部署模板统一 COOP/COEP;检查第三方资源 | | FCStd 兼容范围失控 | 高 | A/B/C 分档;不支持对象代理化;每个版本维护样例和差异报告 | | 许可证和静态链接边界不清 | 高 | 在 POC 阶段完成 SBOM、NOTICE、动态/静态链接审查和法律确认 | @@ -1349,7 +1349,7 @@ SQLite 是运行时的主存储,不要求项目包直接暴露数据库内部 5. BitBybit Viewport API 使用内部 Three.js 显示结果并支持面选择。 6. BitBybit Project API 使用内部 SQLite WASM + OPFS 保存参数树和 Shape 缓存。 7. 刷新后恢复项目,导出 STEP 和 `*.webcad`。 -8. 一组桌面 FreeCAD 对照模型、UI/业务差分、Facade-only 依赖检查和 Chrome/Firefox/Safari 烟测通过。 +8. 一组桌面 FreeCAD 对照模型、UI/业务差分、Facade-only 依赖检查和 Chrome 烟测通过。 这个垂直切片通过后,再扩大特征数量、文件兼容范围和协作能力。若其中任一关键路径无法满足性能或兼容性预算,应在此里程碑处重新选择“浏览器本地优先、服务器几何后备”或“缩小 FreeCAD 业务范围”,而不是继续堆叠 UI 功能。 @@ -1595,7 +1595,7 @@ P0 基线/治理 | P1-06 Facade-only 依赖守卫 | `DONE` | `scripts/check-facade-boundary.mjs`,禁止 UI 绕过入口导入 Three.js/SQLite/OPFS/Worker | | P4-01/P4-04 Document/Object 与事务最小切片 | `IN PROGRESS` | Pad/Pocket/Fillet/Chamfer 等已通过 Task 确认追加到 Body;新增 Part Design 特征会原子更新 Body.Tip,并按 Sketch/实体来源写入 Profile/Base;Feature 支持可持久化抑制、下游跳过、Shape 释放和解除后的最小闭包重算;文档版本、dirty、Undo/Redo、异步重算 generation 和过期结果拒绝已接通;真实 Shape 事务、完整容器/Tip 重定向规则和原子崩溃恢复仍待实现 | | P4-06 诊断树与修复动作 | `PASS (基础闭环)` | 同步/异步重算错误生成带文档版本、generation、根因对象和依赖路径的结构化诊断;Facade 提供诊断树以及定位对象、合并当前 dirty 集后重算根因闭包、合法特征抑制动作;循环不会错误提供抑制修复;Diagnostics 页面通过 Facade 投影并执行动作;最近有效 Shape 显式回滚、复杂修复建议和性能计数器仍待实现 | -| P4-02 Property/Link/Unit | `IN PROGRESS` | DocumentObject 已携带 Data/View 类型化属性元数据;编辑经过 Facade 校验、版本、dirty、Undo/Redo、autosave 和 SQLite;基础表达式/单位/Link DAG 已落地;`App::PropertyLinkSub` 使用版本化 TopoRef,生成 `topo-ref` DAG 边并可保存加载。3D 子形状拾取、重算迁移写回、locale 和多选 mixed 仍待实现 | +| P4-02 Property/Link/Unit | `IN PROGRESS` | DocumentObject 已携带 Data/View 类型化属性元数据;编辑经过 Facade 校验、版本、dirty、Undo/Redo、autosave 和 SQLite;基础表达式/单位/Link DAG 已落地;`App::PropertyLinkSub` 使用版本化 TopoRef,生成 `topo-ref` DAG 边并可保存加载。3D 多 Mesh 对象/OCCT analytic 面边点拾取、预选、整条 BRep Edge 折线高亮、诊断闪烁和 window/crossing 空间框选已接入 Three.js/Facade;模型树修饰键增删与 Visibility/Space 投影已落地;完整原生操作历史迁移写回、locale 和属性 mixed 仍待实现 | | P2-01/P2-02 SQLite schema 与 Persistence Worker | `PASS (领域/压力门禁)` | schema v6 在 v5 checkpoints 基础上新增 `objects.topology_json`,保存 generation 拓扑快照;统一 migration runner 在一个事务中排序、跳过已应用版本并在失败时 rollback;`PersistenceWriteQueue` 的 1000 次写入压力覆盖严格顺序、最大并发 1 和 8 次失败后的继续执行。实际 SQLite v4→v5→v6 浏览器升级演练仍须进入 E2E/发布矩阵 | | P2-03 OPFS 资源管理 | `IN PROGRESS` | Worker 提供 SHA-256 内容寻址、引用计数、读取/释放;新增 5% 配额预留、重复内容免重写、缺失文件重建,以及数据库记录/OPFS 文件对账清扫报告。配额与清扫策略单测和生产构建通过;真实 OPFS 孤儿文件、QuotaExceeded 和大资源浏览器压力仍待验证 | | Worker memory resource fallback | `PASS` | Worker 在 SQLite WASM 无 OPFS 时使用 transient content-addressed resource map,保持 `put/get/release` 引用计数语义;不再把资源 API 错误地绑定到 OPFS | @@ -1604,7 +1604,7 @@ P0 基线/治理 | P2-05 多标签页写入协调 | `DONE (降级可观测)` | `SqliteProjectPersistence` 在保存和资源写入外包 `navigator.locks` 独占锁,成功保存通过 `BroadcastChannel` 广播文档版本,Facade 暴露 `project.subscribeExternalChanges()`;无 Web Locks 的运行时能力标记为 `local-queue`,不宣称跨标签页互斥 | | P5-01 Three.js 视口适配器 | `IN PROGRESS` | `src/facade/threeViewport.ts` 使用 `three@0.185.1`,已挂载 WebGL2 场景和资源释放;React 视口通过 Facade OCCT 预览链生成 Pad/Pocket Mesh | | P3-01 Bitbybit OCCT WASM 运行时 | `IN PROGRESS` | 精确锁定 `@bitbybit-dev/occt-worker@1.1.1`,专用 Worker 可加载 34,524,750 字节 OCCT WASM;尚未建立 FreeCAD/OCCT 自构建脚本,不能标记完成 | -| P3-02 几何句柄与网格协议 | `IN PROGRESS` | Facade 已定义并实现受控 `ShapeHandle`、`MeshAsset`、`SubshapeRef` 类型;成功 generation 写入对象拓扑快照、迁移 matches 和保守历史;重算自动迁移 LinkSub/外部几何,歧义/删除保持显式状态和诊断;候选替换事务只接受源对象最新同 kind persistentId,属性/诊断 UI 可提交并支持 Undo/Redo。OCCT 原生历史、邻接/曲率签名、跨 Boolean 映射和 3D 候选高亮仍未实现 | +| P3-02 几何句柄与网格协议 | `IN PROGRESS` | Facade 已定义并实现受控 `ShapeHandle`、`MeshAsset`、`SubshapeRef` 与带对象 ID 的 `ViewportMeshAsset`;成功 generation 写入对象拓扑快照、迁移 matches 和保守历史;重算自动迁移 LinkSub/外部几何,歧义/删除保持显式状态和诊断;候选替换事务只接受源对象最新同 kind persistentId,属性/诊断 UI 可提交并支持 Undo/Redo;多对象视口注册及 OCCT `edgeList`/BRepGraph vertex 拾取已由 Chrome 双实体场景证明。插件失败时保留网格回退,但完整 OCCT 操作历史和跨 Boolean 映射仍未实现 | | P3-03 基本体和变换 | `IN PROGRESS` | 真实 OCCT Box/Cylinder/Sphere/Cone 和浏览器矩阵已验证基础 Placement;Facade 重算 executor 现在对对象 Placement 做严格结构校验,在 Shape 生成后执行平移/轴角旋转,恒等变换跳过额外句柄,失败时释放临时 Shape 并保留最近有效缓存;Node/fallback 已覆盖失败释放、畸形输入和保存恢复。0.05 mm 网格精度下曲面包围盒最大离散误差约 0.023 mm,自动化浏览器黄金/体积测试尚未进入 CI | | P3-04 Boolean/Pad/Pocket/Revolution | `IN PROGRESS` | 文档作用域 Union/Cut/Intersection 与 PlanarProfile 驱动的 Pad/Pocket/Revolution 已通过真实 OCCT 浏览器矩阵;重算 executor 已在 Worker ready 时执行 Pad/Pocket/Revolution,Revolution Angle/Reversed 已接入,Fillet/Chamfer 也有 Shape 缓存回写;Up to face、FCStd Shape 持久化仍待完成 | | P3-05 Fillet/Chamfer/Mirrored/MultiTransform/Pattern/Hole | `IN PROGRESS` | Fillet/Chamfer 已接入 Shape 缓存;Mirrored 使用 OCCT plane-normal mirror;MultiTransform 组合结构化 Linear/Polar/Mirrored 步骤并限制最多 100 实例;Linear/Polar Pattern 已贯通 Placement/union;基础 Hole 支持 Diameter、Depth、Dimension/Through all。变换类当前操作整 Shape,Hole 固定原点法向;局部特征历史、Datum/TopoRef 平面、连接单实体过滤及完整孔语义仍待实现 | @@ -1644,7 +1644,7 @@ P0 基线/治理 | Three 网格消费 | `PASS` | `MeshAsset` 转为 Three `BufferGeometry`,旧 geometry 在替换/销毁时释放;选择变化不再重建场景 | | 生产构建 | `PASS` | Vite 输出独立 `geometryWorker` 与 OCCT WASM;WASM 约 34.5 MB,gzip 约 8.6 MB | -限制和下一任务:P3-02 还需设计稳定 `SubshapeRef` 的持久命名算法;P3-03 需要把已通过的浏览器黄金包围盒矩阵纳入 CI,并补充体积核验;P5-02 需要按文档对象 ID 建立多对象网格缓存,而不是仅加载一个启动预览实体。 +限制和下一任务:P3-02 还需继续完善边/点级稳定 `SubshapeRef` 的持久命名算法;P3-03 需要把已通过的浏览器黄金包围盒矩阵纳入 CI,并补充体积核验;P5-02 已按文档对象 ID 建立多对象视口注册,但仍需做跨重算的 BufferGeometry 增量复用和大场景缓存淘汰。 ### 16.12 P3-03 基本体与 Placement 验证记录 @@ -1729,7 +1729,7 @@ DocumentSnapshot 现在区分模型树投影与 `DocumentObjectSnapshot` 真值 | OCCT Fillet/Chamfer | `PASS` | Facade 调用 Bitbybit `filletEdges`/`chamferEdges`,半径/距离和边索引在边界校验;真实稳定 TopoRef 选边仍待 TSN | | STEP/STL 几何导出 | `PASS` | Facade 通过 Bitbybit IO Worker 导出 STEP 和 ASCII STL;FCStd 参数化文档读写仍未完成 | -尚未完成的 TSN 工作:OCCT `Generated/Modified/Deleted` 历史捕获、跨布尔/特征的真实拓扑映射、面/边/顶点统一命名、附着和 `TopoRef` 文件迁移。当前签名是可审计的基础候选层,不能单独宣称 FreeCAD 稳定拓扑命名已完成。 +TSN 当前已接入普通单向 Pad/Pocket/Revolution/Groove 的 OCCT `Generated/Modified/Deleted` 历史、邻接指纹消歧、对象级 `FaceN/EdgeN/VertexN` ElementMap 和 FCStd live map 写出;仍未完成的是复合/多阶段跨 Boolean lineage、完整 ElementMap2 历史 token 迁移、所有对称模型的 exact 命名以及完整附着迁移。签名与邻接仍是无法由原生关系证明时的可审计 fallback,不能把 fallback 单独宣称为 FreeCAD 稳定拓扑命名。 Sketcher 当前边界:领域模型可往返保存点、线、圆、弧、椭圆和 B-spline(次数、控制点、权重、节点、周期标志);基础适配器只对前四类及 Coincident/Horizontal/Vertical/Distance/Radius/Diameter/Angle/Equal/Symmetric/Tangent/Block 做确定性约束处理,对椭圆/B-spline 返回明确 unsupported 诊断。SK-04 已增加版本化 provider 协议、能力探测、取消/过期结果隔离和回放合同。仓库没有 FreeCAD 源码或 planegcs WASM 产物,因此对应 provider 明确返回 unavailable;完整 FreeCAD `planegcs` 数值求解、冗余约束分类、B-spline 求解、外部几何、自动约束和拖拽交互仍需 SK-03、SK-07、SK-09、SK-10 的 WASM/浏览器回放门禁。 diff --git a/fixtures/chrome-app-e2e/cam-workbench.png b/fixtures/chrome-app-e2e/cam-workbench.png new file mode 100644 index 0000000..1e3c04c Binary files /dev/null and b/fixtures/chrome-app-e2e/cam-workbench.png differ diff --git a/fixtures/chrome-app-e2e/desktop-workspace.png b/fixtures/chrome-app-e2e/desktop-workspace.png new file mode 100644 index 0000000..f858689 Binary files /dev/null and b/fixtures/chrome-app-e2e/desktop-workspace.png differ diff --git a/fixtures/chrome-app-e2e/mobile-start.png b/fixtures/chrome-app-e2e/mobile-start.png new file mode 100644 index 0000000..64f34c1 Binary files /dev/null and b/fixtures/chrome-app-e2e/mobile-start.png differ diff --git a/fixtures/freecad-golden/failures/invalid-boolean-001.json b/fixtures/freecad-golden/failures/invalid-boolean-001.json new file mode 100644 index 0000000..e3fad90 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-boolean-001.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "id": "invalid-boolean-001", + "category": "Part", + "description": "Boolean operand rejection", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + }, + "tool": { + "type": "unknown" + } + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-boolean-002.json b/fixtures/freecad-golden/failures/invalid-boolean-002.json new file mode 100644 index 0000000..131d60d --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-boolean-002.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "id": "invalid-boolean-002", + "category": "Part", + "description": "Boolean operand rejection", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + }, + "tool": { + "type": "unknown" + } + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-boolean-003.json b/fixtures/freecad-golden/failures/invalid-boolean-003.json new file mode 100644 index 0000000..1bf5f3d --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-boolean-003.json @@ -0,0 +1,16 @@ +{ + "schemaVersion": 1, + "id": "invalid-boolean-003", + "category": "Part", + "description": "Boolean operand rejection", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + } + }, + "expectedError": "operation" +} diff --git a/fixtures/freecad-golden/failures/invalid-boolean-004.json b/fixtures/freecad-golden/failures/invalid-boolean-004.json new file mode 100644 index 0000000..5445879 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-boolean-004.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "id": "invalid-boolean-004", + "category": "Part", + "description": "Boolean operand rejection", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + }, + "tool": { + "type": "unknown" + } + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-boolean-005.json b/fixtures/freecad-golden/failures/invalid-boolean-005.json new file mode 100644 index 0000000..fff662c --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-boolean-005.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "id": "invalid-boolean-005", + "category": "Part", + "description": "Boolean operand rejection", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + }, + "tool": { + "type": "unknown" + } + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-boolean-006.json b/fixtures/freecad-golden/failures/invalid-boolean-006.json new file mode 100644 index 0000000..8555cf8 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-boolean-006.json @@ -0,0 +1,16 @@ +{ + "schemaVersion": 1, + "id": "invalid-boolean-006", + "category": "Part", + "description": "Boolean operand rejection", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + } + }, + "expectedError": "operation" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-001.json b/fixtures/freecad-golden/failures/invalid-box-001.json new file mode 100644 index 0000000..bc9e6ba --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-001.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-001", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": 0, + "width": 3, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-002.json b/fixtures/freecad-golden/failures/invalid-box-002.json new file mode 100644 index 0000000..d26603e --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-002.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-002", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": -2, + "width": 4, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-003.json b/fixtures/freecad-golden/failures/invalid-box-003.json new file mode 100644 index 0000000..b87b566 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-003.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-003", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": 0, + "width": 5, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-004.json b/fixtures/freecad-golden/failures/invalid-box-004.json new file mode 100644 index 0000000..1eb5216 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-004.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-004", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": -4, + "width": 6, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-005.json b/fixtures/freecad-golden/failures/invalid-box-005.json new file mode 100644 index 0000000..ecad7d8 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-005.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-005", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": 0, + "width": 7, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-006.json b/fixtures/freecad-golden/failures/invalid-box-006.json new file mode 100644 index 0000000..9f698d9 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-006.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-006", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": -6, + "width": 8, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-007.json b/fixtures/freecad-golden/failures/invalid-box-007.json new file mode 100644 index 0000000..bba25b6 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-007.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-007", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": 0, + "width": 9, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-008.json b/fixtures/freecad-golden/failures/invalid-box-008.json new file mode 100644 index 0000000..2f900cf --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-008.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-008", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": -8, + "width": 10, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-009.json b/fixtures/freecad-golden/failures/invalid-box-009.json new file mode 100644 index 0000000..d5f8606 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-009.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-009", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": 0, + "width": 11, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-010.json b/fixtures/freecad-golden/failures/invalid-box-010.json new file mode 100644 index 0000000..cac86c5 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-010.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-010", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": -10, + "width": 12, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-011.json b/fixtures/freecad-golden/failures/invalid-box-011.json new file mode 100644 index 0000000..dceaca6 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-011.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-011", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": 0, + "width": 13, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-box-012.json b/fixtures/freecad-golden/failures/invalid-box-012.json new file mode 100644 index 0000000..4133983 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-box-012.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-box-012", + "category": "Part", + "description": "Box dimension rejection", + "operation": { + "type": "box", + "length": -12, + "width": 14, + "height": 3 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-common-001.json b/fixtures/freecad-golden/failures/invalid-common-001.json new file mode 100644 index 0000000..bc0af04 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-common-001.json @@ -0,0 +1,16 @@ +{ + "schemaVersion": 1, + "id": "invalid-common-001", + "category": "Part", + "description": "Common operand rejection", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 1, + "width": 1, + "height": 1 + } + }, + "expectedError": "operation" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-001.json b/fixtures/freecad-golden/failures/invalid-cone-001.json new file mode 100644 index 0000000..56277a7 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-001.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-001", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": -1, + "radius2": 0, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-002.json b/fixtures/freecad-golden/failures/invalid-cone-002.json new file mode 100644 index 0000000..be62df6 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-002.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-002", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": 0, + "radius2": -1, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-003.json b/fixtures/freecad-golden/failures/invalid-cone-003.json new file mode 100644 index 0000000..3d07e27 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-003.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-003", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": -1, + "radius2": 0, + "height": 0, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-004.json b/fixtures/freecad-golden/failures/invalid-cone-004.json new file mode 100644 index 0000000..41e3cdf --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-004.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-004", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": 0, + "radius2": -1, + "height": 5, + "angle": 361 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-005.json b/fixtures/freecad-golden/failures/invalid-cone-005.json new file mode 100644 index 0000000..9eaac17 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-005.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-005", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": -1, + "radius2": 0, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-006.json b/fixtures/freecad-golden/failures/invalid-cone-006.json new file mode 100644 index 0000000..def4800 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-006.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-006", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": 0, + "radius2": -1, + "height": 0, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-007.json b/fixtures/freecad-golden/failures/invalid-cone-007.json new file mode 100644 index 0000000..89431c1 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-007.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-007", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": -1, + "radius2": 0, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cone-008.json b/fixtures/freecad-golden/failures/invalid-cone-008.json new file mode 100644 index 0000000..0188b93 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cone-008.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "id": "invalid-cone-008", + "category": "Part", + "description": "Cone parameter rejection", + "operation": { + "type": "cone", + "radius1": 0, + "radius2": -1, + "height": 5, + "angle": 361 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-001.json b/fixtures/freecad-golden/failures/invalid-cylinder-001.json new file mode 100644 index 0000000..a4ade0b --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-001.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-001", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": 0, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-002.json b/fixtures/freecad-golden/failures/invalid-cylinder-002.json new file mode 100644 index 0000000..fccea1c --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-002.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-002", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": -2, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-003.json b/fixtures/freecad-golden/failures/invalid-cylinder-003.json new file mode 100644 index 0000000..8553668 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-003.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-003", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": 0, + "height": 0, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-004.json b/fixtures/freecad-golden/failures/invalid-cylinder-004.json new file mode 100644 index 0000000..c7b006b --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-004.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-004", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": -4, + "height": 5, + "angle": 361 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-005.json b/fixtures/freecad-golden/failures/invalid-cylinder-005.json new file mode 100644 index 0000000..54b27a1 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-005.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-005", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": 0, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-006.json b/fixtures/freecad-golden/failures/invalid-cylinder-006.json new file mode 100644 index 0000000..2e77aed --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-006.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-006", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": -6, + "height": 0, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-007.json b/fixtures/freecad-golden/failures/invalid-cylinder-007.json new file mode 100644 index 0000000..387f241 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-007.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-007", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": 0, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-008.json b/fixtures/freecad-golden/failures/invalid-cylinder-008.json new file mode 100644 index 0000000..b691ed8 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-008.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-008", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": -8, + "height": 5, + "angle": 361 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-009.json b/fixtures/freecad-golden/failures/invalid-cylinder-009.json new file mode 100644 index 0000000..d620f50 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-009.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-009", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": 0, + "height": 0, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-cylinder-010.json b/fixtures/freecad-golden/failures/invalid-cylinder-010.json new file mode 100644 index 0000000..82c2923 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-cylinder-010.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "invalid-cylinder-010", + "category": "Part", + "description": "Cylinder parameter rejection", + "operation": { + "type": "cylinder", + "radius": -10, + "height": 5, + "angle": 360 + }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/failures/invalid-operation-001.json b/fixtures/freecad-golden/failures/invalid-operation-001.json new file mode 100644 index 0000000..487d60d --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-operation-001.json @@ -0,0 +1,10 @@ +{ + "schemaVersion": 1, + "id": "invalid-operation-001", + "category": "Part", + "description": "Unknown operation rejection", + "operation": { + "type": "unsupported-1" + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-operation-002.json b/fixtures/freecad-golden/failures/invalid-operation-002.json new file mode 100644 index 0000000..86c5b2b --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-operation-002.json @@ -0,0 +1,10 @@ +{ + "schemaVersion": 1, + "id": "invalid-operation-002", + "category": "Part", + "description": "Unknown operation rejection", + "operation": { + "type": "unsupported-2" + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-operation-003.json b/fixtures/freecad-golden/failures/invalid-operation-003.json new file mode 100644 index 0000000..7d93b96 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-operation-003.json @@ -0,0 +1,10 @@ +{ + "schemaVersion": 1, + "id": "invalid-operation-003", + "category": "Part", + "description": "Unknown operation rejection", + "operation": { + "type": "unsupported-3" + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-operation-004.json b/fixtures/freecad-golden/failures/invalid-operation-004.json new file mode 100644 index 0000000..4b7bc71 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-operation-004.json @@ -0,0 +1,10 @@ +{ + "schemaVersion": 1, + "id": "invalid-operation-004", + "category": "Part", + "description": "Unknown operation rejection", + "operation": { + "type": "unsupported-4" + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-operation-005.json b/fixtures/freecad-golden/failures/invalid-operation-005.json new file mode 100644 index 0000000..a418de0 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-operation-005.json @@ -0,0 +1,10 @@ +{ + "schemaVersion": 1, + "id": "invalid-operation-005", + "category": "Part", + "description": "Unknown operation rejection", + "operation": { + "type": "unsupported-5" + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-operation-006.json b/fixtures/freecad-golden/failures/invalid-operation-006.json new file mode 100644 index 0000000..1847dda --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-operation-006.json @@ -0,0 +1,10 @@ +{ + "schemaVersion": 1, + "id": "invalid-operation-006", + "category": "Part", + "description": "Unknown operation rejection", + "operation": { + "type": "unsupported-6" + }, + "expectedError": "Unsupported" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-001.json b/fixtures/freecad-golden/failures/invalid-sphere-001.json new file mode 100644 index 0000000..06901aa --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-001.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-001", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": 0 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-002.json b/fixtures/freecad-golden/failures/invalid-sphere-002.json new file mode 100644 index 0000000..d4266d8 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-002.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-002", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": -2 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-003.json b/fixtures/freecad-golden/failures/invalid-sphere-003.json new file mode 100644 index 0000000..9b87d46 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-003.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-003", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": 0 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-004.json b/fixtures/freecad-golden/failures/invalid-sphere-004.json new file mode 100644 index 0000000..c4341e0 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-004.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-004", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": -4 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-005.json b/fixtures/freecad-golden/failures/invalid-sphere-005.json new file mode 100644 index 0000000..5d9a97c --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-005.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-005", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": 0 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-006.json b/fixtures/freecad-golden/failures/invalid-sphere-006.json new file mode 100644 index 0000000..133f829 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-006.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-006", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": -6 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-007.json b/fixtures/freecad-golden/failures/invalid-sphere-007.json new file mode 100644 index 0000000..56037e3 --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-007.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-007", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": 0 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/invalid-sphere-008.json b/fixtures/freecad-golden/failures/invalid-sphere-008.json new file mode 100644 index 0000000..3a450bb --- /dev/null +++ b/fixtures/freecad-golden/failures/invalid-sphere-008.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "id": "invalid-sphere-008", + "category": "Part", + "description": "Sphere radius rejection", + "operation": { + "type": "sphere", + "radius": -8 + }, + "expectedError": "positive" +} diff --git a/fixtures/freecad-golden/failures/manifest.json b/fixtures/freecad-golden/failures/manifest.json new file mode 100644 index 0000000..cdde940 --- /dev/null +++ b/fixtures/freecad-golden/failures/manifest.json @@ -0,0 +1,211 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "driver": "scripts/freecad-golden-driver.py", + "failures": [ + { + "id": "invalid-box-001", + "file": "invalid-box-001.json" + }, + { + "id": "invalid-box-002", + "file": "invalid-box-002.json" + }, + { + "id": "invalid-box-003", + "file": "invalid-box-003.json" + }, + { + "id": "invalid-box-004", + "file": "invalid-box-004.json" + }, + { + "id": "invalid-box-005", + "file": "invalid-box-005.json" + }, + { + "id": "invalid-box-006", + "file": "invalid-box-006.json" + }, + { + "id": "invalid-box-007", + "file": "invalid-box-007.json" + }, + { + "id": "invalid-box-008", + "file": "invalid-box-008.json" + }, + { + "id": "invalid-box-009", + "file": "invalid-box-009.json" + }, + { + "id": "invalid-box-010", + "file": "invalid-box-010.json" + }, + { + "id": "invalid-box-011", + "file": "invalid-box-011.json" + }, + { + "id": "invalid-box-012", + "file": "invalid-box-012.json" + }, + { + "id": "invalid-cylinder-001", + "file": "invalid-cylinder-001.json" + }, + { + "id": "invalid-cylinder-002", + "file": "invalid-cylinder-002.json" + }, + { + "id": "invalid-cylinder-003", + "file": "invalid-cylinder-003.json" + }, + { + "id": "invalid-cylinder-004", + "file": "invalid-cylinder-004.json" + }, + { + "id": "invalid-cylinder-005", + "file": "invalid-cylinder-005.json" + }, + { + "id": "invalid-cylinder-006", + "file": "invalid-cylinder-006.json" + }, + { + "id": "invalid-cylinder-007", + "file": "invalid-cylinder-007.json" + }, + { + "id": "invalid-cylinder-008", + "file": "invalid-cylinder-008.json" + }, + { + "id": "invalid-cylinder-009", + "file": "invalid-cylinder-009.json" + }, + { + "id": "invalid-cylinder-010", + "file": "invalid-cylinder-010.json" + }, + { + "id": "invalid-sphere-001", + "file": "invalid-sphere-001.json" + }, + { + "id": "invalid-sphere-002", + "file": "invalid-sphere-002.json" + }, + { + "id": "invalid-sphere-003", + "file": "invalid-sphere-003.json" + }, + { + "id": "invalid-sphere-004", + "file": "invalid-sphere-004.json" + }, + { + "id": "invalid-sphere-005", + "file": "invalid-sphere-005.json" + }, + { + "id": "invalid-sphere-006", + "file": "invalid-sphere-006.json" + }, + { + "id": "invalid-sphere-007", + "file": "invalid-sphere-007.json" + }, + { + "id": "invalid-sphere-008", + "file": "invalid-sphere-008.json" + }, + { + "id": "invalid-cone-001", + "file": "invalid-cone-001.json" + }, + { + "id": "invalid-cone-002", + "file": "invalid-cone-002.json" + }, + { + "id": "invalid-cone-003", + "file": "invalid-cone-003.json" + }, + { + "id": "invalid-cone-004", + "file": "invalid-cone-004.json" + }, + { + "id": "invalid-cone-005", + "file": "invalid-cone-005.json" + }, + { + "id": "invalid-cone-006", + "file": "invalid-cone-006.json" + }, + { + "id": "invalid-cone-007", + "file": "invalid-cone-007.json" + }, + { + "id": "invalid-cone-008", + "file": "invalid-cone-008.json" + }, + { + "id": "invalid-boolean-001", + "file": "invalid-boolean-001.json" + }, + { + "id": "invalid-boolean-002", + "file": "invalid-boolean-002.json" + }, + { + "id": "invalid-boolean-003", + "file": "invalid-boolean-003.json" + }, + { + "id": "invalid-boolean-004", + "file": "invalid-boolean-004.json" + }, + { + "id": "invalid-boolean-005", + "file": "invalid-boolean-005.json" + }, + { + "id": "invalid-boolean-006", + "file": "invalid-boolean-006.json" + }, + { + "id": "invalid-operation-001", + "file": "invalid-operation-001.json" + }, + { + "id": "invalid-operation-002", + "file": "invalid-operation-002.json" + }, + { + "id": "invalid-operation-003", + "file": "invalid-operation-003.json" + }, + { + "id": "invalid-operation-004", + "file": "invalid-operation-004.json" + }, + { + "id": "invalid-operation-005", + "file": "invalid-operation-005.json" + }, + { + "id": "invalid-operation-006", + "file": "invalid-operation-006.json" + }, + { + "id": "invalid-common-001", + "file": "invalid-common-001.json" + } + ] +} diff --git a/fixtures/freecad-golden/feature-families/failures/invalid-ellipsoid-family-001.json b/fixtures/freecad-golden/feature-families/failures/invalid-ellipsoid-family-001.json new file mode 100644 index 0000000..b83be3c --- /dev/null +++ b/fixtures/freecad-golden/feature-families/failures/invalid-ellipsoid-family-001.json @@ -0,0 +1,8 @@ +{ + "schemaVersion": 1, + "id": "invalid-ellipsoid-family-001", + "category": "Part", + "description": "Ellipsoid radius rejection", + "operation": { "type": "ellipsoid", "radius1": 0, "radius2": 4, "radius3": 0, "angle1": -90, "angle2": 90, "angle3": 360 }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/feature-families/failures/invalid-helix-family-001.json b/fixtures/freecad-golden/feature-families/failures/invalid-helix-family-001.json new file mode 100644 index 0000000..0aaf2ed --- /dev/null +++ b/fixtures/freecad-golden/feature-families/failures/invalid-helix-family-001.json @@ -0,0 +1,8 @@ +{ + "schemaVersion": 1, + "id": "invalid-helix-family-001", + "category": "Part", + "description": "Helix missing pitch rejection", + "operation": { "type": "helix", "height": 6, "radius": 2, "angle": 0, "segmentLength": 0 }, + "expectedError": "pitch" +} diff --git a/fixtures/freecad-golden/feature-families/failures/invalid-prism-family-001.json b/fixtures/freecad-golden/feature-families/failures/invalid-prism-family-001.json new file mode 100644 index 0000000..640d03e --- /dev/null +++ b/fixtures/freecad-golden/feature-families/failures/invalid-prism-family-001.json @@ -0,0 +1,8 @@ +{ + "schemaVersion": 1, + "id": "invalid-prism-family-001", + "category": "Part", + "description": "Prism missing height rejection", + "operation": { "type": "prism", "polygon": 6, "circumradius": 2, "firstAngle": 0, "secondAngle": 0 }, + "expectedError": "height" +} diff --git a/fixtures/freecad-golden/feature-families/failures/invalid-torus-family-001.json b/fixtures/freecad-golden/feature-families/failures/invalid-torus-family-001.json new file mode 100644 index 0000000..9ffb531 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/failures/invalid-torus-family-001.json @@ -0,0 +1,8 @@ +{ + "schemaVersion": 1, + "id": "invalid-torus-family-001", + "category": "Part", + "description": "Torus radius rejection", + "operation": { "type": "torus", "radius1": 0, "radius2": 2, "angle1": -180, "angle2": 180, "angle3": 360 }, + "expectedError": "parameters" +} diff --git a/fixtures/freecad-golden/feature-families/failures/invalid-wedge-family-001.json b/fixtures/freecad-golden/feature-families/failures/invalid-wedge-family-001.json new file mode 100644 index 0000000..02337a4 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/failures/invalid-wedge-family-001.json @@ -0,0 +1,8 @@ +{ + "schemaVersion": 1, + "id": "invalid-wedge-family-001", + "category": "Part", + "description": "Wedge missing Xmax rejection", + "operation": { "type": "wedge", "xmin": 0, "ymin": 0, "zmin": 0, "z2min": 0, "x2min": 0, "ymax": 10, "zmax": 10, "z2max": 8, "x2max": 8 }, + "expectedError": "xmax" +} diff --git a/fixtures/freecad-golden/feature-families/failures/manifest.json b/fixtures/freecad-golden/feature-families/failures/manifest.json new file mode 100644 index 0000000..3478b70 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/failures/manifest.json @@ -0,0 +1,12 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "driver": "scripts/freecad-golden-driver.py", + "failures": [ + { "id": "invalid-ellipsoid-family-001", "file": "invalid-ellipsoid-family-001.json" }, + { "id": "invalid-torus-family-001", "file": "invalid-torus-family-001.json" }, + { "id": "invalid-prism-family-001", "file": "invalid-prism-family-001.json" }, + { "id": "invalid-wedge-family-001", "file": "invalid-wedge-family-001.json" }, + { "id": "invalid-helix-family-001", "file": "invalid-helix-family-001.json" } + ] +} diff --git a/fixtures/freecad-golden/feature-families/manifest.json b/fixtures/freecad-golden/feature-families/manifest.json new file mode 100644 index 0000000..b5729cb --- /dev/null +++ b/fixtures/freecad-golden/feature-families/manifest.json @@ -0,0 +1,12 @@ +{ + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "driver": "scripts/freecad-golden-driver.py", + "scenarios": [ + { "id": "part-ellipsoid-family-001", "file": "scenarios/part-ellipsoid-family-001.json" }, + { "id": "part-torus-family-001", "file": "scenarios/part-torus-family-001.json" }, + { "id": "part-prism-family-001", "file": "scenarios/part-prism-family-001.json" }, + { "id": "part-wedge-family-001", "file": "scenarios/part-wedge-family-001.json" }, + { "id": "part-helix-family-001", "file": "scenarios/part-helix-family-001.json" } + ] +} diff --git a/fixtures/freecad-golden/feature-families/scenarios/part-ellipsoid-family-001.json b/fixtures/freecad-golden/feature-families/scenarios/part-ellipsoid-family-001.json new file mode 100644 index 0000000..0e6fed6 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/scenarios/part-ellipsoid-family-001.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 1, + "id": "part-ellipsoid-family-001", + "category": "Part", + "description": "Native Part Ellipsoid family fixture", + "operation": { + "type": "ellipsoid", + "radius1": 2, + "radius2": 4, + "radius3": 0, + "angle1": -90, + "angle2": 90, + "angle3": 360 + }, + "tolerance": { "linear": 0.000001, "scalar": 0.000001 }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 133.9826640573845, + "boundingBox": { + "min": [-8, -6.92820323027551, -2], + "max": [4, 6.928203230275507, 2] + } + } +} diff --git a/fixtures/freecad-golden/feature-families/scenarios/part-helix-family-001.json b/fixtures/freecad-golden/feature-families/scenarios/part-helix-family-001.json new file mode 100644 index 0000000..039c84a --- /dev/null +++ b/fixtures/freecad-golden/feature-families/scenarios/part-helix-family-001.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "id": "part-helix-family-001", + "category": "Part", + "description": "Native Part Helix family fixture", + "operation": { + "type": "helix", + "pitch": 3, + "height": 6, + "radius": 2, + "angle": 0, + "segmentLength": 0 + }, + "tolerance": { "linear": 0.000001, "scalar": 0.000001 }, + "expected": { + "shapeType": "Wire", + "isNull": false, + "isValid": true, + "solids": 0, + "faces": 0, + "edges": 1, + "vertices": 2, + "volume": 0, + "boundingBox": { + "min": [-2, -2.0188633703206333, 0], + "max": [2, 2.0188633703206342, 6] + } + } +} diff --git a/fixtures/freecad-golden/feature-families/scenarios/part-prism-family-001.json b/fixtures/freecad-golden/feature-families/scenarios/part-prism-family-001.json new file mode 100644 index 0000000..ad78017 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/scenarios/part-prism-family-001.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "id": "part-prism-family-001", + "category": "Part", + "description": "Native Part Prism family fixture", + "operation": { + "type": "prism", + "polygon": 6, + "circumradius": 2, + "height": 10, + "firstAngle": 10, + "secondAngle": -5 + }, + "tolerance": { "linear": 0.000001, "scalar": 0.000001 }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 18, + "vertices": 12, + "volume": 103.92304845413263, + "boundingBox": { + "min": [-2, -2.6069374428281185, 0], + "max": [3.76326980708465, 1.7320508075688776, 10] + } + } +} diff --git a/fixtures/freecad-golden/feature-families/scenarios/part-torus-family-001.json b/fixtures/freecad-golden/feature-families/scenarios/part-torus-family-001.json new file mode 100644 index 0000000..44c3390 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/scenarios/part-torus-family-001.json @@ -0,0 +1,26 @@ +{ + "schemaVersion": 1, + "id": "part-torus-family-001", + "category": "Part", + "description": "Native Part Torus family fixture", + "operation": { + "type": "torus", + "radius1": 10, + "radius2": 2, + "angle1": -180, + "angle2": 180, + "angle3": 270 + }, + "tolerance": { "linear": 0.000001, "scalar": 0.000001 }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "volume": 592.1762640653615, + "boundingBox": { + "min": [-12.988706403508727, -12.988706403508727, -2], + "max": [12.988706403508727, 12.988706403508727, 2] + } + } +} diff --git a/fixtures/freecad-golden/feature-families/scenarios/part-wedge-family-001.json b/fixtures/freecad-golden/feature-families/scenarios/part-wedge-family-001.json new file mode 100644 index 0000000..7708002 --- /dev/null +++ b/fixtures/freecad-golden/feature-families/scenarios/part-wedge-family-001.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "id": "part-wedge-family-001", + "category": "Part", + "description": "Native Part Wedge family fixture", + "operation": { + "type": "wedge", + "xmin": 0, + "ymin": 0, + "zmin": 0, + "z2min": 0, + "x2min": 0, + "xmax": 10, + "ymax": 10, + "zmax": 10, + "z2max": 8, + "x2max": 8 + }, + "tolerance": { "linear": 0.000001, "scalar": 0.000001 }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 813.3333333333334, + "boundingBox": { + "min": [0, 0, 0], + "max": [10, 10, 10] + } + } +} diff --git a/fixtures/freecad-golden/manifest.json b/fixtures/freecad-golden/manifest.json index e681dfb..79c9d17 100644 --- a/fixtures/freecad-golden/manifest.json +++ b/fixtures/freecad-golden/manifest.json @@ -3,10 +3,405 @@ "baselineId": "freecad-1.1.1", "driver": "scripts/freecad-golden-driver.py", "scenarios": [ - { "id": "part-box", "file": "scenarios/part-box.json" }, - { "id": "part-cylinder", "file": "scenarios/part-cylinder.json" }, - { "id": "part-sphere", "file": "scenarios/part-sphere.json" }, - { "id": "part-cone", "file": "scenarios/part-cone.json" }, - { "id": "part-cut-through-hole", "file": "scenarios/part-cut-through-hole.json" } + { + "id": "part-box", + "file": "scenarios/part-box.json" + }, + { + "id": "part-cylinder", + "file": "scenarios/part-cylinder.json" + }, + { + "id": "part-sphere", + "file": "scenarios/part-sphere.json" + }, + { + "id": "part-cone", + "file": "scenarios/part-cone.json" + }, + { + "id": "part-cut-through-hole", + "file": "scenarios/part-cut-through-hole.json" + }, + { + "id": "part-box-001", + "file": "scenarios/part-box-001.json" + }, + { + "id": "part-box-002", + "file": "scenarios/part-box-002.json" + }, + { + "id": "part-box-003", + "file": "scenarios/part-box-003.json" + }, + { + "id": "part-box-004", + "file": "scenarios/part-box-004.json" + }, + { + "id": "part-box-005", + "file": "scenarios/part-box-005.json" + }, + { + "id": "part-box-006", + "file": "scenarios/part-box-006.json" + }, + { + "id": "part-box-007", + "file": "scenarios/part-box-007.json" + }, + { + "id": "part-box-008", + "file": "scenarios/part-box-008.json" + }, + { + "id": "part-box-009", + "file": "scenarios/part-box-009.json" + }, + { + "id": "part-box-010", + "file": "scenarios/part-box-010.json" + }, + { + "id": "part-box-011", + "file": "scenarios/part-box-011.json" + }, + { + "id": "part-box-012", + "file": "scenarios/part-box-012.json" + }, + { + "id": "part-box-013", + "file": "scenarios/part-box-013.json" + }, + { + "id": "part-box-014", + "file": "scenarios/part-box-014.json" + }, + { + "id": "part-box-015", + "file": "scenarios/part-box-015.json" + }, + { + "id": "part-box-016", + "file": "scenarios/part-box-016.json" + }, + { + "id": "part-box-017", + "file": "scenarios/part-box-017.json" + }, + { + "id": "part-box-018", + "file": "scenarios/part-box-018.json" + }, + { + "id": "part-box-019", + "file": "scenarios/part-box-019.json" + }, + { + "id": "part-box-020", + "file": "scenarios/part-box-020.json" + }, + { + "id": "part-cylinder-001", + "file": "scenarios/part-cylinder-001.json" + }, + { + "id": "part-cylinder-002", + "file": "scenarios/part-cylinder-002.json" + }, + { + "id": "part-cylinder-003", + "file": "scenarios/part-cylinder-003.json" + }, + { + "id": "part-cylinder-004", + "file": "scenarios/part-cylinder-004.json" + }, + { + "id": "part-cylinder-005", + "file": "scenarios/part-cylinder-005.json" + }, + { + "id": "part-cylinder-006", + "file": "scenarios/part-cylinder-006.json" + }, + { + "id": "part-cylinder-007", + "file": "scenarios/part-cylinder-007.json" + }, + { + "id": "part-cylinder-008", + "file": "scenarios/part-cylinder-008.json" + }, + { + "id": "part-cylinder-009", + "file": "scenarios/part-cylinder-009.json" + }, + { + "id": "part-cylinder-010", + "file": "scenarios/part-cylinder-010.json" + }, + { + "id": "part-cylinder-011", + "file": "scenarios/part-cylinder-011.json" + }, + { + "id": "part-cylinder-012", + "file": "scenarios/part-cylinder-012.json" + }, + { + "id": "part-cylinder-013", + "file": "scenarios/part-cylinder-013.json" + }, + { + "id": "part-cylinder-014", + "file": "scenarios/part-cylinder-014.json" + }, + { + "id": "part-cylinder-015", + "file": "scenarios/part-cylinder-015.json" + }, + { + "id": "part-cylinder-016", + "file": "scenarios/part-cylinder-016.json" + }, + { + "id": "part-cylinder-017", + "file": "scenarios/part-cylinder-017.json" + }, + { + "id": "part-cylinder-018", + "file": "scenarios/part-cylinder-018.json" + }, + { + "id": "part-cylinder-019", + "file": "scenarios/part-cylinder-019.json" + }, + { + "id": "part-cylinder-020", + "file": "scenarios/part-cylinder-020.json" + }, + { + "id": "part-sphere-001", + "file": "scenarios/part-sphere-001.json" + }, + { + "id": "part-sphere-002", + "file": "scenarios/part-sphere-002.json" + }, + { + "id": "part-sphere-003", + "file": "scenarios/part-sphere-003.json" + }, + { + "id": "part-sphere-004", + "file": "scenarios/part-sphere-004.json" + }, + { + "id": "part-sphere-005", + "file": "scenarios/part-sphere-005.json" + }, + { + "id": "part-sphere-006", + "file": "scenarios/part-sphere-006.json" + }, + { + "id": "part-sphere-007", + "file": "scenarios/part-sphere-007.json" + }, + { + "id": "part-sphere-008", + "file": "scenarios/part-sphere-008.json" + }, + { + "id": "part-sphere-009", + "file": "scenarios/part-sphere-009.json" + }, + { + "id": "part-sphere-010", + "file": "scenarios/part-sphere-010.json" + }, + { + "id": "part-sphere-011", + "file": "scenarios/part-sphere-011.json" + }, + { + "id": "part-sphere-012", + "file": "scenarios/part-sphere-012.json" + }, + { + "id": "part-sphere-013", + "file": "scenarios/part-sphere-013.json" + }, + { + "id": "part-sphere-014", + "file": "scenarios/part-sphere-014.json" + }, + { + "id": "part-sphere-015", + "file": "scenarios/part-sphere-015.json" + }, + { + "id": "part-cone-001", + "file": "scenarios/part-cone-001.json" + }, + { + "id": "part-cone-002", + "file": "scenarios/part-cone-002.json" + }, + { + "id": "part-cone-003", + "file": "scenarios/part-cone-003.json" + }, + { + "id": "part-cone-004", + "file": "scenarios/part-cone-004.json" + }, + { + "id": "part-cone-005", + "file": "scenarios/part-cone-005.json" + }, + { + "id": "part-cone-006", + "file": "scenarios/part-cone-006.json" + }, + { + "id": "part-cone-007", + "file": "scenarios/part-cone-007.json" + }, + { + "id": "part-cone-008", + "file": "scenarios/part-cone-008.json" + }, + { + "id": "part-cone-009", + "file": "scenarios/part-cone-009.json" + }, + { + "id": "part-cone-010", + "file": "scenarios/part-cone-010.json" + }, + { + "id": "part-cone-011", + "file": "scenarios/part-cone-011.json" + }, + { + "id": "part-cone-012", + "file": "scenarios/part-cone-012.json" + }, + { + "id": "part-cone-013", + "file": "scenarios/part-cone-013.json" + }, + { + "id": "part-cone-014", + "file": "scenarios/part-cone-014.json" + }, + { + "id": "part-cone-015", + "file": "scenarios/part-cone-015.json" + }, + { + "id": "part-cut-001", + "file": "scenarios/part-cut-001.json" + }, + { + "id": "part-fuse-002", + "file": "scenarios/part-fuse-002.json" + }, + { + "id": "part-common-003", + "file": "scenarios/part-common-003.json" + }, + { + "id": "part-cut-004", + "file": "scenarios/part-cut-004.json" + }, + { + "id": "part-fuse-005", + "file": "scenarios/part-fuse-005.json" + }, + { + "id": "part-common-006", + "file": "scenarios/part-common-006.json" + }, + { + "id": "part-cut-007", + "file": "scenarios/part-cut-007.json" + }, + { + "id": "part-fuse-008", + "file": "scenarios/part-fuse-008.json" + }, + { + "id": "part-common-009", + "file": "scenarios/part-common-009.json" + }, + { + "id": "part-cut-010", + "file": "scenarios/part-cut-010.json" + }, + { + "id": "part-fuse-011", + "file": "scenarios/part-fuse-011.json" + }, + { + "id": "part-common-012", + "file": "scenarios/part-common-012.json" + }, + { + "id": "part-cut-013", + "file": "scenarios/part-cut-013.json" + }, + { + "id": "part-fuse-014", + "file": "scenarios/part-fuse-014.json" + }, + { + "id": "part-common-015", + "file": "scenarios/part-common-015.json" + }, + { + "id": "part-cut-016", + "file": "scenarios/part-cut-016.json" + }, + { + "id": "part-fuse-017", + "file": "scenarios/part-fuse-017.json" + }, + { + "id": "part-common-018", + "file": "scenarios/part-common-018.json" + }, + { + "id": "part-cut-019", + "file": "scenarios/part-cut-019.json" + }, + { + "id": "part-fuse-020", + "file": "scenarios/part-fuse-020.json" + }, + { + "id": "part-common-021", + "file": "scenarios/part-common-021.json" + }, + { + "id": "part-cut-022", + "file": "scenarios/part-cut-022.json" + }, + { + "id": "part-fuse-023", + "file": "scenarios/part-fuse-023.json" + }, + { + "id": "part-common-024", + "file": "scenarios/part-common-024.json" + }, + { + "id": "part-cut-025", + "file": "scenarios/part-cut-025.json" + } ] } diff --git a/fixtures/freecad-golden/scenarios/part-box-001.json b/fixtures/freecad-golden/scenarios/part-box-001.json new file mode 100644 index 0000000..335b99b --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-001.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-001", + "category": "Part", + "description": "Parametric box fixture 1", + "operation": { + "type": "box", + "length": 3, + "width": 5, + "height": 7, + "placement": { + "translation": [ + 1, + 2, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 104.99999999999999, + "area": 141.99999999999997, + "boundingBox": { + "max": [ + 4, + 7, + 8 + ], + "min": [ + 1, + 2, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-002.json b/fixtures/freecad-golden/scenarios/part-box-002.json new file mode 100644 index 0000000..52190a2 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-002.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-002", + "category": "Part", + "description": "Parametric box fixture 2", + "operation": { + "type": "box", + "length": 4, + "width": 7, + "height": 10, + "placement": { + "translation": [ + 2, + 4, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 280, + "area": 276, + "boundingBox": { + "max": [ + 6, + 11, + 12 + ], + "min": [ + 2, + 4, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-003.json b/fixtures/freecad-golden/scenarios/part-box-003.json new file mode 100644 index 0000000..d28981b --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-003.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-003", + "category": "Part", + "description": "Parametric box fixture 3", + "operation": { + "type": "box", + "length": 5, + "width": 9, + "height": 13, + "placement": { + "translation": [ + 3, + 6, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 585, + "area": 454, + "boundingBox": { + "max": [ + 8, + 15, + 13 + ], + "min": [ + 3, + 6, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-004.json b/fixtures/freecad-golden/scenarios/part-box-004.json new file mode 100644 index 0000000..05a07d4 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-004.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-004", + "category": "Part", + "description": "Parametric box fixture 4", + "operation": { + "type": "box", + "length": 6, + "width": 11, + "height": 16, + "placement": { + "translation": [ + 4, + 1, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 1056, + "area": 676, + "boundingBox": { + "max": [ + 10, + 12, + 17 + ], + "min": [ + 4, + 1, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-005.json b/fixtures/freecad-golden/scenarios/part-box-005.json new file mode 100644 index 0000000..27cb853 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-005.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-005", + "category": "Part", + "description": "Parametric box fixture 5", + "operation": { + "type": "box", + "length": 7, + "width": 13, + "height": 6, + "placement": { + "translation": [ + 0, + 3, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 546, + "area": 422, + "boundingBox": { + "max": [ + 7, + 16, + 8 + ], + "min": [ + 0, + 3, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-006.json b/fixtures/freecad-golden/scenarios/part-box-006.json new file mode 100644 index 0000000..f5536de --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-006.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-006", + "category": "Part", + "description": "Parametric box fixture 6", + "operation": { + "type": "box", + "length": 8, + "width": 4, + "height": 9, + "placement": { + "translation": [ + 1, + 5, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 288, + "area": 280, + "boundingBox": { + "max": [ + 9, + 9, + 9 + ], + "min": [ + 1, + 5, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-007.json b/fixtures/freecad-golden/scenarios/part-box-007.json new file mode 100644 index 0000000..f1805c1 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-007.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-007", + "category": "Part", + "description": "Parametric box fixture 7", + "operation": { + "type": "box", + "length": 9, + "width": 6, + "height": 12, + "placement": { + "translation": [ + 2, + 0, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 648, + "area": 468, + "boundingBox": { + "max": [ + 11, + 6, + 13 + ], + "min": [ + 2, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-008.json b/fixtures/freecad-golden/scenarios/part-box-008.json new file mode 100644 index 0000000..cd70b60 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-008.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-008", + "category": "Part", + "description": "Parametric box fixture 8", + "operation": { + "type": "box", + "length": 10, + "width": 8, + "height": 15, + "placement": { + "translation": [ + 3, + 2, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 1200, + "area": 700, + "boundingBox": { + "max": [ + 13, + 10, + 17 + ], + "min": [ + 3, + 2, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-009.json b/fixtures/freecad-golden/scenarios/part-box-009.json new file mode 100644 index 0000000..a91ada2 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-009.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-009", + "category": "Part", + "description": "Parametric box fixture 9", + "operation": { + "type": "box", + "length": 2, + "width": 10, + "height": 5, + "placement": { + "translation": [ + 4, + 4, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 99.99999999999997, + "area": 160, + "boundingBox": { + "max": [ + 6, + 14, + 5 + ], + "min": [ + 4, + 4, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-010.json b/fixtures/freecad-golden/scenarios/part-box-010.json new file mode 100644 index 0000000..9a9a8fa --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-010.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-010", + "category": "Part", + "description": "Parametric box fixture 10", + "operation": { + "type": "box", + "length": 3, + "width": 12, + "height": 8, + "placement": { + "translation": [ + 0, + 6, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 288, + "area": 312, + "boundingBox": { + "max": [ + 3, + 18, + 9 + ], + "min": [ + 0, + 6, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-011.json b/fixtures/freecad-golden/scenarios/part-box-011.json new file mode 100644 index 0000000..7f7f105 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-011.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-011", + "category": "Part", + "description": "Parametric box fixture 11", + "operation": { + "type": "box", + "length": 4, + "width": 3, + "height": 11, + "placement": { + "translation": [ + 1, + 1, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 132, + "area": 178, + "boundingBox": { + "max": [ + 5, + 4, + 13 + ], + "min": [ + 1, + 1, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-012.json b/fixtures/freecad-golden/scenarios/part-box-012.json new file mode 100644 index 0000000..f1fdaa7 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-012.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-012", + "category": "Part", + "description": "Parametric box fixture 12", + "operation": { + "type": "box", + "length": 5, + "width": 5, + "height": 14, + "placement": { + "translation": [ + 2, + 3, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 350, + "area": 329.99999999999994, + "boundingBox": { + "max": [ + 7, + 8, + 14 + ], + "min": [ + 2, + 3, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-013.json b/fixtures/freecad-golden/scenarios/part-box-013.json new file mode 100644 index 0000000..e61a7ea --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-013.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-013", + "category": "Part", + "description": "Parametric box fixture 13", + "operation": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 3, + 5, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 168, + "area": 188, + "boundingBox": { + "max": [ + 9, + 12, + 5 + ], + "min": [ + 3, + 5, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-014.json b/fixtures/freecad-golden/scenarios/part-box-014.json new file mode 100644 index 0000000..a854d9e --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-014.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-014", + "category": "Part", + "description": "Parametric box fixture 14", + "operation": { + "type": "box", + "length": 7, + "width": 9, + "height": 7, + "placement": { + "translation": [ + 4, + 0, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 441.00000000000006, + "area": 349.99999999999994, + "boundingBox": { + "max": [ + 11, + 9, + 9 + ], + "min": [ + 4, + 0, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-015.json b/fixtures/freecad-golden/scenarios/part-box-015.json new file mode 100644 index 0000000..ac87441 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-015.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-015", + "category": "Part", + "description": "Parametric box fixture 15", + "operation": { + "type": "box", + "length": 8, + "width": 11, + "height": 10, + "placement": { + "translation": [ + 0, + 2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 880, + "area": 556, + "boundingBox": { + "max": [ + 8, + 13, + 10 + ], + "min": [ + 0, + 2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-016.json b/fixtures/freecad-golden/scenarios/part-box-016.json new file mode 100644 index 0000000..796025c --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-016.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-016", + "category": "Part", + "description": "Parametric box fixture 16", + "operation": { + "type": "box", + "length": 9, + "width": 13, + "height": 13, + "placement": { + "translation": [ + 1, + 4, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 1521, + "area": 806, + "boundingBox": { + "max": [ + 10, + 17, + 14 + ], + "min": [ + 1, + 4, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-017.json b/fixtures/freecad-golden/scenarios/part-box-017.json new file mode 100644 index 0000000..179565d --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-017.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-017", + "category": "Part", + "description": "Parametric box fixture 17", + "operation": { + "type": "box", + "length": 10, + "width": 4, + "height": 16, + "placement": { + "translation": [ + 2, + 6, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 639.9999999999999, + "area": 528, + "boundingBox": { + "max": [ + 12, + 10, + 18 + ], + "min": [ + 2, + 6, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-018.json b/fixtures/freecad-golden/scenarios/part-box-018.json new file mode 100644 index 0000000..0faa85d --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-018.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-018", + "category": "Part", + "description": "Parametric box fixture 18", + "operation": { + "type": "box", + "length": 2, + "width": 6, + "height": 6, + "placement": { + "translation": [ + 3, + 1, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 72, + "area": 120, + "boundingBox": { + "max": [ + 5, + 7, + 6 + ], + "min": [ + 3, + 1, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-019.json b/fixtures/freecad-golden/scenarios/part-box-019.json new file mode 100644 index 0000000..6617bd2 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-019.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-019", + "category": "Part", + "description": "Parametric box fixture 19", + "operation": { + "type": "box", + "length": 3, + "width": 8, + "height": 9, + "placement": { + "translation": [ + 4, + 3, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 216, + "area": 246, + "boundingBox": { + "max": [ + 7, + 11, + 10 + ], + "min": [ + 4, + 3, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-box-020.json b/fixtures/freecad-golden/scenarios/part-box-020.json new file mode 100644 index 0000000..31c50e7 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-box-020.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-box-020", + "category": "Part", + "description": "Parametric box fixture 20", + "operation": { + "type": "box", + "length": 4, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 5, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 480, + "area": 416, + "boundingBox": { + "max": [ + 4, + 15, + 14 + ], + "min": [ + 0, + 5, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-003.json b/fixtures/freecad-golden/scenarios/part-common-003.json new file mode 100644 index 0000000..abbd581 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-003.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-003", + "category": "Part", + "description": "common Boolean fixture 3", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 140, + "area": 165.99999999999997, + "boundingBox": { + "max": [ + 9, + 6, + 6 + ], + "min": [ + 2, + 2, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-006.json b/fixtures/freecad-golden/scenarios/part-common-006.json new file mode 100644 index 0000000..50cfba4 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-006.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-006", + "category": "Part", + "description": "common Boolean fixture 6", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 144, + "area": 168, + "boundingBox": { + "max": [ + 8, + 8, + 4 + ], + "min": [ + 2, + 2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-009.json b/fixtures/freecad-golden/scenarios/part-common-009.json new file mode 100644 index 0000000..bbc5d2f --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-009.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-009", + "category": "Part", + "description": "common Boolean fixture 9", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "max": [ + 7, + 8, + 8 + ], + "min": [ + 2, + 2, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-012.json b/fixtures/freecad-golden/scenarios/part-common-012.json new file mode 100644 index 0000000..18e738a --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-012.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-012", + "category": "Part", + "description": "common Boolean fixture 12", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "max": [ + 6, + 7, + 6 + ], + "min": [ + 2, + 2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-015.json b/fixtures/freecad-golden/scenarios/part-common-015.json new file mode 100644 index 0000000..3b5535e --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-015.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-015", + "category": "Part", + "description": "common Boolean fixture 15", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 119.99999999999999, + "area": 148, + "boundingBox": { + "max": [ + 8, + 6, + 6 + ], + "min": [ + 2, + 2, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-018.json b/fixtures/freecad-golden/scenarios/part-common-018.json new file mode 100644 index 0000000..0d67ed5 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-018.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-018", + "category": "Part", + "description": "common Boolean fixture 18", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 168, + "area": 188, + "boundingBox": { + "max": [ + 8, + 9, + 4 + ], + "min": [ + 2, + 2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-021.json b/fixtures/freecad-golden/scenarios/part-common-021.json new file mode 100644 index 0000000..3a3b557 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-021.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-021", + "category": "Part", + "description": "common Boolean fixture 21", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 209.99999999999997, + "area": 213.99999999999997, + "boundingBox": { + "max": [ + 7, + 8, + 8 + ], + "min": [ + 2, + 2, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-common-024.json b/fixtures/freecad-golden/scenarios/part-common-024.json new file mode 100644 index 0000000..46fd980 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-common-024.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-common-024", + "category": "Part", + "description": "common Boolean fixture 24", + "operation": { + "type": "common", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 6, + "edges": 12, + "vertices": 8, + "volume": 120, + "area": 148, + "boundingBox": { + "max": [ + 6, + 7, + 6 + ], + "min": [ + 2, + 2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-001.json b/fixtures/freecad-golden/scenarios/part-cone-001.json new file mode 100644 index 0000000..1cfd051 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-001.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-001", + "category": "Part", + "description": "Parametric cone fixture 1", + "operation": { + "type": "cone", + "radius1": 3, + "radius2": 1, + "height": 5, + "angle": 360, + "placement": { + "translation": [ + 1, + 1, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 68.06784082777885, + "area": 99.08790332175414, + "boundingBox": { + "max": [ + 4, + 4, + 4 + ], + "min": [ + -2, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-002.json b/fixtures/freecad-golden/scenarios/part-cone-002.json new file mode 100644 index 0000000..14b39c2 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-002.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-002", + "category": "Part", + "description": "Parametric cone fixture 2", + "operation": { + "type": "cone", + "radius1": 4, + "radius2": 1.5, + "height": 6, + "angle": 360, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 152.36724369910493, + "area": 169.6460032938488, + "boundingBox": { + "max": [ + 6, + 6, + 6 + ], + "min": [ + -2, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-003.json b/fixtures/freecad-golden/scenarios/part-cone-003.json new file mode 100644 index 0000000..42fd49f --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-003.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-003", + "category": "Part", + "description": "Parametric cone fixture 3", + "operation": { + "type": "cone", + "radius1": 5, + "radius2": 2, + "height": 7, + "angle": 360, + "placement": { + "translation": [ + 3, + 3, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 285.8849314766712, + "area": 258.58578483962543, + "boundingBox": { + "max": [ + 8, + 8, + 6.000000000000001 + ], + "min": [ + -2, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-004.json b/fixtures/freecad-golden/scenarios/part-cone-004.json new file mode 100644 index 0000000..c5d4e44 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-004.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-004", + "category": "Part", + "description": "Parametric cone fixture 4", + "operation": { + "type": "cone", + "radius1": 6, + "radius2": 0.5, + "height": 8, + "angle": 360, + "placement": { + "translation": [ + 0, + 4, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 328.8200310757317, + "area": 312.1284942410284, + "boundingBox": { + "max": [ + 6, + 10, + 8 + ], + "min": [ + -6, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-005.json b/fixtures/freecad-golden/scenarios/part-cone-005.json new file mode 100644 index 0000000..730feb8 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-005.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-005", + "category": "Part", + "description": "Parametric cone fixture 5", + "operation": { + "type": "cone", + "radius1": 7, + "radius2": 1, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + 1, + 5, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 537.2123437638547, + "area": 428.9317942588251, + "boundingBox": { + "max": [ + 8, + 12, + 8.000000000000002 + ], + "min": [ + -6, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-006.json b/fixtures/freecad-golden/scenarios/part-cone-006.json new file mode 100644 index 0000000..3730efc --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-006.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-006", + "category": "Part", + "description": "Parametric cone fixture 6", + "operation": { + "type": "cone", + "radius1": 2, + "radius2": 1.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + 2, + 0, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 96.86577348568528, + "area": 129.72805584346057, + "boundingBox": { + "max": [ + 4, + 2, + 10.000000000000002 + ], + "min": [ + 0, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-007.json b/fixtures/freecad-golden/scenarios/part-cone-007.json new file mode 100644 index 0000000..990bbf9 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-007.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-007", + "category": "Part", + "description": "Parametric cone fixture 7", + "operation": { + "type": "cone", + "radius1": 3, + "radius2": 2, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + 3, + 1, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 218.8642882000889, + "area": 214.34082963588023, + "boundingBox": { + "max": [ + 6, + 4, + 10 + ], + "min": [ + 0, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-008.json b/fixtures/freecad-golden/scenarios/part-cone-008.json new file mode 100644 index 0000000..3237bce --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-008.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-008", + "category": "Part", + "description": "Parametric cone fixture 8", + "operation": { + "type": "cone", + "radius1": 4, + "radius2": 0.5, + "height": 12, + "angle": 360, + "placement": { + "translation": [ + 0, + 2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 229.3362637120549, + "area": 227.76546738525994, + "boundingBox": { + "max": [ + 4, + 6, + 12 + ], + "min": [ + -4, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-009.json b/fixtures/freecad-golden/scenarios/part-cone-009.json new file mode 100644 index 0000000..7863290 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-009.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-009", + "category": "Part", + "description": "Parametric cone fixture 9", + "operation": { + "type": "cone", + "radius1": 5, + "radius2": 1, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + 1, + 3, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 422.02061313222896, + "area": 338.06308796290364, + "boundingBox": { + "max": [ + 6, + 8, + 12.000000000000002 + ], + "min": [ + -4, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-010.json b/fixtures/freecad-golden/scenarios/part-cone-010.json new file mode 100644 index 0000000..612e214 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-010.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-010", + "category": "Part", + "description": "Parametric cone fixture 10", + "operation": { + "type": "cone", + "radius1": 6, + "radius2": 1.5, + "height": 14, + "angle": 360, + "placement": { + "translation": [ + 2, + 4, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 692.7211801165492, + "area": 466.65471360235665, + "boundingBox": { + "max": [ + 8, + 10, + 14 + ], + "min": [ + -4, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-011.json b/fixtures/freecad-golden/scenarios/part-cone-011.json new file mode 100644 index 0000000..9e35d1b --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-011.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-011", + "category": "Part", + "description": "Parametric cone fixture 11", + "operation": { + "type": "cone", + "radius1": 7, + "radius2": 2, + "height": 15, + "angle": 360, + "placement": { + "translation": [ + 3, + 5, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 1052.4335389525809, + "area": 613.5608826010837, + "boundingBox": { + "max": [ + 10, + 12, + 14.000000000000002 + ], + "min": [ + -4, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-012.json b/fixtures/freecad-golden/scenarios/part-cone-012.json new file mode 100644 index 0000000..f3db6c4 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-012.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-012", + "category": "Part", + "description": "Parametric cone fixture 12", + "operation": { + "type": "cone", + "radius1": 2, + "radius2": 0.5, + "height": 16, + "angle": 360, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 87.9645943005142, + "area": 139.56649990543949, + "boundingBox": { + "max": [ + 2, + 2, + 16 + ], + "min": [ + -2, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-013.json b/fixtures/freecad-golden/scenarios/part-cone-013.json new file mode 100644 index 0000000..cefedf5 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-013.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-013", + "category": "Part", + "description": "Parametric cone fixture 13", + "operation": { + "type": "cone", + "radius1": 3, + "radius2": 1, + "height": 17, + "angle": 360, + "placement": { + "translation": [ + 1, + 1, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 231.43065881444807, + "area": 246.5175430623827, + "boundingBox": { + "max": [ + 4, + 4, + 16 + ], + "min": [ + -2, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-014.json b/fixtures/freecad-golden/scenarios/part-cone-014.json new file mode 100644 index 0000000..56d3d70 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-014.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-014", + "category": "Part", + "description": "Parametric cone fixture 14", + "operation": { + "type": "cone", + "radius1": 4, + "radius2": 1.5, + "height": 18, + "angle": 360, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 457.1017310973149, + "area": 371.3371946021684, + "boundingBox": { + "max": [ + 6, + 6, + 18 + ], + "min": [ + -2, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cone-015.json b/fixtures/freecad-golden/scenarios/part-cone-015.json new file mode 100644 index 0000000..82ef6df --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cone-015.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "part-cone-015", + "category": "Part", + "description": "Parametric cone fixture 15", + "operation": { + "type": "cone", + "radius1": 5, + "radius2": 2, + "height": 4, + "angle": 360, + "placement": { + "translation": [ + 3, + 3, + -1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 163.36281798666926, + "area": 201.0619298297468, + "boundingBox": { + "max": [ + 8, + 8, + 3 + ], + "min": [ + -2, + -2, + -1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-001.json b/fixtures/freecad-golden/scenarios/part-cut-001.json new file mode 100644 index 0000000..3f7782f --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-001.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-001", + "category": "Part", + "description": "cut Boolean fixture 1", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + 4.5, + 4, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "max": [ + 9, + 8, + 11 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-004.json b/fixtures/freecad-golden/scenarios/part-cut-004.json new file mode 100644 index 0000000..d7091d7 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-004.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-004", + "category": "Part", + "description": "cut Boolean fixture 4", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + 6, + 5.5, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "max": [ + 12, + 11, + 13 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-007.json b/fixtures/freecad-golden/scenarios/part-cut-007.json new file mode 100644 index 0000000..f130b69 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-007.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-007", + "category": "Part", + "description": "cut Boolean fixture 7", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + 5, + 4.5, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "max": [ + 10, + 9, + 12 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-010.json b/fixtures/freecad-golden/scenarios/part-cut-010.json new file mode 100644 index 0000000..f1ac2bd --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-010.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-010", + "category": "Part", + "description": "cut Boolean fixture 10", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + 4, + 3.5, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "max": [ + 8, + 7, + 9 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-013.json b/fixtures/freecad-golden/scenarios/part-cut-013.json new file mode 100644 index 0000000..4b58e2d --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-013.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-013", + "category": "Part", + "description": "cut Boolean fixture 13", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 12, + "angle": 360, + "placement": { + "translation": [ + 5.5, + 5, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1084.3805509807653, + "area": 873.2256510455152, + "boundingBox": { + "max": [ + 11, + 10, + 13 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-016.json b/fixtures/freecad-golden/scenarios/part-cut-016.json new file mode 100644 index 0000000..f70f51c --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-016.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-016", + "category": "Part", + "description": "cut Boolean fixture 16", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + 4.5, + 4, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 523.6504591506377, + "area": 601.8097245096172, + "boundingBox": { + "max": [ + 9, + 8, + 10 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-019.json b/fixtures/freecad-golden/scenarios/part-cut-019.json new file mode 100644 index 0000000..ec7dd34 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-019.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-019", + "category": "Part", + "description": "cut Boolean fixture 19", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + 6, + 5.5, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 1460.7455968958293, + "area": 1026.9336143134642, + "boundingBox": { + "max": [ + 12, + 11, + 14 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-022.json b/fixtures/freecad-golden/scenarios/part-cut-022.json new file mode 100644 index 0000000..c5f7eec --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-022.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-022", + "category": "Part", + "description": "cut Boolean fixture 22", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + 5, + 4.5, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 774.0155050657017, + "area": 731.5176877775662, + "boundingBox": { + "max": [ + 10, + 9, + 11 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cut-025.json b/fixtures/freecad-golden/scenarios/part-cut-025.json new file mode 100644 index 0000000..e3d7897 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cut-025.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-cut-025", + "category": "Part", + "description": "cut Boolean fixture 25", + "operation": { + "type": "cut", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "cylinder", + "radius": 2.5, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + 4, + 3.5, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 15, + "vertices": 10, + "volume": 327.2854132355741, + "area": 484.1017612416683, + "boundingBox": { + "max": [ + 8, + 7, + 10 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-001.json b/fixtures/freecad-golden/scenarios/part-cylinder-001.json new file mode 100644 index 0000000..da88502 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-001.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-001", + "category": "Part", + "description": "Parametric cylinder fixture 1", + "operation": { + "type": "cylinder", + "radius": 1.5, + "height": 8, + "angle": 360, + "placement": { + "translation": [ + -1, + 2, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 56.548667764616276, + "area": 89.53539062730911, + "boundingBox": { + "max": [ + 0.5, + 3.5, + 9 + ], + "min": [ + -2.5, + 0.5, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-002.json b/fixtures/freecad-golden/scenarios/part-cylinder-002.json new file mode 100644 index 0000000..fef06c7 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-002.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-002", + "category": "Part", + "description": "Parametric cylinder fixture 2", + "operation": { + "type": "cylinder", + "radius": 2, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + -2, + 4, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 138.23007675795088, + "area": 163.3628179866692, + "boundingBox": { + "max": [ + 0, + 6, + 13 + ], + "min": [ + -4, + 2, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-003.json b/fixtures/freecad-golden/scenarios/part-cylinder-003.json new file mode 100644 index 0000000..cc7be04 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-003.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-003", + "category": "Part", + "description": "Parametric cylinder fixture 3", + "operation": { + "type": "cylinder", + "radius": 2.5, + "height": 14, + "angle": 360, + "placement": { + "translation": [ + -3, + 1, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 274.8893571891069, + "area": 259.18139392115796, + "boundingBox": { + "max": [ + -0.5, + 3.5, + 14 + ], + "min": [ + -5.5, + -1.5, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-004.json b/fixtures/freecad-golden/scenarios/part-cylinder-004.json new file mode 100644 index 0000000..8afe90f --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-004.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-004", + "category": "Part", + "description": "Parametric cylinder fixture 4", + "operation": { + "type": "cylinder", + "radius": 3, + "height": 17, + "angle": 360, + "placement": { + "translation": [ + 0, + 3, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 480.6636759992384, + "area": 376.9911184307752, + "boundingBox": { + "max": [ + 3, + 6, + 18 + ], + "min": [ + -3, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-005.json b/fixtures/freecad-golden/scenarios/part-cylinder-005.json new file mode 100644 index 0000000..d833caa --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-005.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-005", + "category": "Part", + "description": "Parametric cylinder fixture 5", + "operation": { + "type": "cylinder", + "radius": 3.5, + "height": 20, + "angle": 360, + "placement": { + "translation": [ + -1, + 0, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 769.6902001294994, + "area": 516.791991515521, + "boundingBox": { + "max": [ + 2.5, + 3.5, + 22 + ], + "min": [ + -4.5, + -3.5, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-006.json b/fixtures/freecad-golden/scenarios/part-cylinder-006.json new file mode 100644 index 0000000..d160fc5 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-006.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-006", + "category": "Part", + "description": "Parametric cylinder fixture 6", + "operation": { + "type": "cylinder", + "radius": 4, + "height": 6, + "angle": 360, + "placement": { + "translation": [ + -2, + 2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 301.5928947446201, + "area": 251.3274122871834, + "boundingBox": { + "max": [ + 2, + 6, + 6 + ], + "min": [ + -6, + -2, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-007.json b/fixtures/freecad-golden/scenarios/part-cylinder-007.json new file mode 100644 index 0000000..372af25 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-007.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-007", + "category": "Part", + "description": "Parametric cylinder fixture 7", + "operation": { + "type": "cylinder", + "radius": 4.5, + "height": 9, + "angle": 360, + "placement": { + "translation": [ + -3, + 4, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 572.55526111674, + "area": 381.7035074111598, + "boundingBox": { + "max": [ + 1.5, + 8.5, + 10 + ], + "min": [ + -7.5, + -0.5, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-008.json b/fixtures/freecad-golden/scenarios/part-cylinder-008.json new file mode 100644 index 0000000..c949c4b --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-008.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-008", + "category": "Part", + "description": "Parametric cylinder fixture 8", + "operation": { + "type": "cylinder", + "radius": 1, + "height": 12, + "angle": 360, + "placement": { + "translation": [ + 0, + 1, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 37.69911184307751, + "area": 81.68140899333463, + "boundingBox": { + "max": [ + 1, + 2, + 14 + ], + "min": [ + -1, + 0, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-009.json b/fixtures/freecad-golden/scenarios/part-cylinder-009.json new file mode 100644 index 0000000..05717a8 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-009.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-009", + "category": "Part", + "description": "Parametric cylinder fixture 9", + "operation": { + "type": "cylinder", + "radius": 1.5, + "height": 15, + "angle": 360, + "placement": { + "translation": [ + -1, + 3, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 106.02875205865551, + "area": 155.50883635269477, + "boundingBox": { + "max": [ + 0.5, + 4.5, + 15 + ], + "min": [ + -2.5, + 1.5, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-010.json b/fixtures/freecad-golden/scenarios/part-cylinder-010.json new file mode 100644 index 0000000..e110208 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-010.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-010", + "category": "Part", + "description": "Parametric cylinder fixture 10", + "operation": { + "type": "cylinder", + "radius": 2, + "height": 18, + "angle": 360, + "placement": { + "translation": [ + -2, + 0, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 226.19467105846508, + "area": 251.32741228718342, + "boundingBox": { + "max": [ + 0, + 2, + 19 + ], + "min": [ + -4, + -2, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-011.json b/fixtures/freecad-golden/scenarios/part-cylinder-011.json new file mode 100644 index 0000000..cae5cc5 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-011.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-011", + "category": "Part", + "description": "Parametric cylinder fixture 11", + "operation": { + "type": "cylinder", + "radius": 2.5, + "height": 21, + "angle": 360, + "placement": { + "translation": [ + -3, + 2, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 412.3340357836604, + "area": 369.13713679680075, + "boundingBox": { + "max": [ + -0.5, + 4.5, + 23 + ], + "min": [ + -5.5, + -0.5, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-012.json b/fixtures/freecad-golden/scenarios/part-cylinder-012.json new file mode 100644 index 0000000..4a86fe7 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-012.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-012", + "category": "Part", + "description": "Parametric cylinder fixture 12", + "operation": { + "type": "cylinder", + "radius": 3, + "height": 7, + "angle": 360, + "placement": { + "translation": [ + 0, + 4, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 197.920337176157, + "area": 188.49555921538763, + "boundingBox": { + "max": [ + 3, + 7, + 7 + ], + "min": [ + -3, + 1, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-013.json b/fixtures/freecad-golden/scenarios/part-cylinder-013.json new file mode 100644 index 0000000..846558e --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-013.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-013", + "category": "Part", + "description": "Parametric cylinder fixture 13", + "operation": { + "type": "cylinder", + "radius": 3.5, + "height": 10, + "angle": 360, + "placement": { + "translation": [ + -1, + 1, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 384.8451000647498, + "area": 296.88050576423547, + "boundingBox": { + "max": [ + 2.5, + 4.5, + 11 + ], + "min": [ + -4.5, + -2.5, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-014.json b/fixtures/freecad-golden/scenarios/part-cylinder-014.json new file mode 100644 index 0000000..1910b00 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-014.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-014", + "category": "Part", + "description": "Parametric cylinder fixture 14", + "operation": { + "type": "cylinder", + "radius": 4, + "height": 13, + "angle": 360, + "placement": { + "translation": [ + -2, + 3, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 653.4512719466769, + "area": 427.2566008882119, + "boundingBox": { + "max": [ + 2, + 7, + 15 + ], + "min": [ + -6, + -1, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-015.json b/fixtures/freecad-golden/scenarios/part-cylinder-015.json new file mode 100644 index 0000000..7e12ebf --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-015.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-015", + "category": "Part", + "description": "Parametric cylinder fixture 15", + "operation": { + "type": "cylinder", + "radius": 4.5, + "height": 16, + "angle": 360, + "placement": { + "translation": [ + -3, + 0, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 1017.8760197630929, + "area": 579.6238445873167, + "boundingBox": { + "max": [ + 1.5, + 4.5, + 16 + ], + "min": [ + -7.5, + -4.5, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-016.json b/fixtures/freecad-golden/scenarios/part-cylinder-016.json new file mode 100644 index 0000000..b2a63f2 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-016.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-016", + "category": "Part", + "description": "Parametric cylinder fixture 16", + "operation": { + "type": "cylinder", + "radius": 1, + "height": 19, + "angle": 360, + "placement": { + "translation": [ + 0, + 2, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 59.690260418206066, + "area": 125.66370614359172, + "boundingBox": { + "max": [ + 1, + 3, + 20 + ], + "min": [ + -1, + 1, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-017.json b/fixtures/freecad-golden/scenarios/part-cylinder-017.json new file mode 100644 index 0000000..0c02203 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-017.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-017", + "category": "Part", + "description": "Parametric cylinder fixture 17", + "operation": { + "type": "cylinder", + "radius": 1.5, + "height": 5, + "angle": 360, + "placement": { + "translation": [ + -1, + 4, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 35.34291735288517, + "area": 61.26105674500097, + "boundingBox": { + "max": [ + 0.5, + 5.5, + 7 + ], + "min": [ + -2.5, + 2.5, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-018.json b/fixtures/freecad-golden/scenarios/part-cylinder-018.json new file mode 100644 index 0000000..143464f --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-018.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-018", + "category": "Part", + "description": "Parametric cylinder fixture 18", + "operation": { + "type": "cylinder", + "radius": 2, + "height": 8, + "angle": 360, + "placement": { + "translation": [ + -2, + 1, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 100.53096491487335, + "area": 125.66370614359172, + "boundingBox": { + "max": [ + 0, + 3, + 8 + ], + "min": [ + -4, + -1, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-019.json b/fixtures/freecad-golden/scenarios/part-cylinder-019.json new file mode 100644 index 0000000..9de2762 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-019.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-019", + "category": "Part", + "description": "Parametric cylinder fixture 19", + "operation": { + "type": "cylinder", + "radius": 2.5, + "height": 11, + "angle": 360, + "placement": { + "translation": [ + -3, + 3, + 1 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 215.98449493429825, + "area": 212.05750411731103, + "boundingBox": { + "max": [ + -0.5, + 5.5, + 12 + ], + "min": [ + -5.5, + 0.5, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-cylinder-020.json b/fixtures/freecad-golden/scenarios/part-cylinder-020.json new file mode 100644 index 0000000..ea08e78 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-cylinder-020.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "part-cylinder-020", + "category": "Part", + "description": "Parametric cylinder fixture 20", + "operation": { + "type": "cylinder", + "radius": 3, + "height": 14, + "angle": 360, + "placement": { + "translation": [ + 0, + 0, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 3, + "edges": 3, + "vertices": 2, + "volume": 395.84067435231395, + "area": 320.44245066615895, + "boundingBox": { + "max": [ + 3, + 3, + 16 + ], + "min": [ + -3, + -3, + 2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-002.json b/fixtures/freecad-golden/scenarios/part-fuse-002.json new file mode 100644 index 0000000..bd909de --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-002.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-002", + "category": "Part", + "description": "fuse Boolean fixture 2", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 990, + "area": 598, + "boundingBox": { + "max": [ + 10, + 9, + 11 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-005.json b/fixtures/freecad-golden/scenarios/part-fuse-005.json new file mode 100644 index 0000000..d281a3d --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-005.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-005", + "category": "Part", + "description": "fuse Boolean fixture 5", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 12, + "edges": 28, + "vertices": 18, + "volume": 538.9999999999999, + "area": 406, + "boundingBox": { + "max": [ + 8, + 8, + 10 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-008.json b/fixtures/freecad-golden/scenarios/part-fuse-008.json new file mode 100644 index 0000000..07c61eb --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-008.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-008", + "category": "Part", + "description": "fuse Boolean fixture 8", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "max": [ + 11, + 10, + 12 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-011.json b/fixtures/freecad-golden/scenarios/part-fuse-011.json new file mode 100644 index 0000000..a0a4a40 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-011.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-011", + "category": "Part", + "description": "fuse Boolean fixture 11", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 9, + "width": 8, + "height": 10, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 719.9999999999999, + "area": 483.99999999999994, + "boundingBox": { + "max": [ + 9, + 8, + 11 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-014.json b/fixtures/freecad-golden/scenarios/part-fuse-014.json new file mode 100644 index 0000000..edc1a08 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-014.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-014", + "category": "Part", + "description": "fuse Boolean fixture 14", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 12, + "width": 11, + "height": 13, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 6, + "width": 7, + "height": 4, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1716, + "area": 862, + "boundingBox": { + "max": [ + 12, + 11, + 13 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-017.json b/fixtures/freecad-golden/scenarios/part-fuse-017.json new file mode 100644 index 0000000..c3d0747 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-017.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-017", + "category": "Part", + "description": "fuse Boolean fixture 17", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 10, + "width": 9, + "height": 11, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 5, + "width": 6, + "height": 7, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 990, + "area": 598, + "boundingBox": { + "max": [ + 10, + 9, + 12 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-020.json b/fixtures/freecad-golden/scenarios/part-fuse-020.json new file mode 100644 index 0000000..7c02d67 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-020.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-020", + "category": "Part", + "description": "fuse Boolean fixture 20", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 8, + "width": 7, + "height": 9, + "placement": { + "translation": [ + 0, + 0, + 0 + ] + } + }, + "tool": { + "type": "box", + "length": 4, + "width": 5, + "height": 6, + "placement": { + "translation": [ + 2, + 2, + 0 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 8, + "edges": 20, + "vertices": 14, + "volume": 504.00000000000006, + "area": 382, + "boundingBox": { + "max": [ + 8, + 7, + 9 + ], + "min": [ + 0, + 0, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-fuse-023.json b/fixtures/freecad-golden/scenarios/part-fuse-023.json new file mode 100644 index 0000000..96618d5 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-fuse-023.json @@ -0,0 +1,62 @@ +{ + "schemaVersion": 1, + "id": "part-fuse-023", + "category": "Part", + "description": "fuse Boolean fixture 23", + "operation": { + "type": "fuse", + "base": { + "type": "box", + "length": 11, + "width": 10, + "height": 12, + "placement": { + "translation": [ + 0, + 0, + 1 + ] + } + }, + "tool": { + "type": "box", + "length": 7, + "width": 4, + "height": 5, + "placement": { + "translation": [ + 2, + 2, + 1 + ] + } + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Compound", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 7, + "edges": 16, + "vertices": 12, + "volume": 1320, + "area": 724, + "boundingBox": { + "max": [ + 11, + 10, + 13 + ], + "min": [ + 0, + 0, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-001.json b/fixtures/freecad-golden/scenarios/part-sphere-001.json new file mode 100644 index 0000000..257d1e6 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-001.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-001", + "category": "Part", + "description": "Parametric sphere fixture 1", + "operation": { + "type": "sphere", + "radius": 1.3333333333333333, + "placement": { + "translation": [ + 1, + -1, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 9.928984189123296, + "area": 22.340214425527417, + "boundingBox": { + "max": [ + 2.333333333333333, + 0.33333333333333326, + 3.333333333333333 + ], + "min": [ + -0.33333333333333326, + -2.333333333333333, + 0.6666666666666667 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-002.json b/fixtures/freecad-golden/scenarios/part-sphere-002.json new file mode 100644 index 0000000..5abf6df --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-002.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-002", + "category": "Part", + "description": "Parametric sphere fixture 2", + "operation": { + "type": "sphere", + "radius": 1.6666666666666665, + "placement": { + "translation": [ + 2, + -2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 19.392547244381433, + "area": 34.90658503988658, + "boundingBox": { + "max": [ + 3.6666666666666665, + -0.3333333333333335, + 1.6666666666666665 + ], + "min": [ + 0.3333333333333335, + -3.6666666666666665, + -1.6666666666666665 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-003.json b/fixtures/freecad-golden/scenarios/part-sphere-003.json new file mode 100644 index 0000000..f1f35ff --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-003.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-003", + "category": "Part", + "description": "Parametric sphere fixture 3", + "operation": { + "type": "sphere", + "radius": 2, + "placement": { + "translation": [ + 3, + -3, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 33.51032163829113, + "area": 50.26548245743669, + "boundingBox": { + "max": [ + 5, + -1, + 4 + ], + "min": [ + 1, + -5, + 0 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-004.json b/fixtures/freecad-golden/scenarios/part-sphere-004.json new file mode 100644 index 0000000..eaeb602 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-004.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-004", + "category": "Part", + "description": "Parametric sphere fixture 4", + "operation": { + "type": "sphere", + "radius": 2.333333333333333, + "placement": { + "translation": [ + 4, + -4, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 53.21314963858266, + "area": 68.41690667817771, + "boundingBox": { + "max": [ + 6.333333333333333, + -1.666666666666667, + 2.333333333333333 + ], + "min": [ + 1.666666666666667, + -6.333333333333333, + -2.333333333333333 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-005.json b/fixtures/freecad-golden/scenarios/part-sphere-005.json new file mode 100644 index 0000000..46b9899 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-005.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-005", + "category": "Part", + "description": "Parametric sphere fixture 5", + "operation": { + "type": "sphere", + "radius": 2.666666666666667, + "placement": { + "translation": [ + 5, + 0, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 79.43187351298639, + "area": 89.36085770210968, + "boundingBox": { + "max": [ + 7.666666666666667, + 2.666666666666667, + 4.666666666666667 + ], + "min": [ + 2.333333333333333, + -2.666666666666667, + -0.666666666666667 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-006.json b/fixtures/freecad-golden/scenarios/part-sphere-006.json new file mode 100644 index 0000000..d61dcc3 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-006.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-006", + "category": "Part", + "description": "Parametric sphere fixture 6", + "operation": { + "type": "sphere", + "radius": 3, + "placement": { + "translation": [ + 0, + -1, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 113.09733552923255, + "area": 113.09733552923255, + "boundingBox": { + "max": [ + 3, + 2, + 3 + ], + "min": [ + -3, + -4, + -3 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-007.json b/fixtures/freecad-golden/scenarios/part-sphere-007.json new file mode 100644 index 0000000..547cb9b --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-007.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-007", + "category": "Part", + "description": "Parametric sphere fixture 7", + "operation": { + "type": "sphere", + "radius": 3.3333333333333335, + "placement": { + "translation": [ + 1, + -2, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 155.14037795505152, + "area": 139.62634015954637, + "boundingBox": { + "max": [ + 4.333333333333334, + 1.3333333333333335, + 5.333333333333334 + ], + "min": [ + -2.3333333333333335, + -5.333333333333334, + -1.3333333333333335 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-008.json b/fixtures/freecad-golden/scenarios/part-sphere-008.json new file mode 100644 index 0000000..7fd04c3 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-008.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-008", + "category": "Part", + "description": "Parametric sphere fixture 8", + "operation": { + "type": "sphere", + "radius": 3.6666666666666665, + "placement": { + "translation": [ + 2, + -3, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 206.49184305817354, + "area": 168.9478715930511, + "boundingBox": { + "max": [ + 5.666666666666666, + 0.6666666666666665, + 3.6666666666666665 + ], + "min": [ + -1.6666666666666665, + -6.666666666666666, + -3.6666666666666665 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-009.json b/fixtures/freecad-golden/scenarios/part-sphere-009.json new file mode 100644 index 0000000..9b74907 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-009.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-009", + "category": "Part", + "description": "Parametric sphere fixture 9", + "operation": { + "type": "sphere", + "radius": 1, + "placement": { + "translation": [ + 3, + -4, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 4.188790204786391, + "area": 12.566370614359172, + "boundingBox": { + "max": [ + 4, + -3, + 3 + ], + "min": [ + 2, + -5, + 1 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-010.json b/fixtures/freecad-golden/scenarios/part-sphere-010.json new file mode 100644 index 0000000..7e4853e --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-010.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-010", + "category": "Part", + "description": "Parametric sphere fixture 10", + "operation": { + "type": "sphere", + "radius": 1.3333333333333333, + "placement": { + "translation": [ + 4, + 0, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 9.928984189123295, + "area": 22.340214425527417, + "boundingBox": { + "max": [ + 5.333333333333333, + 1.3333333333333333, + 1.3333333333333333 + ], + "min": [ + 2.666666666666667, + -1.3333333333333333, + -1.3333333333333333 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-011.json b/fixtures/freecad-golden/scenarios/part-sphere-011.json new file mode 100644 index 0000000..666b761 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-011.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-011", + "category": "Part", + "description": "Parametric sphere fixture 11", + "operation": { + "type": "sphere", + "radius": 1.6666666666666665, + "placement": { + "translation": [ + 5, + -1, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 19.392547244381433, + "area": 34.90658503988658, + "boundingBox": { + "max": [ + 6.666666666666666, + 0.6666666666666665, + 3.6666666666666665 + ], + "min": [ + 3.3333333333333335, + -2.6666666666666665, + 0.3333333333333335 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-012.json b/fixtures/freecad-golden/scenarios/part-sphere-012.json new file mode 100644 index 0000000..fc236a1 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-012.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-012", + "category": "Part", + "description": "Parametric sphere fixture 12", + "operation": { + "type": "sphere", + "radius": 2, + "placement": { + "translation": [ + 0, + -2, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 33.51032163829113, + "area": 50.26548245743669, + "boundingBox": { + "max": [ + 2, + 0, + 2 + ], + "min": [ + -2, + -4, + -2 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-013.json b/fixtures/freecad-golden/scenarios/part-sphere-013.json new file mode 100644 index 0000000..efea0a7 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-013.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-013", + "category": "Part", + "description": "Parametric sphere fixture 13", + "operation": { + "type": "sphere", + "radius": 2.333333333333333, + "placement": { + "translation": [ + 1, + -3, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 53.21314963858266, + "area": 68.41690667817771, + "boundingBox": { + "max": [ + 3.333333333333333, + -0.666666666666667, + 4.333333333333333 + ], + "min": [ + -1.333333333333333, + -5.333333333333333, + -0.33333333333333304 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-014.json b/fixtures/freecad-golden/scenarios/part-sphere-014.json new file mode 100644 index 0000000..902f3d2 --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-014.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-014", + "category": "Part", + "description": "Parametric sphere fixture 14", + "operation": { + "type": "sphere", + "radius": 2.666666666666667, + "placement": { + "translation": [ + 2, + -4, + 0 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 79.43187351298639, + "area": 89.36085770210968, + "boundingBox": { + "max": [ + 4.666666666666667, + -1.333333333333333, + 2.666666666666667 + ], + "min": [ + -0.666666666666667, + -6.666666666666667, + -2.666666666666667 + ] + } + } +} diff --git a/fixtures/freecad-golden/scenarios/part-sphere-015.json b/fixtures/freecad-golden/scenarios/part-sphere-015.json new file mode 100644 index 0000000..63899dc --- /dev/null +++ b/fixtures/freecad-golden/scenarios/part-sphere-015.json @@ -0,0 +1,44 @@ +{ + "schemaVersion": 1, + "id": "part-sphere-015", + "category": "Part", + "description": "Parametric sphere fixture 15", + "operation": { + "type": "sphere", + "radius": 3, + "placement": { + "translation": [ + 3, + 0, + 2 + ] + } + }, + "tolerance": { + "linear": 0.000001, + "scalar": 0.000001 + }, + "expected": { + "shapeType": "Solid", + "isNull": false, + "isValid": true, + "solids": 1, + "faces": 1, + "edges": 3, + "vertices": 2, + "volume": 113.09733552923255, + "area": 113.09733552923255, + "boundingBox": { + "max": [ + 6, + 3, + 5 + ], + "min": [ + 0, + -3, + -1 + ] + } + } +} diff --git a/index.html b/index.html index 4f64a00..c9c2829 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,8 @@ + + BitBybit CAD Studio diff --git a/native/camotics-wasm/build.sh b/native/camotics-wasm/build.sh new file mode 100755 index 0000000..2c45e85 --- /dev/null +++ b/native/camotics-wasm/build.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd) +source_root="$repo_root/CAMotics/src" +output_dir="$repo_root/public/vendor/camotics" + +test -f "$source_root/camotics/sim/ConicSweep.cpp" +test -f "$source_root/camotics/sim/SpheroidSweep.cpp" +command -v em++ >/dev/null +mkdir -p "$output_dir" + +em++ \ + "$repo_root/native/camotics-wasm/camotics_sweep.cpp" \ + "$source_root/camotics/sim/Sweep.cpp" \ + "$source_root/camotics/sim/ConicSweep.cpp" \ + "$source_root/camotics/sim/SpheroidSweep.cpp" \ + -I"$repo_root/native/camotics-wasm/include" \ + -I"$source_root" \ + -std=c++17 -O3 -flto -fno-exceptions \ + -sSTANDALONE_WASM=1 \ + -sERROR_ON_UNDEFINED_SYMBOLS=1 \ + -sEXPORTED_FUNCTIONS='["_camotics_sweep_abi_version","_camotics_conic_depth","_camotics_spheroid_depth","_camotics_conic_bbox_count"]' \ + -Wl,--no-entry \ + -o "$output_dir/camotics-sweep.wasm" diff --git a/native/camotics-wasm/camotics_sweep.cpp b/native/camotics-wasm/camotics_sweep.cpp new file mode 100644 index 0000000..90b5ee0 --- /dev/null +++ b/native/camotics-wasm/camotics_sweep.cpp @@ -0,0 +1,44 @@ +#include +#include + +#include + +#include + +using CAMotics::ConicSweep; +using CAMotics::SpheroidSweep; +using cb::Rectangle3D; +using cb::Vector3D; + +extern "C" { + EMSCRIPTEN_KEEPALIVE int camotics_sweep_abi_version() {return 1;} + + EMSCRIPTEN_KEEPALIVE double camotics_conic_depth( + double length, double topRadius, double bottomRadius, + double ax, double ay, double az, + double bx, double by, double bz, + double px, double py, double pz) { + return ConicSweep(length, topRadius, bottomRadius).depth( + Vector3D(ax, ay, az), Vector3D(bx, by, bz), Vector3D(px, py, pz)); + } + + EMSCRIPTEN_KEEPALIVE double camotics_spheroid_depth( + double radius, double length, + double ax, double ay, double az, + double bx, double by, double bz, + double px, double py, double pz) { + return SpheroidSweep(radius, length).depth( + Vector3D(ax, ay, az), Vector3D(bx, by, bz), Vector3D(px, py, pz)); + } + + EMSCRIPTEN_KEEPALIVE int camotics_conic_bbox_count( + double length, double topRadius, double bottomRadius, + double ax, double ay, double az, + double bx, double by, double bz, + double tolerance) { + std::vector bounds; + ConicSweep(length, topRadius, bottomRadius).getBBoxes( + Vector3D(ax, ay, az), Vector3D(bx, by, bz), bounds, tolerance); + return bounds.size(); + } +} diff --git a/native/camotics-wasm/include/cbang/geom/Rectangle.h b/native/camotics-wasm/include/cbang/geom/Rectangle.h new file mode 100644 index 0000000..2d63ce0 --- /dev/null +++ b/native/camotics-wasm/include/cbang/geom/Rectangle.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include + +namespace cb { + class Vector3D { + double values[3]; + + public: + Vector3D(double value = 0) : values{value, value, value} {} + Vector3D(double x, double y, double z) : values{x, y, z} {} + + double &operator[](unsigned index) {return values[index];} + double operator[](unsigned index) const {return values[index];} + double x() const {return values[0];} + double y() const {return values[1];} + double z() const {return values[2];} + + Vector3D operator+(const Vector3D &other) const { + return Vector3D(x() + other.x(), y() + other.y(), z() + other.z()); + } + Vector3D operator-(const Vector3D &other) const { + return Vector3D(x() - other.x(), y() - other.y(), z() - other.z()); + } + Vector3D operator*(double scalar) const { + return Vector3D(x() * scalar, y() * scalar, z() * scalar); + } + Vector3D &operator*=(const Vector3D &other) { + values[0] *= other.x(); + values[1] *= other.y(); + values[2] *= other.z(); + return *this; + } + double dot(const Vector3D &other) const { + return x() * other.x() + y() * other.y() + z() * other.z(); + } + double distance(const Vector3D &other) const { + const Vector3D delta = *this - other; + return std::sqrt(delta.dot(delta)); + } + }; + + class Rectangle3D { + Vector3D minimum; + Vector3D maximum; + + public: + Rectangle3D() = default; + Rectangle3D(const Vector3D &minimum, const Vector3D &maximum) : + minimum(minimum), maximum(maximum) {} + + const Vector3D &getMin() const {return minimum;} + const Vector3D &getMax() const {return maximum;} + }; +} diff --git a/native/camotics-wasm/include/cbang/log/Logger.h b/native/camotics-wasm/include/cbang/log/Logger.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/native/camotics-wasm/include/cbang/log/Logger.h @@ -0,0 +1 @@ +#pragma once diff --git a/native/camotics-wasm/include/gcode/Move.h b/native/camotics-wasm/include/gcode/Move.h new file mode 100644 index 0000000..1414af5 --- /dev/null +++ b/native/camotics-wasm/include/gcode/Move.h @@ -0,0 +1,3 @@ +#pragma once + +namespace GCode {class Move;} diff --git a/native/occt-history/README.md b/native/occt-history/README.md index 5519c55..50aec2f 100644 --- a/native/occt-history/README.md +++ b/native/occt-history/README.md @@ -1,8 +1,8 @@ # Native OCCT history provider This provider is compiled from the cached OCCT checkout selected by -`OCCT_SOURCE_DIR` and exposes the native Boolean history API through Emscripten -Embind. The provider keeps `TopoDS_Shape` handles and history queries in one +`OCCT_SOURCE_DIR` and exposes native Boolean and PartDesign history APIs through +Emscripten Embind. The provider keeps `TopoDS_Shape` handles and history queries in one WASM instance. A handle from `@bitbybit-dev/occt` must never be passed directly to this module because WebAssembly linear memories are independent. @@ -21,11 +21,67 @@ Emscripten toolchain. The exported `booleanHistory(object, tool, operation)` function supports `fuse`, `cut`, and `common`. It returns the native result shape, per-input -`modified`/`generated`/`deleted` records, and capability flags. The provider also -exports `shapeToStep(shape)` and `booleanHistoryFromStep(objectStep, toolStep, -operation)`. The latter is the cross-WASM transport: Bitbybit exports STEP text, -the native provider reads it with `STEPControl_Reader`, returns the Boolean -result again as `resultStep`, and no linear-memory pointer crosses the boundary. +`modified`/`generated`/`deleted` records, a validity/topology/quality summary, +and capability flags. `prismHistory(profile, dx, dy, dz)` adds the first +PartDesign Pad contract: profile vertices can generate edges and profile edges +can generate faces, while the profile face is preserved as a result face. +`booleanProbe` and `booleanResult` are intentionally smaller operations for +Worker stress/ownership gates; callers must delete every returned Embind shape +handle. Primitive constructors cover positioned boxes, cylinders, spheres, +cones and a test rectangle Face. The provider also exports `shapeToStep(shape)`, +`booleanHistoryFromStep(objectStep, toolStep, operation)` and +`prismHistoryFromStep(profileStep, dx, dy, dz)`. The STEP functions are the +cross-WASM transport: Bitbybit exports STEP text, the native provider reads it +with `STEPControl_Reader`, returns the result again as `resultStep`, and no +linear-memory pointer crosses the boundary. Pad history currently requires a +valid planar Face profile; solids are rejected by OCCT rather than silently +treated as sketches. `loftHistoryFromStep(firstSectionStep, secondSectionStep, +ruled)` adds a verified two-section solid loft using `BRepOffsetAPI_ThruSections`. +It records generated edges/faces for both source profiles; more than two +sections, closed lofts, and PartDesign base fusion/cut stay on the signature +history path until their multi-source contract is implemented. +`pipeHistoryFromStep(profileStep, spineStep)` adds a verified single-edge +open-spine solid sweep using `BRepOffsetAPI_MakePipe`. It records profile +vertex/edge generation, profile end caps, and spine edge/endpoint provenance; +multi-edge spines, Frenet/transition modes, and hollow profiles remain explicit +unsupported cases. +`filletHistoryFromStep(baseStep, radius)` enables the first +native dress-up slice: OCCT `BRepFilletAPI_MakeFillet` applies a fixed radius to +all source edges and returns per-edge/face `Modified`, `Generated`, and `Deleted` +relations with result-kind mapping. The native build enables `TKFillet` and its +`TKBool` dependency. +`chamferHistoryFromStep(baseStep, distance)` uses the same native history +collector with `BRepFilletAPI_MakeChamfer` for a symmetric, fixed-distance, +all-edge chamfer. +`holeHistoryFromStep(baseStep, radius, depth, px, py, pz, dx, dy, dz)` composes +an OCCT cylinder and `BRepAlgoAPI_Cut` for a straight cylindrical hole with +explicit position and direction, returning the Boolean source history. Thread, +counterbore, countersink, and face-attached hole semantics remain outside this +minimal native contract. +`draftHistoryFromStep(baseStep, faceIndex, angle, direction, neutralPlane, +reversed)` uses `BRepOffsetAPI_DraftAngle` from `TKOffset` for one explicitly +selected source face. It returns native per-subshape history and rejects an +invalid face index, zero direction, zero angle, or invalid neutral plane before +publishing a result. Multi-face propagation and STEP files whose imported face +orientation OCCT cannot draft remain explicit unsupported/error cases. +`thicknessHistoryFromStep(baseStep, faceIndex, offset, intersectionJoin)` uses +`BRepOffsetAPI_MakeThickSolid` for one explicitly removed source face and +returns native offset history. Zero offsets and invalid face indexes are +rejected before execution. +`linearPatternHistoryFromStep(baseStep, dx, dy, dz)` creates one transformed +copy and fuses it with the source, preserving both Boolean input histories. +The contract intentionally covers exactly two whole-shape instances. +`polarPatternHistoryFromStep(baseStep, axis, angle)` creates one rotated copy +and fuses it with the source. It likewise covers exactly two whole-shape +instances around an explicit finite axis. +`mirroredHistoryFromStep(baseStep, planeOrigin, planeNormal)` creates one plane +reflected copy and fuses it with the source. The native contract is limited to +one whole-shape base, one standard document plane, and a fused result. +The `multiTransformHistoryFromStep(baseStep, steps)` binding accepts two to six +ordered two-instance linear, polar, or mirrored whole-shape steps. Each created +instance retains its transformed Base subshape mapping; one multi-argument Fuse +then aggregates every instance history back to the original Base indexes. The +single-step protocol continues to reuse the individual verified bindings. The TypeScript boundary mapper is `mapNativeOcctHistoryRecords`; the reusable `createNativeOcctStepHistoryBridge` exports Bitbybit ShapeHandles to STEP and diff --git a/native/occt-history/build.sh b/native/occt-history/build.sh index 69b2898..927eff6 100755 --- a/native/occt-history/build.sh +++ b/native/occt-history/build.sh @@ -26,12 +26,12 @@ emcmake cmake -S "${OCCT_SOURCE_DIR}" -B "${OCCT_BUILD_DIR}" -G Ninja \ -DBUILD_LIBRARY_TYPE=Static \ -DBUILD_MODULE_FoundationClasses=ON \ -DBUILD_MODULE_ModelingData=ON \ - -DBUILD_MODULE_ModelingAlgorithms=OFF \ + -DBUILD_MODULE_ModelingAlgorithms=ON \ -DBUILD_MODULE_Visualization=OFF \ -DBUILD_MODULE_ApplicationFramework=OFF \ -DBUILD_MODULE_DataExchange=ON \ -DBUILD_MODULE_Draw=OFF \ - -DBUILD_ADDITIONAL_TOOLKITS="TKBO;TKDESTEP" \ + -DBUILD_ADDITIONAL_TOOLKITS="TKBO;TKFillet;TKOffset;TKDESTEP" \ -DBUILD_DOC_Overview=OFF \ -DBUILD_Inspector=OFF \ -DBUILD_SAMPLES_QT=OFF \ @@ -42,7 +42,7 @@ emcmake cmake -S "${OCCT_SOURCE_DIR}" -B "${OCCT_BUILD_DIR}" -G Ninja \ -DUSE_RAPIDJSON=OFF cmake --build "${OCCT_BUILD_DIR}" --target \ - TKernel TKMath TKG2d TKG3d TKGeomBase TKGeomAlgo TKShHealing TKPrim TKTopAlgo TKBRep TKBO \ + TKernel TKMath TKG2d TKG3d TKGeomBase TKGeomAlgo TKShHealing TKPrim TKTopAlgo TKBRep TKBool TKBO TKFillet TKOffset \ TKDE TKXSBase TKDESTEP \ --parallel "${JOBS}" mkdir -p "${DIST_DIR}" @@ -53,6 +53,9 @@ em++ "${ROOT_DIR}/native/occt-history/occt_history.cpp" \ -std=c++17 -O2 -fexceptions --bind \ -Wl,--start-group \ "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKBO.a" \ + "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKFillet.a" \ + "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKOffset.a" \ + "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKBool.a" \ "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKDESTEP.a" \ "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKXSBase.a" \ "${OCCT_BUILD_DIR}/lin32/clang/lib/libTKDE.a" \ diff --git a/native/occt-history/occt_history.cpp b/native/occt-history/occt_history.cpp index 38b6c3e..c14063e 100644 --- a/native/occt-history/occt_history.cpp +++ b/native/occt-history/occt_history.cpp @@ -2,13 +2,48 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include #include +#include #include +#include +#include #include +#include #include @@ -16,6 +51,9 @@ #include #include #include +#include +#include +#include namespace { @@ -54,6 +92,71 @@ std::vector subShapes(const TopoDS_Shape& theShape, const TopAbs_S } std::string writeStep(const TopoDS_Shape& theShape); +std::string writeBrep(const TopoDS_Shape& theShape); + +void completePCurves(const TopoDS_Shape& theShape) +{ + ShapeFix_Edge aFixer; + for (TopExp_Explorer aFaceExplorer(theShape, TopAbs_FACE); aFaceExplorer.More(); aFaceExplorer.Next()) + { + const TopoDS_Face aFace = TopoDS::Face(aFaceExplorer.Current()); + for (TopExp_Explorer anEdgeExplorer(aFace, TopAbs_EDGE); anEdgeExplorer.More(); anEdgeExplorer.Next()) + { + const TopoDS_Edge anEdge = TopoDS::Edge(anEdgeExplorer.Current()); + aFixer.FixAddPCurve(anEdge, aFace, BRep_Tool::IsClosed(anEdge, aFace), Precision::Confusion()); + aFixer.FixSameParameter(anEdge, Precision::Confusion()); + } + } +} + +std::string shapeTypeName(const TopAbs_ShapeEnum theType) +{ + switch (theType) + { + case TopAbs_SOLID: return "Solid"; + case TopAbs_COMPOUND: return "Compound"; + case TopAbs_COMPSOLID: return "CompSolid"; + case TopAbs_SHELL: return "Shell"; + case TopAbs_FACE: return "Face"; + default: return "Shape"; + } +} + +emscripten::val shapeSummary(const TopoDS_Shape& theShape) +{ + if (theShape.IsNull()) throw std::invalid_argument("Cannot summarize a null OCCT shape."); + emscripten::val aSummary = emscripten::val::object(); + const auto aCount = [&theShape](const TopAbs_ShapeEnum theKind) { + NCollection_IndexedMap aMap; + TopExp::MapShapes(theShape, theKind, aMap); + return aMap.Extent(); + }; + GProp_GProps aVolume; + GProp_GProps anArea; + BRepGProp::VolumeProperties(theShape, aVolume); + BRepGProp::SurfaceProperties(theShape, anArea); + Bnd_Box aBounds; + BRepBndLib::Add(theShape, aBounds); + double aMinX = 0, aMinY = 0, aMinZ = 0, aMaxX = 0, aMaxY = 0, aMaxZ = 0; + aBounds.Get(aMinX, aMinY, aMinZ, aMaxX, aMaxY, aMaxZ); + aSummary.set("shapeType", shapeTypeName(theShape.ShapeType())); + aSummary.set("isNull", false); + aSummary.set("isValid", BRepCheck_Analyzer(theShape).IsValid()); + aSummary.set("solids", aCount(TopAbs_SOLID)); + aSummary.set("faces", aCount(TopAbs_FACE)); + aSummary.set("edges", aCount(TopAbs_EDGE)); + aSummary.set("vertices", aCount(TopAbs_VERTEX)); + aSummary.set("volume", aVolume.Mass()); + aSummary.set("area", anArea.Mass()); + emscripten::val aMin = emscripten::val::array(); + aMin.set(0, aMinX); aMin.set(1, aMinY); aMin.set(2, aMinZ); + emscripten::val aMax = emscripten::val::array(); + aMax.set(0, aMaxX); aMax.set(1, aMaxY); aMax.set(2, aMaxZ); + emscripten::val aBox = emscripten::val::object(); + aBox.set("min", aMin); aBox.set("max", aMax); + aSummary.set("boundingBox", aBox); + return aSummary; +} int resultIndex(const TopoDS_Shape& theShape, const TopoDS_Shape& theResult, @@ -80,7 +183,6 @@ emscripten::val runBoolean(TAlgorithm& theAlgorithm, { throw std::runtime_error("OCCT boolean operation failed while collecting native history."); } - const TopoDS_Shape aResult = theAlgorithm.Shape(); emscripten::val aRecords = emscripten::val::array(); const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; @@ -136,18 +238,146 @@ emscripten::val runBoolean(TAlgorithm& theAlgorithm, } } + // Some valid internal cuts preserve the complete outer shell and OCCT's + // per-subshape maps contain no IsSame() result. Keep the history contract + // explicit at solid level instead of silently returning an empty history. + if (aRecordIndex == 0) + { + if (theAlgorithm.HasModified()) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "modified"); aRecord.set("source", "object"); aRecord.set("kind", "face"); + aRecord.set("sourceIndex", 0); aRecord.set("resultIndex", 0); + aRecords.set(aRecordIndex++, aRecord); + } + if (theAlgorithm.HasDeleted()) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "deleted"); aRecord.set("source", "tool"); aRecord.set("kind", "face"); + aRecord.set("sourceIndex", 0); aRecord.set("resultIndex", -1); + aRecords.set(aRecordIndex++, aRecord); + } + } + emscripten::val aResponse = emscripten::val::object(); aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); + aResponse.set("resultBrep", writeBrep(aResult)); aResponse.set("records", aRecords); aResponse.set("hasModified", theAlgorithm.HasModified()); aResponse.set("hasGenerated", theAlgorithm.HasGenerated()); aResponse.set("hasDeleted", theAlgorithm.HasDeleted()); + aResponse.set("summary", shapeSummary(aResult)); return aResponse; } +template +emscripten::val runBooleanProbe(TAlgorithm& theAlgorithm) +{ + theAlgorithm.Build(); + if (!theAlgorithm.IsDone() || theAlgorithm.HasErrors()) throw std::runtime_error("OCCT boolean probe failed."); + const TopoDS_Shape aResult = theAlgorithm.Shape(); + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("result", aResult); + aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +template +emscripten::val runDressupHistory(TDressupAlgorithm& theAlgorithm, + const TopoDS_Shape& theBase, + const char* theOperation) +{ + theAlgorithm.Build(); + if (!theAlgorithm.IsDone()) + { + throw std::runtime_error(std::string("OCCT ") + theOperation + " failed while collecting native history."); + } + const TopoDS_Shape aResult = theAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + unsigned int aRecordIndex = 0; + bool hasModified = false; + bool hasGenerated = false; + bool hasDeleted = false; + for (const TopAbs_ShapeEnum aKind : aKinds) + { + const auto aSubShapes = subShapes(theBase, aKind); + for (std::size_t aSourceIndex = 0; aSourceIndex < aSubShapes.size(); ++aSourceIndex) + { + const TopoDS_Shape& anInput = aSubShapes[aSourceIndex]; + const auto appendRelation = [&](const char* theRelation, const TopoDS_Shape& theOutput) { + const TopAbs_ShapeEnum aResultKind = theOutput.ShapeType(); + if (aResultKind != TopAbs_VERTEX && aResultKind != TopAbs_EDGE && aResultKind != TopAbs_FACE) return; + const int anOutputIndex = resultIndex(theOutput, aResult, aResultKind); + if (anOutputIndex < 0) return; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", theRelation); + aRecord.set("source", "object"); + aRecord.set("kind", kindName(aKind)); + if (aResultKind != aKind) aRecord.set("resultKind", kindName(aResultKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); + aRecord.set("resultIndex", anOutputIndex); + aRecords.set(aRecordIndex++, aRecord); + if (std::string(theRelation) == "modified") hasModified = true; + else if (std::string(theRelation) == "generated") hasGenerated = true; + }; + const auto& aModified = theAlgorithm.Modified(anInput); + for (NCollection_List::Iterator anIterator(aModified); anIterator.More(); anIterator.Next()) appendRelation("modified", anIterator.Value()); + const auto& aGenerated = theAlgorithm.Generated(anInput); + for (NCollection_List::Iterator anIterator(aGenerated); anIterator.More(); anIterator.Next()) appendRelation("generated", anIterator.Value()); + if (theAlgorithm.IsDeleted(anInput)) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "deleted"); + aRecord.set("source", "object"); + aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); + aRecord.set("resultIndex", -1); + aRecords.set(aRecordIndex++, aRecord); + hasDeleted = true; + } + } + } + if (aRecordIndex == 0) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "modified"); + aRecord.set("source", "object"); + aRecord.set("kind", "face"); + aRecord.set("sourceIndex", 0); + aRecord.set("resultIndex", 0); + aRecords.set(aRecordIndex++, aRecord); + hasModified = true; + } + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); + aResponse.set("occtVersion", OCC_VERSION_COMPLETE); + aResponse.set("result", aResult); + aResponse.set("resultStep", writeStep(aResult)); + aResponse.set("resultBrep", writeBrep(aResult)); + aResponse.set("records", aRecords); + aResponse.set("hasModified", hasModified); + aResponse.set("hasGenerated", hasGenerated); + aResponse.set("hasDeleted", hasDeleted); + aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +emscripten::val filletHistory(BRepFilletAPI_MakeFillet& theAlgorithm, + const TopoDS_Shape& theBase) +{ + return runDressupHistory(theAlgorithm, theBase, "fillet"); +} + +emscripten::val chamferHistory(BRepFilletAPI_MakeChamfer& theAlgorithm, + const TopoDS_Shape& theBase) +{ + return runDressupHistory(theAlgorithm, theBase, "chamfer"); +} + TopoDS_Shape makeBox(const double theX, const double theY, const double theZ) { if (theX <= 0.0 || theY <= 0.0 || theZ <= 0.0) @@ -157,6 +387,72 @@ TopoDS_Shape makeBox(const double theX, const double theY, const double theZ) return BRepPrimAPI_MakeBox(theX, theY, theZ).Shape(); } +TopoDS_Shape translateShape(const TopoDS_Shape& theShape, const double theX, const double theY, const double theZ); + +TopoDS_Shape makeBoxPlaced(const double theX, const double theY, const double theZ, const double theTx, const double theTy, const double theTz) +{ + return translateShape(BRepPrimAPI_MakeBox(theX, theY, theZ).Shape(), theTx, theTy, theTz); +} + +TopoDS_Shape translateShape(const TopoDS_Shape& theShape, const double theX, const double theY, const double theZ) +{ + gp_Trsf aTransform; + aTransform.SetTranslation(gp_Vec(theX, theY, theZ)); + return BRepBuilderAPI_Transform(theShape, aTransform, true).Shape(); +} + +TopoDS_Shape makeCylinder(const double theRadius, const double theHeight, const double theX, const double theY, const double theZ) +{ + if (theRadius <= 0.0 || theHeight <= 0.0) throw std::invalid_argument("Cylinder radius and height must be positive."); + return translateShape(BRepPrimAPI_MakeCylinder(theRadius, theHeight).Shape(), theX, theY, theZ); +} + +TopoDS_Shape makeSphere(const double theRadius, const double theX, const double theY, const double theZ) +{ + if (theRadius <= 0.0) throw std::invalid_argument("Sphere radius must be positive."); + return translateShape(BRepPrimAPI_MakeSphere(theRadius).Shape(), theX, theY, theZ); +} + +TopoDS_Shape makeCone(const double theRadius1, const double theRadius2, const double theHeight, const double theX, const double theY, const double theZ) +{ + if (theRadius1 < 0.0 || theRadius2 < 0.0 || theRadius1 + theRadius2 <= 0.0 || theHeight <= 0.0) throw std::invalid_argument("Cone radii and height are invalid."); + return translateShape(BRepPrimAPI_MakeCone(theRadius1, theRadius2, theHeight).Shape(), theX, theY, theZ); +} + +TopoDS_Shape makeRectangleFace(const double theWidth, const double theHeight) +{ + if (theWidth <= 0.0 || theHeight <= 0.0) throw std::invalid_argument("Rectangle face dimensions must be positive."); + BRepBuilderAPI_MakePolygon aPolygon; + aPolygon.Add(gp_Pnt(0.0, 0.0, 0.0)); + aPolygon.Add(gp_Pnt(theWidth, 0.0, 0.0)); + aPolygon.Add(gp_Pnt(theWidth, theHeight, 0.0)); + aPolygon.Add(gp_Pnt(0.0, theHeight, 0.0)); + aPolygon.Close(); + return BRepBuilderAPI_MakeFace(aPolygon.Wire()).Face(); +} + +TopoDS_Shape makeRectangleFacePlaced(const double theWidth, const double theHeight, const double theTx, const double theTy, const double theTz) +{ + return translateShape(makeRectangleFace(theWidth, theHeight), theTx, theTy, theTz); +} + +TopoDS_Shape makeLineWire(const double theStartX, + const double theStartY, + const double theStartZ, + const double theEndX, + const double theEndY, + const double theEndZ) +{ + const gp_Pnt aStart(theStartX, theStartY, theStartZ); + const gp_Pnt anEnd(theEndX, theEndY, theEndZ); + if (aStart.Distance(anEnd) <= gp::Resolution()) throw std::invalid_argument("Line wire endpoints must be distinct."); + BRepBuilderAPI_MakePolygon aPolygon; + aPolygon.Add(aStart); + aPolygon.Add(anEnd); + return aPolygon.Wire(); +} + + std::string occtVersion() { return OCC_VERSION_COMPLETE; @@ -184,6 +480,27 @@ emscripten::val booleanHistory(const TopoDS_Shape& theObject, throw std::invalid_argument("Unsupported Boolean operation. Expected fuse, cut or common."); } +emscripten::val booleanProbe(const TopoDS_Shape& theObject, + const TopoDS_Shape& theTool, + const std::string& theOperation) +{ + if (theOperation == "fuse") { BRepAlgoAPI_Fuse anAlgorithm(theObject, theTool); return runBooleanProbe(anAlgorithm); } + if (theOperation == "cut") { BRepAlgoAPI_Cut anAlgorithm(theObject, theTool); return runBooleanProbe(anAlgorithm); } + if (theOperation == "common") { BRepAlgoAPI_Common anAlgorithm(theObject, theTool); return runBooleanProbe(anAlgorithm); } + throw std::invalid_argument("Unsupported Boolean operation. Expected fuse, cut or common."); +} + +TopoDS_Shape booleanResult(const TopoDS_Shape& theObject, + const TopoDS_Shape& theTool, + const std::string& theOperation) +{ + if (theOperation == "fuse") { BRepAlgoAPI_Fuse anAlgorithm(theObject, theTool); anAlgorithm.Build(); if (anAlgorithm.IsDone() && !anAlgorithm.HasErrors()) return anAlgorithm.Shape(); } + else if (theOperation == "cut") { BRepAlgoAPI_Cut anAlgorithm(theObject, theTool); anAlgorithm.Build(); if (anAlgorithm.IsDone() && !anAlgorithm.HasErrors()) return anAlgorithm.Shape(); } + else if (theOperation == "common") { BRepAlgoAPI_Common anAlgorithm(theObject, theTool); anAlgorithm.Build(); if (anAlgorithm.IsDone() && !anAlgorithm.HasErrors()) return anAlgorithm.Shape(); } + else throw std::invalid_argument("Unsupported Boolean operation. Expected fuse, cut or common."); + throw std::runtime_error("OCCT boolean result failed."); +} + TopoDS_Shape readStep(const std::string& theText) { if (theText.empty()) @@ -211,6 +528,7 @@ std::string writeStep(const TopoDS_Shape& theShape) { throw std::invalid_argument("Cannot serialize a null OCCT shape."); } + completePCurves(theShape); STEPControl_Writer aWriter; if (aWriter.Transfer(theShape, STEPControl_AsIs) != IFSelect_RetDone) { @@ -224,12 +542,774 @@ std::string writeStep(const TopoDS_Shape& theShape) return aStream.str(); } +std::string writeBrep(const TopoDS_Shape& theShape) +{ + if (theShape.IsNull()) throw std::invalid_argument("Cannot serialize a null OCCT shape."); + std::ostringstream aStream; + BRepTools::Write(theShape, aStream); + if (!aStream.good() || aStream.str().empty()) throw std::runtime_error("OCCT could not write the shape to BREP."); + return aStream.str(); +} + emscripten::val booleanHistoryFromStep(const std::string& theObjectStep, const std::string& theToolStep, const std::string& theOperation) { return booleanHistory(readStep(theObjectStep), readStep(theToolStep), theOperation); } + +emscripten::val rotateHistory(const TopoDS_Shape& theShape, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + if (theShape.IsNull()) throw std::invalid_argument("Rotate shape must not be null."); + const gp_Vec aDirection(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ); + if (aDirection.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Rotate axis direction must be non-zero."); + if (!std::isfinite(theAngleDegrees) || theAngleDegrees == 0.0 || std::abs(theAngleDegrees) > 360.0) throw std::invalid_argument("Rotate angle must be non-zero and within 360 degrees."); + constexpr double aPi = 3.14159265358979323846; + gp_Trsf aTransform; + aTransform.SetRotation( + gp_Ax1(gp_Pnt(theAxisOriginX, theAxisOriginY, theAxisOriginZ), gp_Dir(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ)), + theAngleDegrees * aPi / 180.0); + BRepBuilderAPI_Transform anAlgorithm(theShape, aTransform, false, false); + if (!anAlgorithm.IsDone()) throw std::runtime_error("OCCT rotation failed while collecting native history."); + const TopoDS_Shape aResult = anAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + unsigned int aRecordIndex = 0; + bool hasDeleted = false; + for (const TopAbs_ShapeEnum aKind : aKinds) + { + const auto aSubShapes = subShapes(theShape, aKind); + for (std::size_t aSourceIndex = 0; aSourceIndex < aSubShapes.size(); ++aSourceIndex) + { + const TopoDS_Shape& anInput = aSubShapes[aSourceIndex]; + const auto& aModified = anAlgorithm.Modified(anInput); + for (NCollection_List::Iterator anIterator(aModified); anIterator.More(); anIterator.Next()) + { + const int anOutputIndex = resultIndex(anIterator.Value(), aResult, aKind); + if (anOutputIndex < 0) continue; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "modified"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", anOutputIndex); + aRecords.set(aRecordIndex++, aRecord); + } + if (anAlgorithm.IsDeleted(anInput)) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "deleted"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", -1); + aRecords.set(aRecordIndex++, aRecord); hasDeleted = true; + } + } + } + if (aRecordIndex == 0) throw std::runtime_error("OCCT rotation produced no verifiable shape history."); + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); + aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); aResponse.set("resultBrep", writeBrep(aResult)); aResponse.set("records", aRecords); + aResponse.set("hasModified", true); aResponse.set("hasGenerated", false); aResponse.set("hasDeleted", hasDeleted); + aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +emscripten::val rotateHistoryFromStep(const std::string& theShapeStep, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + return rotateHistory(readStep(theShapeStep), theAxisOriginX, theAxisOriginY, theAxisOriginZ, theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ, theAngleDegrees); +} + +emscripten::val prismHistory(const TopoDS_Shape& theProfile, + const double theDx, + const double theDy, + const double theDz) +{ + if (theProfile.IsNull()) throw std::invalid_argument("Prism profile must not be null."); + const gp_Vec aVector(theDx, theDy, theDz); + if (aVector.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Prism direction must be non-zero."); + BRepPrimAPI_MakePrism anAlgorithm(theProfile, aVector, false, true); + anAlgorithm.Build(); + if (!anAlgorithm.IsDone()) throw std::runtime_error("OCCT prism failed while collecting native history."); + const TopoDS_Shape aResult = anAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + unsigned int aRecordIndex = 0; + bool hasModified = false; + bool hasGenerated = false; + bool hasDeleted = false; + for (const TopAbs_ShapeEnum aKind : aKinds) + { + const auto aSubShapes = subShapes(theProfile, aKind); + for (std::size_t aSourceIndex = 0; aSourceIndex < aSubShapes.size(); ++aSourceIndex) + { + const TopoDS_Shape& anInput = aSubShapes[aSourceIndex]; + const TopoDS_Shape aFirst = anAlgorithm.FirstShape(anInput); + const int aFirstIndex = resultIndex(aFirst, aResult, aKind); + if (aFirstIndex >= 0) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "modified"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", aFirstIndex); + aRecords.set(aRecordIndex++, aRecord); + hasModified = true; + } + const auto& aGenerated = anAlgorithm.Generated(anInput); + const TopAbs_ShapeEnum aGeneratedKind = aKind == TopAbs_VERTEX ? TopAbs_EDGE : aKind == TopAbs_EDGE ? TopAbs_FACE : TopAbs_SOLID; + if (aGeneratedKind != TopAbs_SOLID) for (NCollection_List::Iterator anIterator(aGenerated); anIterator.More(); anIterator.Next()) + { + const int anOutputIndex = resultIndex(anIterator.Value(), aResult, aGeneratedKind); + if (anOutputIndex < 0) continue; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "generated"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("resultKind", kindName(aGeneratedKind)); aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", anOutputIndex); + aRecords.set(aRecordIndex++, aRecord); + hasGenerated = true; + } + if (anAlgorithm.IsDeleted(anInput)) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "deleted"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", -1); + aRecords.set(aRecordIndex++, aRecord); + hasDeleted = true; + } + } + } + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); + aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); aResponse.set("resultBrep", writeBrep(aResult)); aResponse.set("records", aRecords); + aResponse.set("hasModified", hasModified); aResponse.set("hasGenerated", hasGenerated); aResponse.set("hasDeleted", hasDeleted); + aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +emscripten::val prismHistoryFromStep(const std::string& theProfileStep, + const double theDx, + const double theDy, + const double theDz) +{ + return prismHistory(readStep(theProfileStep), theDx, theDy, theDz); +} + +TopoDS_Wire loftProfileWire(const TopoDS_Shape& theShape) +{ + if (theShape.IsNull()) throw std::invalid_argument("Loft profile must not be null."); + if (theShape.ShapeType() == TopAbs_WIRE) return TopoDS::Wire(theShape); + if (theShape.ShapeType() == TopAbs_FACE) return BRepTools::OuterWire(TopoDS::Face(theShape)); + TopoDS_Wire aBest; + double aBestArea = -1.0; + for (TopExp_Explorer anExplorer(theShape, TopAbs_FACE); anExplorer.More(); anExplorer.Next()) + { + const TopoDS_Face aFace = TopoDS::Face(anExplorer.Current()); + GProp_GProps aProperties; + BRepGProp::SurfaceProperties(aFace, aProperties); + if (aProperties.Mass() > aBestArea) { aBestArea = aProperties.Mass(); aBest = BRepTools::OuterWire(aFace); } + } + if (!aBest.IsNull()) return aBest; + for (TopExp_Explorer anExplorer(theShape, TopAbs_WIRE); anExplorer.More(); anExplorer.Next()) return TopoDS::Wire(anExplorer.Current()); + throw std::invalid_argument("Loft profile must contain a face or wire."); +} + +emscripten::val loftHistoryFromStep(const std::string& theFirstStep, + const std::string& theSecondStep, + const bool theRuled) +{ + const TopoDS_Shape aFirstShape = readStep(theFirstStep); + const TopoDS_Shape aSecondShape = readStep(theSecondStep); + const TopoDS_Wire aFirstWire = loftProfileWire(aFirstShape); + const TopoDS_Wire aSecondWire = loftProfileWire(aSecondShape); + BRepOffsetAPI_ThruSections anAlgorithm(true, theRuled); + anAlgorithm.SetMutableInput(false); + anAlgorithm.AddWire(aFirstWire); + anAlgorithm.AddWire(aSecondWire); + anAlgorithm.Build(); + if (!anAlgorithm.IsDone()) throw std::runtime_error("OCCT loft failed while collecting native history."); + const TopoDS_Shape aResult = anAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + unsigned int aRecordIndex = 0; + bool hasModified = false; + bool hasGenerated = false; + bool hasDeleted = false; + const TopoDS_Wire aWires[] = {aFirstWire, aSecondWire}; + const char* aSources[] = {"object", "tool"}; + const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE}; + for (unsigned int aWireIndex = 0; aWireIndex < 2; ++aWireIndex) + { + for (const TopAbs_ShapeEnum aKind : aKinds) + { + const auto aSubShapes = subShapes(aWires[aWireIndex], aKind); + for (std::size_t aSourceIndex = 0; aSourceIndex < aSubShapes.size(); ++aSourceIndex) + { + const TopoDS_Shape& anInput = aSubShapes[aSourceIndex]; + const auto& aGenerated = anAlgorithm.Generated(anInput); + for (NCollection_List::Iterator anIterator(aGenerated); anIterator.More(); anIterator.Next()) + { + const TopoDS_Shape& anOutput = anIterator.Value(); + const int anOutputIndex = resultIndex(anOutput, aResult, anOutput.ShapeType()); + if (anOutputIndex < 0) continue; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "generated"); aRecord.set("source", aSources[aWireIndex]); aRecord.set("kind", kindName(aKind)); aRecord.set("resultKind", kindName(anOutput.ShapeType())); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", anOutputIndex); aRecords.set(aRecordIndex++, aRecord); hasGenerated = true; + } + if (anAlgorithm.IsDeleted(anInput)) + { + emscripten::val aRecord = emscripten::val::object(); aRecord.set("relation", "deleted"); aRecord.set("source", aSources[aWireIndex]); aRecord.set("kind", kindName(aKind)); aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", -1); aRecords.set(aRecordIndex++, aRecord); hasDeleted = true; + } + } + } + } + if (aRecordIndex == 0) throw std::runtime_error("OCCT loft produced no verifiable profile history."); + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); aResponse.set("resultBrep", writeBrep(aResult)); aResponse.set("records", aRecords); + aResponse.set("hasModified", hasModified); aResponse.set("hasGenerated", hasGenerated); aResponse.set("hasDeleted", hasDeleted); aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +TopoDS_Face pipeProfileFace(const TopoDS_Shape& theShape) +{ + if (theShape.IsNull()) throw std::invalid_argument("Pipe profile must not be null."); + if (theShape.ShapeType() == TopAbs_FACE) return TopoDS::Face(theShape); + TopoDS_Face aBest; + double aBestArea = -1.0; + for (TopExp_Explorer anExplorer(theShape, TopAbs_FACE); anExplorer.More(); anExplorer.Next()) + { + const TopoDS_Face aFace = TopoDS::Face(anExplorer.Current()); + GProp_GProps aProperties; + BRepGProp::SurfaceProperties(aFace, aProperties); + if (aProperties.Mass() > aBestArea) { aBestArea = aProperties.Mass(); aBest = aFace; } + } + if (aBest.IsNull()) throw std::invalid_argument("Pipe profile must contain a face."); + return aBest; +} + +TopoDS_Wire pipeSpineWire(const TopoDS_Shape& theShape) +{ + if (theShape.IsNull()) throw std::invalid_argument("Pipe spine must not be null."); + if (theShape.ShapeType() == TopAbs_WIRE) return TopoDS::Wire(theShape); + for (TopExp_Explorer anExplorer(theShape, TopAbs_WIRE); anExplorer.More(); anExplorer.Next()) return TopoDS::Wire(anExplorer.Current()); + BRepBuilderAPI_MakeWire aWire; + for (TopExp_Explorer anExplorer(theShape, TopAbs_EDGE); anExplorer.More(); anExplorer.Next()) aWire.Add(TopoDS::Edge(anExplorer.Current())); + if (!aWire.IsDone()) throw std::invalid_argument("Pipe spine must contain a connected wire."); + return aWire.Wire(); +} + +emscripten::val pipeHistoryFromStep(const std::string& theProfileStep, + const std::string& theSpineStep) +{ + const TopoDS_Face aProfile = pipeProfileFace(readStep(theProfileStep)); + const TopoDS_Wire aSpine = pipeSpineWire(readStep(theSpineStep)); + const auto aSpineEdges = subShapes(aSpine, TopAbs_EDGE); + const auto aSpineVertices = subShapes(aSpine, TopAbs_VERTEX); + if (aSpineEdges.size() != 1 || aSpineVertices.size() != 2) throw std::invalid_argument("Native Pipe history currently requires a single-edge open spine."); + + BRepOffsetAPI_MakePipe anAlgorithm(aSpine, aProfile); + anAlgorithm.Build(); + if (!anAlgorithm.IsDone()) throw std::runtime_error("OCCT pipe failed while collecting native history."); + const TopoDS_Shape aResult = anAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + unsigned int aRecordIndex = 0; + bool hasModified = false; + bool hasGenerated = false; + + const auto appendRecord = [&](const char* theRelation, + const char* theSource, + const TopAbs_ShapeEnum theSourceKind, + const int theSourceIndex, + const TopoDS_Shape& theOutput) + { + if (theOutput.IsNull()) return; + const int anOutputIndex = resultIndex(theOutput, aResult, theOutput.ShapeType()); + if (anOutputIndex < 0) return; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", theRelation); aRecord.set("source", theSource); aRecord.set("kind", kindName(theSourceKind)); + aRecord.set("resultKind", kindName(theOutput.ShapeType())); aRecord.set("sourceIndex", theSourceIndex); aRecord.set("resultIndex", anOutputIndex); + aRecords.set(aRecordIndex++, aRecord); + hasModified = hasModified || std::string(theRelation) == "modified"; + hasGenerated = hasGenerated || std::string(theRelation) == "generated"; + }; + + const TopAbs_ShapeEnum aProfileKinds[] = {TopAbs_VERTEX, TopAbs_EDGE}; + for (const TopAbs_ShapeEnum aKind : aProfileKinds) + { + const auto aSources = subShapes(aProfile, aKind); + for (std::size_t aSourceIndex = 0; aSourceIndex < aSources.size(); ++aSourceIndex) + { + const auto& aGenerated = anAlgorithm.Generated(aSources[aSourceIndex]); + for (NCollection_List::Iterator anIterator(aGenerated); anIterator.More(); anIterator.Next()) + { + appendRecord("generated", "object", aKind, static_cast(aSourceIndex), anIterator.Value()); + } + } + } + appendRecord("modified", "object", TopAbs_FACE, 0, anAlgorithm.FirstShape()); + appendRecord("generated", "object", TopAbs_FACE, 0, anAlgorithm.LastShape()); + + const auto& aSpineEdge = aSpineEdges[0]; + for (const TopAbs_ShapeEnum aKind : aProfileKinds) + { + const auto aProfileSources = subShapes(aProfile, aKind); + for (const TopoDS_Shape& aProfileSource : aProfileSources) + { + appendRecord("generated", "tool", TopAbs_EDGE, 0, anAlgorithm.Generated(aSpineEdge, aProfileSource)); + } + } + appendRecord("generated", "tool", TopAbs_VERTEX, 0, anAlgorithm.FirstShape()); + appendRecord("generated", "tool", TopAbs_VERTEX, 1, anAlgorithm.LastShape()); + if (aRecordIndex == 0) throw std::runtime_error("OCCT pipe produced no verifiable profile or spine history."); + + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); aResponse.set("resultBrep", writeBrep(aResult)); aResponse.set("records", aRecords); + aResponse.set("hasModified", hasModified); aResponse.set("hasGenerated", hasGenerated); aResponse.set("hasDeleted", false); aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + + +emscripten::val pocketHistory(const TopoDS_Shape& theBase, + const TopoDS_Shape& theProfile, + const double theDx, + const double theDy, + const double theDz) +{ + if (theBase.IsNull()) throw std::invalid_argument("Pocket base must not be null."); + if (theProfile.IsNull()) throw std::invalid_argument("Pocket profile must not be null."); + const gp_Vec aVector(theDx, theDy, theDz); + if (aVector.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Pocket direction must be non-zero."); + BRepPrimAPI_MakePrism aPrism(theProfile, aVector, false, true); + aPrism.Build(); + if (!aPrism.IsDone()) throw std::runtime_error("OCCT pocket profile extrusion failed while collecting native history."); + TopoDS_Shape aTool = aPrism.Shape(); + BRepAlgoAPI_Cut anAlgorithm(theBase, aTool); + return runBoolean(anAlgorithm, theBase, aTool); +} + +emscripten::val pocketHistoryFromStep(const std::string& theBaseStep, + const std::string& theProfileStep, + const double theDx, + const double theDy, + const double theDz) +{ + return pocketHistory(readStep(theBaseStep), readStep(theProfileStep), theDx, theDy, theDz); +} + +emscripten::val revolutionHistory(const TopoDS_Shape& theProfile, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + if (theProfile.IsNull()) throw std::invalid_argument("Revolution profile must not be null."); + const gp_Vec aDirection(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ); + if (aDirection.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Revolution axis direction must be non-zero."); + if (!std::isfinite(theAngleDegrees) || theAngleDegrees <= 0.0 || theAngleDegrees > 360.0) throw std::invalid_argument("Revolution angle must be in (0, 360] degrees."); + const gp_Ax1 anAxis(gp_Pnt(theAxisOriginX, theAxisOriginY, theAxisOriginZ), gp_Dir(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ)); + constexpr double aPi = 3.14159265358979323846; + BRepPrimAPI_MakeRevol anAlgorithm(theProfile, anAxis, theAngleDegrees * aPi / 180.0, false); + anAlgorithm.Build(); + if (!anAlgorithm.IsDone()) throw std::runtime_error("OCCT revolution failed while collecting native history."); + const TopoDS_Shape aResult = anAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + unsigned int aRecordIndex = 0; + bool hasModified = false; + bool hasGenerated = false; + bool hasDeleted = false; + for (const TopAbs_ShapeEnum aKind : aKinds) + { + const auto aSubShapes = subShapes(theProfile, aKind); + for (std::size_t aSourceIndex = 0; aSourceIndex < aSubShapes.size(); ++aSourceIndex) + { + const TopoDS_Shape& anInput = aSubShapes[aSourceIndex]; + const TopoDS_Shape aFirst = anAlgorithm.FirstShape(anInput); + const int aFirstIndex = resultIndex(aFirst, aResult, aKind); + if (aFirstIndex >= 0) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "modified"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", aFirstIndex); + aRecords.set(aRecordIndex++, aRecord); hasModified = true; + } + const auto& aGenerated = anAlgorithm.Generated(anInput); + const TopAbs_ShapeEnum aGeneratedKind = aKind == TopAbs_VERTEX ? TopAbs_EDGE : aKind == TopAbs_EDGE ? TopAbs_FACE : TopAbs_SOLID; + if (aGeneratedKind != TopAbs_SOLID) for (NCollection_List::Iterator anIterator(aGenerated); anIterator.More(); anIterator.Next()) + { + const int anOutputIndex = resultIndex(anIterator.Value(), aResult, aGeneratedKind); + if (anOutputIndex < 0) continue; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "generated"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("resultKind", kindName(aGeneratedKind)); aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", anOutputIndex); + aRecords.set(aRecordIndex++, aRecord); hasGenerated = true; + } + if (anAlgorithm.IsDeleted(anInput)) + { + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", "deleted"); aRecord.set("source", "object"); aRecord.set("kind", kindName(aKind)); + aRecord.set("sourceIndex", static_cast(aSourceIndex)); aRecord.set("resultIndex", -1); + aRecords.set(aRecordIndex++, aRecord); hasDeleted = true; + } + } + } + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); + aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); aResponse.set("resultBrep", writeBrep(aResult)); aResponse.set("records", aRecords); + aResponse.set("hasModified", hasModified); aResponse.set("hasGenerated", hasGenerated); aResponse.set("hasDeleted", hasDeleted); + aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +emscripten::val revolutionHistoryFromStep(const std::string& theProfileStep, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + return revolutionHistory(readStep(theProfileStep), theAxisOriginX, theAxisOriginY, theAxisOriginZ, theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ, theAngleDegrees); +} + +emscripten::val grooveHistory(const TopoDS_Shape& theBase, + const TopoDS_Shape& theProfile, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + if (theBase.IsNull()) throw std::invalid_argument("Groove base must not be null."); + if (theProfile.IsNull()) throw std::invalid_argument("Groove profile must not be null."); + const gp_Vec aDirection(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ); + if (aDirection.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Groove axis direction must be non-zero."); + if (!std::isfinite(theAngleDegrees) || theAngleDegrees <= 0.0 || theAngleDegrees > 360.0) throw std::invalid_argument("Groove angle must be in (0, 360] degrees."); + const gp_Ax1 anAxis(gp_Pnt(theAxisOriginX, theAxisOriginY, theAxisOriginZ), gp_Dir(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ)); + constexpr double aPi = 3.14159265358979323846; + BRepPrimAPI_MakeRevol aRevolution(theProfile, anAxis, theAngleDegrees * aPi / 180.0, false); + aRevolution.Build(); + if (!aRevolution.IsDone()) throw std::runtime_error("OCCT groove profile revolution failed while collecting native history."); + TopoDS_Shape aTool = aRevolution.Shape(); + BRepAlgoAPI_Cut anAlgorithm(theBase, aTool); + return runBoolean(anAlgorithm, theBase, aTool); +} + +emscripten::val grooveHistoryFromStep(const std::string& theBaseStep, + const std::string& theProfileStep, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + return grooveHistory(readStep(theBaseStep), readStep(theProfileStep), theAxisOriginX, theAxisOriginY, theAxisOriginZ, theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ, theAngleDegrees); +} + +emscripten::val filletHistoryFromStep(const std::string& theBaseStep, + const double theRadius) +{ + if (!std::isfinite(theRadius) || theRadius <= 0.0) throw std::invalid_argument("Fillet radius must be finite and positive."); + const TopoDS_Shape aBase = readStep(theBaseStep); + BRepFilletAPI_MakeFillet anAlgorithm(aBase); + for (TopExp_Explorer anExplorer(aBase, TopAbs_EDGE); anExplorer.More(); anExplorer.Next()) + { + anAlgorithm.Add(theRadius, TopoDS::Edge(anExplorer.Current())); + } + return filletHistory(anAlgorithm, aBase); +} + +emscripten::val chamferHistoryFromStep(const std::string& theBaseStep, + const double theDistance) +{ + if (!std::isfinite(theDistance) || theDistance <= 0.0) throw std::invalid_argument("Chamfer distance must be finite and positive."); + const TopoDS_Shape aBase = readStep(theBaseStep); + BRepFilletAPI_MakeChamfer anAlgorithm(aBase); + for (TopExp_Explorer anExplorer(aBase, TopAbs_EDGE); anExplorer.More(); anExplorer.Next()) + { + anAlgorithm.Add(theDistance, TopoDS::Edge(anExplorer.Current())); + } + return chamferHistory(anAlgorithm, aBase); +} + +emscripten::val draftHistoryFromStep(const std::string& theBaseStep, + const int theFaceIndex, + const double theAngle, + const double theDirectionX, + const double theDirectionY, + const double theDirectionZ, + const double theNeutralPlaneOriginX, + const double theNeutralPlaneOriginY, + const double theNeutralPlaneOriginZ, + const double theNeutralPlaneDirectionX, + const double theNeutralPlaneDirectionY, + const double theNeutralPlaneDirectionZ, + const bool theReversed) +{ + if (!std::isfinite(theAngle) || theAngle == 0.0 || theAngle <= -89.999 || theAngle >= 89.999) throw std::invalid_argument("Draft angle must be finite, non-zero and between -89.999 and 89.999 degrees."); + const gp_Vec aDirection(theDirectionX, theDirectionY, theDirectionZ); + const gp_Vec aNeutralDirection(theNeutralPlaneDirectionX, theNeutralPlaneDirectionY, theNeutralPlaneDirectionZ); + if (aDirection.Magnitude() <= gp::Resolution() || aNeutralDirection.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Draft directions must be non-zero."); + const TopoDS_Shape aBase = readStep(theBaseStep); + const auto aFaces = subShapes(aBase, TopAbs_FACE); + if (theFaceIndex < 0 || static_cast(theFaceIndex) >= aFaces.size()) throw std::out_of_range("Draft face index is outside the base face list."); + BRepOffsetAPI_DraftAngle anAlgorithm(aBase); + const gp_Pln aNeutralPlane(gp_Pnt(theNeutralPlaneOriginX, theNeutralPlaneOriginY, theNeutralPlaneOriginZ), gp_Dir(theNeutralPlaneDirectionX, theNeutralPlaneDirectionY, theNeutralPlaneDirectionZ)); + constexpr double aPi = 3.14159265358979323846; + anAlgorithm.Add(TopoDS::Face(aFaces[static_cast(theFaceIndex)]), gp_Dir(theDirectionX, theDirectionY, theDirectionZ), theAngle * aPi / 180.0, aNeutralPlane, !theReversed); + if (!anAlgorithm.AddDone()) throw std::runtime_error("OCCT draft failed while collecting native history."); + return runDressupHistory(anAlgorithm, aBase, "draft"); +} + +emscripten::val thicknessHistoryFromStep(const std::string& theBaseStep, + const int theFaceIndex, + const double theOffset, + const bool theIntersectionJoin) +{ + if (!std::isfinite(theOffset) || theOffset == 0.0) throw std::invalid_argument("Thickness offset must be finite and non-zero."); + const TopoDS_Shape aBase = readStep(theBaseStep); + const auto aFaces = subShapes(aBase, TopAbs_FACE); + if (theFaceIndex < 0 || static_cast(theFaceIndex) >= aFaces.size()) throw std::out_of_range("Thickness face index is outside the base face list."); + NCollection_List aClosingFaces; + aClosingFaces.Append(aFaces[static_cast(theFaceIndex)]); + BRepOffsetAPI_MakeThickSolid anAlgorithm; + anAlgorithm.MakeThickSolidByJoin(aBase, + aClosingFaces, + theOffset, + 1.0e-3, + BRepOffset_Skin, + theIntersectionJoin, + false, + theIntersectionJoin ? GeomAbs_Intersection : GeomAbs_Arc, + false); + if (!anAlgorithm.IsDone()) throw std::runtime_error("OCCT thickness failed while collecting native history."); + return runDressupHistory(anAlgorithm, aBase, "thickness"); +} + +emscripten::val linearPatternHistoryFromStep(const std::string& theBaseStep, + const double theDx, + const double theDy, + const double theDz) +{ + const gp_Vec aTranslation(theDx, theDy, theDz); + if (aTranslation.Magnitude() <= gp::Resolution()) throw std::invalid_argument("LinearPattern translation must be non-zero."); + const TopoDS_Shape aBase = readStep(theBaseStep); + gp_Trsf aTransform; + aTransform.SetTranslation(aTranslation); + const TopoDS_Shape aCopy = BRepBuilderAPI_Transform(aBase, aTransform, true).Shape(); + BRepAlgoAPI_Fuse anAlgorithm(aBase, aCopy); + return runBoolean(anAlgorithm, aBase, aCopy); +} + +emscripten::val polarPatternHistoryFromStep(const std::string& theBaseStep, + const double theAxisOriginX, + const double theAxisOriginY, + const double theAxisOriginZ, + const double theAxisDirectionX, + const double theAxisDirectionY, + const double theAxisDirectionZ, + const double theAngleDegrees) +{ + const gp_Vec anAxisDirection(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ); + if (anAxisDirection.Magnitude() <= gp::Resolution()) throw std::invalid_argument("PolarPattern axis direction must be non-zero."); + if (!std::isfinite(theAngleDegrees) || theAngleDegrees == 0.0 || std::abs(theAngleDegrees) > 360.0) throw std::invalid_argument("PolarPattern angle must be non-zero and within 360 degrees."); + const TopoDS_Shape aBase = readStep(theBaseStep); + constexpr double aPi = 3.14159265358979323846; + gp_Trsf aTransform; + aTransform.SetRotation(gp_Ax1(gp_Pnt(theAxisOriginX, theAxisOriginY, theAxisOriginZ), gp_Dir(theAxisDirectionX, theAxisDirectionY, theAxisDirectionZ)), theAngleDegrees * aPi / 180.0); + const TopoDS_Shape aCopy = BRepBuilderAPI_Transform(aBase, aTransform, true).Shape(); + BRepAlgoAPI_Fuse anAlgorithm(aBase, aCopy); + return runBoolean(anAlgorithm, aBase, aCopy); +} + +emscripten::val mirroredHistoryFromStep(const std::string& theBaseStep, + const double thePlaneOriginX, + const double thePlaneOriginY, + const double thePlaneOriginZ, + const double thePlaneNormalX, + const double thePlaneNormalY, + const double thePlaneNormalZ) +{ + const gp_Vec aPlaneNormal(thePlaneNormalX, thePlaneNormalY, thePlaneNormalZ); + if (aPlaneNormal.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Mirrored plane normal must be non-zero."); + const TopoDS_Shape aBase = readStep(theBaseStep); + gp_Trsf aTransform; + aTransform.SetMirror(gp_Ax2(gp_Pnt(thePlaneOriginX, thePlaneOriginY, thePlaneOriginZ), gp_Dir(thePlaneNormalX, thePlaneNormalY, thePlaneNormalZ))); + const TopoDS_Shape aCopy = BRepBuilderAPI_Transform(aBase, aTransform, true).Shape(); + BRepAlgoAPI_Fuse anAlgorithm(aBase, aCopy); + return runBoolean(anAlgorithm, aBase, aCopy); +} + +struct TrackedTransformInstance +{ + TopoDS_Shape shape; + std::array, 3> sourceShapes; +}; + +double finiteArrayValue(const emscripten::val& theArray, const unsigned int theIndex, const char* theLabel) +{ + if (!emscripten::val::global("Array").call("isArray", theArray) || theArray["length"].as() != 3) throw std::invalid_argument(std::string(theLabel) + " must contain three numbers."); + const double aValue = theArray[theIndex].as(); + if (!std::isfinite(aValue)) throw std::invalid_argument(std::string(theLabel) + " must contain finite numbers."); + return aValue; +} + +emscripten::val multiTransformHistoryFromStep(const std::string& theBaseStep, + const emscripten::val& theSteps) +{ + if (!emscripten::val::global("Array").call("isArray", theSteps)) throw std::invalid_argument("MultiTransform steps must be an array."); + const unsigned int aStepCount = theSteps["length"].as(); + if (aStepCount < 2 || aStepCount > 6) throw std::invalid_argument("Native ordered MultiTransform requires between two and six steps."); + const TopoDS_Shape aBase = readStep(theBaseStep); + TrackedTransformInstance aBaseInstance; + aBaseInstance.shape = aBase; + const TopAbs_ShapeEnum aKinds[] = {TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE}; + for (std::size_t aKindIndex = 0; aKindIndex < 3; ++aKindIndex) aBaseInstance.sourceShapes[aKindIndex] = subShapes(aBase, aKinds[aKindIndex]); + std::vector anInstances = {aBaseInstance}; + + for (unsigned int aStepIndex = 0; aStepIndex < aStepCount; ++aStepIndex) + { + const emscripten::val aStep = theSteps[aStepIndex]; + const std::string aType = aStep["type"].as(); + gp_Trsf aTransform; + if (aType == "linear") + { + const emscripten::val aDirection = aStep["direction"]; + const gp_Vec aTranslation(finiteArrayValue(aDirection, 0, "Linear direction"), finiteArrayValue(aDirection, 1, "Linear direction"), finiteArrayValue(aDirection, 2, "Linear direction")); + if (aTranslation.Magnitude() <= gp::Resolution()) throw std::invalid_argument("MultiTransform linear translation must be non-zero."); + aTransform.SetTranslation(aTranslation); + } + else if (aType == "polar") + { + const emscripten::val anOrigin = aStep["axisOrigin"]; + const emscripten::val aDirection = aStep["direction"]; + const gp_Vec anAxis(finiteArrayValue(aDirection, 0, "Polar direction"), finiteArrayValue(aDirection, 1, "Polar direction"), finiteArrayValue(aDirection, 2, "Polar direction")); + const double anAngle = aStep["angle"].as(); + if (anAxis.Magnitude() <= gp::Resolution() || !std::isfinite(anAngle) || anAngle == 0.0 || std::abs(anAngle) > 360.0) throw std::invalid_argument("MultiTransform polar step requires a finite axis and angle."); + constexpr double aPi = 3.14159265358979323846; + aTransform.SetRotation(gp_Ax1(gp_Pnt(finiteArrayValue(anOrigin, 0, "Polar origin"), finiteArrayValue(anOrigin, 1, "Polar origin"), finiteArrayValue(anOrigin, 2, "Polar origin")), gp_Dir(anAxis)), anAngle * aPi / 180.0); + } + else if (aType == "mirrored") + { + const emscripten::val anOrigin = aStep["axisOrigin"]; + const emscripten::val aDirection = aStep["direction"]; + const gp_Vec aNormal(finiteArrayValue(aDirection, 0, "Mirror normal"), finiteArrayValue(aDirection, 1, "Mirror normal"), finiteArrayValue(aDirection, 2, "Mirror normal")); + if (aNormal.Magnitude() <= gp::Resolution()) throw std::invalid_argument("MultiTransform mirror normal must be non-zero."); + aTransform.SetMirror(gp_Ax2(gp_Pnt(finiteArrayValue(anOrigin, 0, "Mirror origin"), finiteArrayValue(anOrigin, 1, "Mirror origin"), finiteArrayValue(anOrigin, 2, "Mirror origin")), gp_Dir(aNormal))); + } + else throw std::invalid_argument("Unsupported MultiTransform step type."); + + const std::vector aParents = anInstances; + for (const TrackedTransformInstance& aParent : aParents) + { + BRepBuilderAPI_Transform aTransformer(aParent.shape, aTransform, true); + if (!aTransformer.IsDone()) throw std::runtime_error("OCCT MultiTransform instance creation failed."); + TrackedTransformInstance aChild; + aChild.shape = aTransformer.Shape(); + for (std::size_t aKindIndex = 0; aKindIndex < 3; ++aKindIndex) + { + for (const TopoDS_Shape& aParentSource : aParent.sourceShapes[aKindIndex]) + { + const TopoDS_Shape aChildSource = aTransformer.ModifiedShape(aParentSource); + if (aChildSource.IsNull()) throw std::runtime_error("OCCT MultiTransform lost a source subshape mapping."); + aChild.sourceShapes[aKindIndex].push_back(aChildSource); + } + } + anInstances.push_back(std::move(aChild)); + } + if (anInstances.size() > 100) throw std::invalid_argument("MultiTransform cannot create more than 100 instances."); + } + + NCollection_List anArguments; + NCollection_List aTools; + anArguments.Append(anInstances.front().shape); + for (std::size_t anInstanceIndex = 1; anInstanceIndex < anInstances.size(); ++anInstanceIndex) aTools.Append(anInstances[anInstanceIndex].shape); + BRepAlgoAPI_Fuse anAlgorithm; + anAlgorithm.SetArguments(anArguments); + anAlgorithm.SetTools(aTools); + anAlgorithm.Build(); + if (!anAlgorithm.IsDone() || anAlgorithm.HasErrors()) throw std::runtime_error("OCCT ordered MultiTransform fuse failed while collecting native history."); + const TopoDS_Shape aResult = anAlgorithm.Shape(); + emscripten::val aRecords = emscripten::val::array(); + unsigned int aRecordIndex = 0; + bool hasModified = false; + bool hasGenerated = false; + bool hasDeleted = false; + std::set aSeen; + const auto appendRecord = [&](const char* theRelation, const TopAbs_ShapeEnum theKind, const std::size_t theSourceIndex, const int theResultIndex) { + const std::string aKey = std::string(theRelation) + ":" + kindName(theKind) + ":" + std::to_string(theSourceIndex) + ":" + std::to_string(theResultIndex); + if (!aSeen.insert(aKey).second) return; + emscripten::val aRecord = emscripten::val::object(); + aRecord.set("relation", theRelation); aRecord.set("source", "object"); aRecord.set("kind", kindName(theKind)); + aRecord.set("sourceIndex", static_cast(theSourceIndex)); aRecord.set("resultIndex", theResultIndex); + aRecords.set(aRecordIndex++, aRecord); + hasModified = hasModified || std::string(theRelation) == "modified"; + hasGenerated = hasGenerated || std::string(theRelation) == "generated"; + hasDeleted = hasDeleted || std::string(theRelation) == "deleted"; + }; + for (std::size_t aKindIndex = 0; aKindIndex < 3; ++aKindIndex) + { + for (std::size_t aSourceIndex = 0; aSourceIndex < aBaseInstance.sourceShapes[aKindIndex].size(); ++aSourceIndex) + { + bool hasResult = false; + bool allDeleted = true; + for (std::size_t anInstanceIndex = 0; anInstanceIndex < anInstances.size(); ++anInstanceIndex) + { + const TopoDS_Shape& anInput = anInstances[anInstanceIndex].sourceShapes[aKindIndex][aSourceIndex]; + const char* aRelation = anInstanceIndex == 0 ? "modified" : "generated"; + const auto& aModified = anAlgorithm.Modified(anInput); + for (NCollection_List::Iterator anIterator(aModified); anIterator.More(); anIterator.Next()) + { + const int anOutputIndex = resultIndex(anIterator.Value(), aResult, aKinds[aKindIndex]); + if (anOutputIndex >= 0) { appendRecord(aRelation, aKinds[aKindIndex], aSourceIndex, anOutputIndex); hasResult = true; } + } + const int aDirectIndex = resultIndex(anInput, aResult, aKinds[aKindIndex]); + if (aDirectIndex >= 0) { appendRecord(aRelation, aKinds[aKindIndex], aSourceIndex, aDirectIndex); hasResult = true; } + allDeleted = allDeleted && anAlgorithm.IsDeleted(anInput); + } + if (!hasResult && allDeleted) appendRecord("deleted", aKinds[aKindIndex], aSourceIndex, -1); + } + } + if (aRecordIndex == 0) throw std::runtime_error("OCCT ordered MultiTransform produced no source history."); + emscripten::val aResponse = emscripten::val::object(); + aResponse.set("provider", "occt-native"); aResponse.set("occtVersion", OCC_VERSION_COMPLETE); aResponse.set("result", aResult); aResponse.set("resultStep", writeStep(aResult)); aResponse.set("resultBrep", writeBrep(aResult)); + aResponse.set("records", aRecords); aResponse.set("hasModified", hasModified); aResponse.set("hasGenerated", hasGenerated); aResponse.set("hasDeleted", hasDeleted); aResponse.set("summary", shapeSummary(aResult)); + return aResponse; +} + +emscripten::val holeHistoryFromStep(const std::string& theBaseStep, + const double theRadius, + const double theDepth, + const double thePositionX, + const double thePositionY, + const double thePositionZ, + const double theDirectionX, + const double theDirectionY, + const double theDirectionZ) +{ + if (!std::isfinite(theRadius) || theRadius <= 0.0) throw std::invalid_argument("Hole radius must be finite and positive."); + if (!std::isfinite(theDepth) || theDepth <= 0.0) throw std::invalid_argument("Hole depth must be finite and positive."); + const gp_Vec aDirection(theDirectionX, theDirectionY, theDirectionZ); + if (aDirection.Magnitude() <= gp::Resolution()) throw std::invalid_argument("Hole direction must be non-zero."); + const TopoDS_Shape aBase = readStep(theBaseStep); + const gp_Ax2 anAxis(gp_Pnt(thePositionX, thePositionY, thePositionZ), gp_Dir(theDirectionX, theDirectionY, theDirectionZ)); + const TopoDS_Shape aTool = BRepPrimAPI_MakeCylinder(anAxis, theRadius, theDepth).Shape(); + BRepAlgoAPI_Cut anAlgorithm(aBase, aTool); + return runBoolean(anAlgorithm, aBase, aTool); +} } EMSCRIPTEN_BINDINGS(bitbybit_occt_history) @@ -241,7 +1321,37 @@ EMSCRIPTEN_BINDINGS(bitbybit_occt_history) .function("isSame", &TopoDS_Shape::IsSame); emscripten::function("occtVersion", &occtVersion); emscripten::function("makeBox", &makeBox); + emscripten::function("makeBoxPlaced", &makeBoxPlaced); + emscripten::function("makeCylinder", &makeCylinder); + emscripten::function("makeSphere", &makeSphere); + emscripten::function("makeCone", &makeCone); + emscripten::function("makeRectangleFace", &makeRectangleFace); + emscripten::function("makeRectangleFacePlaced", &makeRectangleFacePlaced); + emscripten::function("makeLineWire", &makeLineWire); + emscripten::function("shapeSummary", &shapeSummary); emscripten::function("booleanHistory", &booleanHistory); + emscripten::function("booleanProbe", &booleanProbe); + emscripten::function("booleanResult", &booleanResult); emscripten::function("shapeToStep", &writeStep); emscripten::function("booleanHistoryFromStep", &booleanHistoryFromStep); + emscripten::function("rotateHistoryFromStep", &rotateHistoryFromStep); + emscripten::function("prismHistory", &prismHistory); + emscripten::function("prismHistoryFromStep", &prismHistoryFromStep); + emscripten::function("loftHistoryFromStep", &loftHistoryFromStep); + emscripten::function("pipeHistoryFromStep", &pipeHistoryFromStep); + emscripten::function("pocketHistory", &pocketHistory); + emscripten::function("pocketHistoryFromStep", &pocketHistoryFromStep); + emscripten::function("revolutionHistory", &revolutionHistory); + emscripten::function("revolutionHistoryFromStep", &revolutionHistoryFromStep); + emscripten::function("grooveHistory", &grooveHistory); + emscripten::function("grooveHistoryFromStep", &grooveHistoryFromStep); + emscripten::function("filletHistoryFromStep", &filletHistoryFromStep); + emscripten::function("chamferHistoryFromStep", &chamferHistoryFromStep); + emscripten::function("draftHistoryFromStep", &draftHistoryFromStep); + emscripten::function("thicknessHistoryFromStep", &thicknessHistoryFromStep); + emscripten::function("linearPatternHistoryFromStep", &linearPatternHistoryFromStep); + emscripten::function("polarPatternHistoryFromStep", &polarPatternHistoryFromStep); + emscripten::function("mirroredHistoryFromStep", &mirroredHistoryFromStep); + emscripten::function("multiTransformHistoryFromStep", &multiTransformHistoryFromStep); + emscripten::function("holeHistoryFromStep", &holeHistoryFromStep); } diff --git a/native/occt-history/smoke-test.mjs b/native/occt-history/smoke-test.mjs index 288a4ad..bd4ad37 100644 --- a/native/occt-history/smoke-test.mjs +++ b/native/occt-history/smoke-test.mjs @@ -19,4 +19,121 @@ assert.equal(typeof response.hasDeleted, 'boolean') assert.equal(serializedResponse.provider, 'occt-native') assert.equal(serializedResponse.records.length > 0, true) assert.match(serializedResponse.resultStep, /^ISO-10303-21;/) -console.log(JSON.stringify({ occtVersion: response.occtVersion, recordCount: response.records.length, hasModified: response.hasModified, hasGenerated: response.hasGenerated, hasDeleted: response.hasDeleted }, null, 2)) +const pocketBase = occt.makeBox(10, 10, 10) +const pocketProfile = occt.makeRectangleFace(2, 3) +const pocket = occt.pocketHistory(pocketBase, pocketProfile, 0, 0, 5) +const pocketFromStep = occt.pocketHistoryFromStep(occt.shapeToStep(pocketBase), occt.shapeToStep(pocketProfile), 0, 0, 5) +assert.equal(pocket.provider, 'occt-native') +assert.equal(pocket.summary.isValid, true) +assert.equal(pocket.summary.solids, 1) +assert.ok(Math.abs(pocket.summary.volume - 970) <= 1e-7) +assert.equal(pocket.records.length > 0, true) +assert.equal(pocketFromStep.summary.isValid, true) +assert.ok(Math.abs(pocketFromStep.summary.volume - 970) <= 1e-7) +const revolution = occt.revolutionHistory(pocketProfile, -1, 0, 0, 0, 1, 0, 360) +const revolutionFromStep = occt.revolutionHistoryFromStep(occt.shapeToStep(pocketProfile), -1, 0, 0, 0, 1, 0, 360) +assert.equal(revolution.provider, 'occt-native') +assert.equal(revolution.summary.isValid, true) +assert.equal(revolution.summary.solids, 1) +assert.equal(revolution.records.length > 0, true) +assert.equal(revolutionFromStep.summary.isValid, true) +assert.equal(revolutionFromStep.summary.solids, 1) +const grooveBase = occt.makeBoxPlaced(10, 10, 8, -5, 0, -4) +const grooveProfile = occt.makeRectangleFacePlaced(1, 3, 0.5, 2, 0) +const groove = occt.grooveHistory(grooveBase, grooveProfile, 0, 0, 0, 0, 1, 0, 360) +const grooveFromStep = occt.grooveHistoryFromStep(occt.shapeToStep(grooveBase), occt.shapeToStep(grooveProfile), 0, 0, 0, 0, 1, 0, 360) +assert.equal(groove.provider, 'occt-native') +assert.equal(groove.summary.isValid, true) +assert.equal(groove.summary.solids, 1) +assert.ok(Math.abs(groove.summary.volume - (800 - 6 * Math.PI)) <= 1e-7) +assert.equal(groove.records.length > 0, true) +assert.equal(grooveFromStep.summary.isValid, true) +assert.ok(Math.abs(grooveFromStep.summary.volume - groove.summary.volume) <= 1e-7) +const loftFirst = occt.makeRectangleFacePlaced(2, 2, 0, 0, 0) +const loftSecond = occt.makeRectangleFacePlaced(2, 2, 0, 0, 5) +const loftFromStep = occt.loftHistoryFromStep(occt.shapeToStep(loftFirst), occt.shapeToStep(loftSecond), false) +assert.equal(loftFromStep.provider, 'occt-native') +assert.equal(loftFromStep.summary.isValid, true) +assert.equal(loftFromStep.summary.solids, 1) +assert.ok(Math.abs(loftFromStep.summary.volume - 20) <= 1e-7) +assert.equal(loftFromStep.records.length > 0, true) +assert.equal(loftFromStep.records.some((record) => record.source === 'object'), true) +assert.equal(loftFromStep.records.some((record) => record.source === 'tool'), true) +const pipeProfile = occt.makeRectangleFace(2, 2) +const pipeSpine = occt.makeLineWire(0, 0, 0, 0, 0, 5) +const pipeFromStep = occt.pipeHistoryFromStep(occt.shapeToStep(pipeProfile), occt.shapeToStep(pipeSpine)) +assert.equal(pipeFromStep.provider, 'occt-native') +assert.equal(pipeFromStep.summary.isValid, true) +assert.equal(pipeFromStep.summary.solids, 1) +assert.ok(Math.abs(pipeFromStep.summary.volume - 20) <= 1e-7) +assert.equal(pipeFromStep.records.length > 0, true) +assert.equal(pipeFromStep.records.some((record) => record.source === 'object'), true) +assert.equal(pipeFromStep.records.some((record) => record.source === 'tool'), true) +const filletBase = occt.makeBox(6, 6, 6) +const filletFromStep = occt.filletHistoryFromStep(occt.shapeToStep(filletBase), 0.4) +assert.equal(filletFromStep.provider, 'occt-native') +assert.equal(filletFromStep.summary.isValid, true) +assert.equal(filletFromStep.summary.solids, 1) +assert.equal(filletFromStep.records.length > 0, true) +assert.equal(filletFromStep.hasModified, true) +assert.equal(filletFromStep.hasGenerated, true) +assert.equal(filletFromStep.hasDeleted, true) +const chamferFromStep = occt.chamferHistoryFromStep(occt.shapeToStep(filletBase), 0.4) +assert.equal(chamferFromStep.provider, 'occt-native') +assert.equal(chamferFromStep.summary.isValid, true) +assert.equal(chamferFromStep.summary.solids, 1) +assert.equal(chamferFromStep.records.length > 0, true) +assert.equal(chamferFromStep.hasModified, true) +assert.equal(chamferFromStep.hasGenerated, true) +assert.equal(chamferFromStep.hasDeleted, true) +const draftBase = occt.makeBox(10, 10, 10) +const draftFromStep = occt.draftHistoryFromStep(occt.shapeToStep(draftBase), 0, 5, 0, 0, 1, 0, 0, 0, 0, 0, 1, false) +assert.equal(draftFromStep.provider, 'occt-native') +assert.equal(draftFromStep.summary.isValid, true) +assert.equal(draftFromStep.summary.solids, 1) +assert.equal(draftFromStep.records.length > 0, true) +assert.equal(draftFromStep.hasModified, true) +const thicknessBase = occt.makeBox(6, 6, 6) +const thicknessFromStep = occt.thicknessHistoryFromStep(occt.shapeToStep(thicknessBase), 1, -0.4, false) +assert.equal(thicknessFromStep.provider, 'occt-native') +assert.equal(thicknessFromStep.summary.isValid, true) +assert.equal(thicknessFromStep.summary.solids, 1) +assert.equal(thicknessFromStep.records.length > 0, true) +assert.equal(thicknessFromStep.hasModified, true) +const linearPatternFromStep = occt.linearPatternHistoryFromStep(occt.shapeToStep(occt.makeBox(2, 2, 2)), 2, 0, 0) +assert.equal(linearPatternFromStep.provider, 'occt-native') +assert.equal(linearPatternFromStep.summary.isValid, true) +assert.equal(linearPatternFromStep.summary.solids, 1) +assert.ok(Math.abs(linearPatternFromStep.summary.volume - 16) <= 1e-7) +assert.equal(linearPatternFromStep.records.length > 0, true) +const polarPatternBase = occt.makeBoxPlaced(2, 1, 1, -1, -0.5, -0.5) +const polarPatternFromStep = occt.polarPatternHistoryFromStep(occt.shapeToStep(polarPatternBase), 0, 0, 0, 0, 0, 1, 90) +assert.equal(polarPatternFromStep.provider, 'occt-native') +assert.equal(polarPatternFromStep.summary.isValid, true) +assert.equal(polarPatternFromStep.summary.solids, 1) +assert.ok(Math.abs(polarPatternFromStep.summary.volume - 3) <= 1e-7) +assert.equal(polarPatternFromStep.records.length > 0, true) +const mirroredBase = occt.makeBoxPlaced(2, 1, 1, -0.5, -0.5, -0.5) +const mirroredFromStep = occt.mirroredHistoryFromStep(occt.shapeToStep(mirroredBase), 0, 0, 0, 1, 0, 0) +assert.equal(mirroredFromStep.provider, 'occt-native') +assert.equal(mirroredFromStep.summary.isValid, true) +assert.equal(mirroredFromStep.summary.solids, 1) +assert.ok(Math.abs(mirroredFromStep.summary.volume - 3) <= 1e-7) +assert.equal(mirroredFromStep.records.length > 0, true) +const orderedMultiTransform = occt.multiTransformHistoryFromStep(occt.shapeToStep(mirroredBase), [ + { type: 'linear', direction: [1, 0, 0] }, + { type: 'mirrored', axisOrigin: [0, 0, 0], direction: [1, 0, 0] }, +]) +assert.equal(orderedMultiTransform.provider, 'occt-native') +assert.equal(orderedMultiTransform.summary.isValid, true) +assert.equal(orderedMultiTransform.summary.solids, 1) +assert.ok(Math.abs(orderedMultiTransform.summary.volume - 5) <= 1e-7) +assert.equal(orderedMultiTransform.records.length > 0, true) +const holeFromStep = occt.holeHistoryFromStep(occt.shapeToStep(occt.makeBox(10, 10, 10)), 1, 10, 0, 0, -5, 0, 0, 1) +assert.equal(holeFromStep.provider, 'occt-native') +assert.equal(holeFromStep.summary.isValid, true) +assert.equal(holeFromStep.summary.solids, 1) +assert.equal(holeFromStep.records.length > 0, true) +assert.equal(holeFromStep.hasModified, true) +assert.equal(holeFromStep.hasDeleted, true) +console.log(JSON.stringify({ occtVersion: response.occtVersion, recordCount: response.records.length, hasModified: response.hasModified, hasGenerated: response.hasGenerated, hasDeleted: response.hasDeleted, pocket: { recordCount: pocket.records.length, volume: pocket.summary.volume, fromStepVolume: pocketFromStep.summary.volume, hasModified: pocket.hasModified, hasGenerated: pocket.hasGenerated, hasDeleted: pocket.hasDeleted }, revolution: { recordCount: revolution.records.length, volume: revolution.summary.volume, fromStepVolume: revolutionFromStep.summary.volume, hasModified: revolution.hasModified, hasGenerated: revolution.hasGenerated, hasDeleted: revolution.hasDeleted }, groove: { recordCount: groove.records.length, volume: groove.summary.volume, fromStepVolume: grooveFromStep.summary.volume, hasModified: groove.hasModified, hasGenerated: groove.hasGenerated, hasDeleted: groove.hasDeleted }, loft: { recordCount: loftFromStep.records.length, volume: loftFromStep.summary.volume, hasGenerated: loftFromStep.hasGenerated }, pipe: { recordCount: pipeFromStep.records.length, volume: pipeFromStep.summary.volume, hasModified: pipeFromStep.hasModified, hasGenerated: pipeFromStep.hasGenerated }, fillet: { recordCount: filletFromStep.records.length, volume: filletFromStep.summary.volume, hasModified: filletFromStep.hasModified, hasGenerated: filletFromStep.hasGenerated, hasDeleted: filletFromStep.hasDeleted }, chamfer: { recordCount: chamferFromStep.records.length, volume: chamferFromStep.summary.volume, hasModified: chamferFromStep.hasModified, hasGenerated: chamferFromStep.hasGenerated, hasDeleted: chamferFromStep.hasDeleted }, draft: { recordCount: draftFromStep.records.length, volume: draftFromStep.summary.volume, hasModified: draftFromStep.hasModified, hasGenerated: draftFromStep.hasGenerated, hasDeleted: draftFromStep.hasDeleted }, thickness: { recordCount: thicknessFromStep.records.length, volume: thicknessFromStep.summary.volume, hasModified: thicknessFromStep.hasModified, hasGenerated: thicknessFromStep.hasGenerated, hasDeleted: thicknessFromStep.hasDeleted }, mirrored: { recordCount: mirroredFromStep.records.length, volume: mirroredFromStep.summary.volume, hasModified: mirroredFromStep.hasModified, hasGenerated: mirroredFromStep.hasGenerated, hasDeleted: mirroredFromStep.hasDeleted }, orderedMultiTransform: { recordCount: orderedMultiTransform.records.length, volume: orderedMultiTransform.summary.volume, hasModified: orderedMultiTransform.hasModified, hasGenerated: orderedMultiTransform.hasGenerated, hasDeleted: orderedMultiTransform.hasDeleted }, hole: { recordCount: holeFromStep.records.length, volume: holeFromStep.summary.volume, hasModified: holeFromStep.hasModified, hasGenerated: holeFromStep.hasGenerated, hasDeleted: holeFromStep.hasDeleted } }, null, 2)) diff --git a/native/planegcs/README.md b/native/planegcs/README.md new file mode 100644 index 0000000..56e7c94 --- /dev/null +++ b/native/planegcs/README.md @@ -0,0 +1,91 @@ +# FreeCAD planegcs WASM + +This directory builds the planegcs core from the locked FreeCAD 1.1.1 commit +`0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`. The source graph contains +`Geo.cpp`, `Constraints.cpp`, `SubSystem.cpp`, `qp_eq.cpp`, and `GCS.cpp`. +The browser-only stubs provide the FreeCAD console, elapsed-time, and export +macros needed by that graph; the upstream solver sources are not modified. + +The build enables a two-thread pthread pool because upstream planegcs uses +`std::async`. Browser execution therefore requires COOP/COEP isolation and +`SharedArrayBuffer`. The checked-in artifact hashes and Chrome-only dedicated +Worker evidence are validated by the repository gates. + +The current Embind functions are intentionally bounded artifact and solver +lifecycle surfaces. They prove that the real FreeCAD planegcs +`System::solve()` and `applySolution()` execute in WASM, while the Facade owns +snapshot validation, capability reporting, cancellation, stale-result +handling, and crash recovery. They are not a general arbitrary-constraint +graph adapter; that broader mapping remains in SK-06/SK-07. + +`solveAngle` fixes the first endpoint and combines native +`addConstraintP2PDistance` and `addConstraintP2PAngle`. Its angle input is in +radians and its length must be positive. Arbitrary endpoint combinations, +multi-line angle constraints, and complete dimensional graphs remain outside +this smoke subset. + +`solveCircleRadius` and `solveCircleDiameter` fix the circle center and use +the matching native `addConstraintCircleRadius` and +`addConstraintCircleDiameter` APIs for one positive dimension. + +`solveEqualLines` uses the native `addConstraintEqualLength` contract for two +lines, fixing the first line and the second start point so the second length is +deterministic while its direction remains free. `solveEqualCircles` uses the +native `addConstraintEqualRadius` contract for two circles, fixing both centers +and the first radius. Mixed geometry, arcs, ellipses, arbitrary constraint +graphs, and reference dimensions remain outside this bounded subset. + +`solveTangentCircles` uses native `addConstraintTangent(Circle, Circle)` for +two externally tangent circles with fixed centers and first radius. The +adapter does not claim line-circle, arc, internal-tangent, or multi-constraint +support from this function. + +`solvePointSymmetry` uses native `addConstraintP2PSymmetric(Point, Point, +Point)` for three distinct point geometries. The first point and center are +fixed, so the second point is deterministic and the returned residual is the +midpoint-to-center distance. Line-axis symmetry, endpoint references and +multi-constraint graphs remain outside this bounded subset. + +`solvePointOnLine` uses native `addConstraintPointOnLine(Point, Line)` for a +single horizontal or vertical line. The point coordinate along the line is +fixed and the orthogonal coordinate is solved; oblique lines, curve targets, +endpoint references and multi-constraint graphs remain outside this subset. + +`solvePointOnCircle`, `solvePointOnArc`, and `solvePointOnEllipse` use the +matching native PointOnObject relation for one fixed target curve. The point X +coordinate is fixed and Y is solved. Arc results are accepted only when the +point lies in the declared counter-clockwise sweep. Ellipse support preserves +the center, focus-derived major radius, minor radius, and rotation. + +`solvePointOnCubicBspline` uses native `addConstraintPointOnBSpline` for one +non-periodic, unit-weight, clamped cubic B-spline with four strictly +X-monotonic poles. It solves the curve parameter and point Y while fixing +point X. Other degrees, pole counts, weights, knot vectors, periodic curves, +and arbitrary B-spline graphs remain outside this bounded contract. + +FreeCAD `Block` is implemented at the Facade pre-solve boundary, matching the +desktop Sketch behavior: all parameters of the single referenced geometry are +frozen and no synthetic GCS constraint is claimed. + +`solveCoincidentLinePoints` directly uses native +`addConstraintP2PCoincident` and accepts all four start/end combinations for +two distinct non-degenerate lines. The first line is fixed and the second line +keeps its original length. `solveCoincidentLines` remains as the compatible +first-end to second-start wrapper. + +`solveSnellsLawLines` maps FreeCAD's three-Line SnellsLaw graph. The selected +ray endpoints must already coincide on the boundary, matching the Coincident +and PointOnObject prerequisites created by the desktop Sketcher command. The +native binding preserves the first ray, boundary, and second-ray length, uses +FreeCAD's stored `n2/n1` ratio split and endpoint-dependent normal flips, then +solves `addConstraintSnellsLaw`. The Facade accepts this operation only when +the three prerequisite constraints form the exact compound graph. + +```bash +./npmw run build:planegcs +./npmw run check:planegcs-artifact +./npmw run test:planegcs +./npmw run test:chrome-planegcs +``` + +FreeCAD planegcs source files retain their upstream LGPL licensing notices. diff --git a/native/planegcs/build.sh b/native/planegcs/build.sh new file mode 100755 index 0000000..3a98edd --- /dev/null +++ b/native/planegcs/build.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +FREECAD_SOURCE_DIR="${FREECAD_SOURCE_DIR:-${ROOT_DIR}/.cache/freecad/FreeCAD}" +PLANEGCS_SOURCE_DIR="${FREECAD_SOURCE_DIR}/src/Mod/Sketcher/App/planegcs" +DIST_DIR="${PLANEGCS_DIST_DIR:-${ROOT_DIR}/native/planegcs/dist}" +PUBLIC_DIR="${PLANEGCS_PUBLIC_DIR:-${ROOT_DIR}/public/native/planegcs}" +HOST_HEADERS_DIR="${ROOT_DIR}/.cache/bitbybit/planegcs-host-headers" + +if [[ ! -f "${PLANEGCS_SOURCE_DIR}/GCS.cpp" ]]; then + echo "Locked FreeCAD planegcs source not found: ${PLANEGCS_SOURCE_DIR}" >&2 + exit 1 +fi +if ! command -v em++ >/dev/null; then + echo "Emscripten em++ is required." >&2 + exit 1 +fi +if [[ ! -d /usr/include/eigen3 ]] || [[ ! -d /usr/include/boost ]]; then + echo "Eigen3 and Boost headers are required." >&2 + exit 1 +fi + +mkdir -p "${DIST_DIR}" "${PUBLIC_DIR}" "${HOST_HEADERS_DIR}" +if [[ ! -e "${HOST_HEADERS_DIR}/boost" ]]; then + ln -s /usr/include/boost "${HOST_HEADERS_DIR}/boost" +fi +em++ \ + "${PLANEGCS_SOURCE_DIR}/Geo.cpp" \ + "${PLANEGCS_SOURCE_DIR}/Constraints.cpp" \ + "${PLANEGCS_SOURCE_DIR}/SubSystem.cpp" \ + "${PLANEGCS_SOURCE_DIR}/qp_eq.cpp" \ + "${PLANEGCS_SOURCE_DIR}/GCS.cpp" \ + "${ROOT_DIR}/native/planegcs/planegcs_bindings.cpp" \ + -I"${ROOT_DIR}/native/planegcs/stubs" \ + -I"${FREECAD_SOURCE_DIR}/src" \ + -I"${PLANEGCS_SOURCE_DIR}" \ + -I"${HOST_HEADERS_DIR}" \ + -I/usr/include/eigen3 \ + -std=c++20 -O2 -DNDEBUG -DEIGEN_NO_DEBUG -fexceptions -pthread --bind \ + -sMODULARIZE=1 -sEXPORT_ES6=1 -sENVIRONMENT=web,worker,node \ + -sPTHREAD_POOL_SIZE=2 \ + -sALLOW_MEMORY_GROWTH=1 -sINITIAL_MEMORY=16777216 -sMAXIMUM_MEMORY=536870912 \ + -sNO_EXIT_RUNTIME=1 \ + -o "${DIST_DIR}/freecad-planegcs.js" + +cp "${ROOT_DIR}/native/planegcs/package.json" "${DIST_DIR}/package.json" +cp "${DIST_DIR}/freecad-planegcs.js" "${PUBLIC_DIR}/freecad-planegcs.js" +cp "${DIST_DIR}/freecad-planegcs.wasm" "${PUBLIC_DIR}/freecad-planegcs.wasm" +sha256sum "${DIST_DIR}/freecad-planegcs.js" "${DIST_DIR}/freecad-planegcs.wasm" diff --git a/native/planegcs/package.json b/native/planegcs/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/native/planegcs/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/native/planegcs/planegcs_bindings.cpp b/native/planegcs/planegcs_bindings.cpp new file mode 100644 index 0000000..f381ae8 --- /dev/null +++ b/native/planegcs/planegcs_bindings.cpp @@ -0,0 +1,1142 @@ +#include +#include +#include +#include + +#include + +#include "GCS.h" + +namespace +{ +std::vector solveLineDistance( + double startX, + double startY, + double endX, + double endY, + double targetLength, + bool vertical +) +{ + GCS::Line line; + line.p1 = GCS::Point(&startX, &startY); + line.p2 = GCS::Point(&endX, &endY); + GCS::System system; + double fixedStartX = startX; + double fixedStartY = startY; + system.addConstraintCoordinateX(line.p1, &fixedStartX, 1, true); + system.addConstraintCoordinateY(line.p1, &fixedStartY, 2, true); + if (vertical) { + system.addConstraintVertical(line, 3, true); + } else { + system.addConstraintHorizontal(line, 3, true); + } + system.addConstraintP2PDistance(line.p1, line.p2, &targetLength, 4, true); + GCS::VEC_pD parameters {&startX, &startY, &endX, &endY}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = std::hypot(endX - startX, endY - startY) - targetLength; + return {static_cast(status), startX, startY, endX, endY, residual}; +} + +std::vector solveHorizontalDistance( + double startX, + double startY, + double endX, + double endY, + double targetLength +) +{ + return solveLineDistance(startX, startY, endX, endY, targetLength, false); +} + +std::vector solveVerticalDistance( + double startX, + double startY, + double endX, + double endY, + double targetLength +) +{ + return solveLineDistance(startX, startY, endX, endY, targetLength, true); +} + +std::vector solveDistanceX( + double startX, + double startY, + double endX, + double endY, + double targetDistance +) +{ + GCS::Line line; + line.p1 = GCS::Point(&startX, &startY); + line.p2 = GCS::Point(&endX, &endY); + GCS::System system; + double fixedStartX = startX; + double fixedStartY = startY; + system.addConstraintCoordinateX(line.p1, &fixedStartX, 1, true); + system.addConstraintCoordinateY(line.p1, &fixedStartY, 2, true); + system.addConstraintHorizontal(line, 3, true); + system.addConstraintDifference(&startX, &endX, &targetDistance, 4, true); + GCS::VEC_pD parameters {&startX, &startY, &endX, &endY}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = (endX - startX) - targetDistance; + return {static_cast(status), startX, startY, endX, endY, residual}; +} + +std::vector solveDistanceY( + double startX, + double startY, + double endX, + double endY, + double targetDistance +) +{ + GCS::Line line; + line.p1 = GCS::Point(&startX, &startY); + line.p2 = GCS::Point(&endX, &endY); + GCS::System system; + double fixedStartX = startX; + double fixedStartY = startY; + system.addConstraintCoordinateX(line.p1, &fixedStartX, 1, true); + system.addConstraintCoordinateY(line.p1, &fixedStartY, 2, true); + system.addConstraintVertical(line, 3, true); + system.addConstraintDifference(&startY, &endY, &targetDistance, 4, true); + GCS::VEC_pD parameters {&startX, &startY, &endX, &endY}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = (endY - startY) - targetDistance; + return {static_cast(status), startX, startY, endX, endY, residual}; +} + +std::vector solveAngle( + double startX, + double startY, + double endX, + double endY, + double targetLength, + double targetAngle +) +{ + GCS::Line line; + line.p1 = GCS::Point(&startX, &startY); + line.p2 = GCS::Point(&endX, &endY); + GCS::System system; + double fixedStartX = startX; + double fixedStartY = startY; + system.addConstraintCoordinateX(line.p1, &fixedStartX, 1, true); + system.addConstraintCoordinateY(line.p1, &fixedStartY, 2, true); + system.addConstraintP2PDistance(line.p1, line.p2, &targetLength, 3, true); + system.addConstraintP2PAngle(line.p1, line.p2, &targetAngle, 4, true); + GCS::VEC_pD parameters {&startX, &startY, &endX, &endY}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double lengthResidual = std::hypot(endX - startX, endY - startY) - targetLength; + const double angleResidual = std::atan2(endY - startY, endX - startX) - targetAngle; + const double normalizedAngleResidual = std::atan2(std::sin(angleResidual), std::cos(angleResidual)); + return {static_cast(status), startX, startY, endX, endY, lengthResidual, normalizedAngleResidual}; +} + +std::vector solveCircleRadius( + double centerX, + double centerY, + double radius, + double targetRadius +) +{ + GCS::Circle circle; + circle.center = GCS::Point(¢erX, ¢erY); + circle.rad = &radius; + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + system.addConstraintCoordinateX(circle.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(circle.center, &fixedCenterY, 2, true); + system.addConstraintCircleRadius(circle, &targetRadius, 3, true); + GCS::VEC_pD parameters {¢erX, ¢erY, &radius}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = radius - targetRadius; + return {static_cast(status), centerX, centerY, radius, residual}; +} + +std::vector solveCircleDiameter( + double centerX, + double centerY, + double radius, + double targetDiameter +) +{ + GCS::Circle circle; + circle.center = GCS::Point(¢erX, ¢erY); + circle.rad = &radius; + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + system.addConstraintCoordinateX(circle.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(circle.center, &fixedCenterY, 2, true); + system.addConstraintCircleDiameter(circle, &targetDiameter, 3, true); + GCS::VEC_pD parameters {¢erX, ¢erY, &radius}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = radius * 2.0 - targetDiameter; + return {static_cast(status), centerX, centerY, radius, residual}; +} + +std::vector solveEqualLines( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY +) +{ + GCS::Line first; + first.p1 = GCS::Point(&firstStartX, &firstStartY); + first.p2 = GCS::Point(&firstEndX, &firstEndY); + GCS::Line second; + second.p1 = GCS::Point(&secondStartX, &secondStartY); + second.p2 = GCS::Point(&secondEndX, &secondEndY); + GCS::System system; + double fixedFirstStartX = firstStartX; + double fixedFirstStartY = firstStartY; + double fixedFirstEndX = firstEndX; + double fixedFirstEndY = firstEndY; + double fixedSecondStartX = secondStartX; + double fixedSecondStartY = secondStartY; + system.addConstraintCoordinateX(first.p1, &fixedFirstStartX, 1, true); + system.addConstraintCoordinateY(first.p1, &fixedFirstStartY, 2, true); + system.addConstraintCoordinateX(first.p2, &fixedFirstEndX, 3, true); + system.addConstraintCoordinateY(first.p2, &fixedFirstEndY, 4, true); + system.addConstraintCoordinateX(second.p1, &fixedSecondStartX, 5, true); + system.addConstraintCoordinateY(second.p1, &fixedSecondStartY, 6, true); + system.addConstraintEqualLength(first, second, 7, true); + GCS::VEC_pD parameters { + &firstStartX, &firstStartY, &firstEndX, &firstEndY, + &secondStartX, &secondStartY, &secondEndX, &secondEndY + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double firstLength = std::hypot(firstEndX - firstStartX, firstEndY - firstStartY); + const double secondLength = std::hypot(secondEndX - secondStartX, secondEndY - secondStartY); + return { + static_cast(status), + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + secondLength - firstLength + }; +} + +std::vector solveEqualCircles( + double firstCenterX, + double firstCenterY, + double firstRadius, + double secondCenterX, + double secondCenterY, + double secondRadius +) +{ + GCS::Circle first; + first.center = GCS::Point(&firstCenterX, &firstCenterY); + first.rad = &firstRadius; + GCS::Circle second; + second.center = GCS::Point(&secondCenterX, &secondCenterY); + second.rad = &secondRadius; + GCS::System system; + double fixedFirstCenterX = firstCenterX; + double fixedFirstCenterY = firstCenterY; + double fixedSecondCenterX = secondCenterX; + double fixedSecondCenterY = secondCenterY; + double fixedFirstRadius = firstRadius; + system.addConstraintCoordinateX(first.center, &fixedFirstCenterX, 1, true); + system.addConstraintCoordinateY(first.center, &fixedFirstCenterY, 2, true); + system.addConstraintCoordinateX(second.center, &fixedSecondCenterX, 3, true); + system.addConstraintCoordinateY(second.center, &fixedSecondCenterY, 4, true); + system.addConstraintEqual(first.rad, &fixedFirstRadius, 5, true); + system.addConstraintEqualRadius(first, second, 6, true); + GCS::VEC_pD parameters { + &firstCenterX, &firstCenterY, &firstRadius, + &secondCenterX, &secondCenterY, &secondRadius + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = secondRadius - firstRadius; + return { + static_cast(status), + firstCenterX, firstCenterY, firstRadius, + secondCenterX, secondCenterY, secondRadius, + residual + }; +} + +std::vector solveTangentCircles( + double firstCenterX, + double firstCenterY, + double firstRadius, + double secondCenterX, + double secondCenterY, + double secondRadius +) +{ + GCS::Circle first; + first.center = GCS::Point(&firstCenterX, &firstCenterY); + first.rad = &firstRadius; + GCS::Circle second; + second.center = GCS::Point(&secondCenterX, &secondCenterY); + second.rad = &secondRadius; + GCS::System system; + double fixedFirstCenterX = firstCenterX; + double fixedFirstCenterY = firstCenterY; + double fixedSecondCenterX = secondCenterX; + double fixedSecondCenterY = secondCenterY; + double fixedFirstRadius = firstRadius; + system.addConstraintCoordinateX(first.center, &fixedFirstCenterX, 1, true); + system.addConstraintCoordinateY(first.center, &fixedFirstCenterY, 2, true); + system.addConstraintCoordinateX(second.center, &fixedSecondCenterX, 3, true); + system.addConstraintCoordinateY(second.center, &fixedSecondCenterY, 4, true); + system.addConstraintEqual(first.rad, &fixedFirstRadius, 5, true); + system.addConstraintTangent(first, second, 6, true); + GCS::VEC_pD parameters { + &firstCenterX, &firstCenterY, &firstRadius, + &secondCenterX, &secondCenterY, &secondRadius + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double centerDistance = std::hypot(secondCenterX - firstCenterX, secondCenterY - firstCenterY); + const double residual = centerDistance - firstRadius - secondRadius; + return { + static_cast(status), + firstCenterX, firstCenterY, firstRadius, + secondCenterX, secondCenterY, secondRadius, + residual + }; +} + +std::vector solvePointSymmetry( + double firstX, + double firstY, + double secondX, + double secondY, + double centerX, + double centerY +) +{ + GCS::Point first(&firstX, &firstY); + GCS::Point second(&secondX, &secondY); + GCS::Point center(¢erX, ¢erY); + GCS::System system; + double fixedFirstX = firstX; + double fixedFirstY = firstY; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + system.addConstraintCoordinateX(first, &fixedFirstX, 1, true); + system.addConstraintCoordinateY(first, &fixedFirstY, 2, true); + system.addConstraintCoordinateX(center, &fixedCenterX, 3, true); + system.addConstraintCoordinateY(center, &fixedCenterY, 4, true); + system.addConstraintP2PSymmetric(first, second, center, 5, true); + GCS::VEC_pD parameters {&firstX, &firstY, &secondX, &secondY, ¢erX, ¢erY}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = std::hypot( + (firstX + secondX) * 0.5 - centerX, + (firstY + secondY) * 0.5 - centerY + ); + return { + static_cast(status), + firstX, firstY, + secondX, secondY, + centerX, centerY, + residual + }; +} + +std::vector solvePointOnLine( + double pointX, + double pointY, + double startX, + double startY, + double endX, + double endY, + bool vertical +) +{ + GCS::Point point(&pointX, &pointY); + GCS::Line line; + line.p1 = GCS::Point(&startX, &startY); + line.p2 = GCS::Point(&endX, &endY); + GCS::System system; + double fixedStartX = startX; + double fixedStartY = startY; + double fixedEndX = endX; + double fixedEndY = endY; + system.addConstraintCoordinateX(line.p1, &fixedStartX, 1, true); + system.addConstraintCoordinateY(line.p1, &fixedStartY, 2, true); + system.addConstraintCoordinateX(line.p2, &fixedEndX, 3, true); + system.addConstraintCoordinateY(line.p2, &fixedEndY, 4, true); + if (vertical) { + system.addConstraintVertical(line, 5, true); + system.addConstraintCoordinateY(point, &pointY, 6, true); + } else { + system.addConstraintHorizontal(line, 5, true); + system.addConstraintCoordinateX(point, &pointX, 6, true); + } + system.addConstraintPointOnLine(point, line, 7, true); + GCS::VEC_pD parameters {&pointX, &pointY, &startX, &startY, &endX, &endY}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double dx = endX - startX; + const double dy = endY - startY; + const double length = std::hypot(dx, dy); + const double residual = length == 0.0 + ? 1.0 + : std::abs((pointX - startX) * dy - (pointY - startY) * dx) / length; + return {static_cast(status), pointX, pointY, startX, startY, endX, endY, residual}; +} + +std::vector solvePointOnCircle( + double pointX, + double pointY, + double centerX, + double centerY, + double radius +) +{ + GCS::Point point(&pointX, &pointY); + GCS::Circle circle; + circle.center = GCS::Point(¢erX, ¢erY); + circle.rad = &radius; + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + double fixedRadius = radius; + system.addConstraintCoordinateX(circle.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(circle.center, &fixedCenterY, 2, true); + system.addConstraintEqual(circle.rad, &fixedRadius, 3, true); + double fixedPointX = pointX; + system.addConstraintCoordinateX(point, &fixedPointX, 4, true); + system.addConstraintPointOnCircle(point, circle, 5, true); + GCS::VEC_pD parameters {&pointX, &pointY, ¢erX, ¢erY, &radius}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = std::hypot(pointX - centerX, pointY - centerY) - radius; + return {static_cast(status), pointX, pointY, centerX, centerY, radius, residual}; +} + +std::vector solvePointOnArc( + double pointX, + double pointY, + double centerX, + double centerY, + double radius, + double startAngle, + double endAngle +) +{ + if (!(radius > 0.0)) throw std::invalid_argument("Arc radius must be positive."); + GCS::Point point(&pointX, &pointY); + GCS::Arc arc; + arc.center = GCS::Point(¢erX, ¢erY); + arc.rad = &radius; + arc.startAngle = &startAngle; + arc.endAngle = &endAngle; + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + double fixedRadius = radius; + double fixedPointX = pointX; + system.addConstraintCoordinateX(arc.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(arc.center, &fixedCenterY, 2, true); + system.addConstraintEqual(arc.rad, &fixedRadius, 3, true); + system.addConstraintCoordinateX(point, &fixedPointX, 4, true); + system.addConstraintPointOnArc(point, arc, 5, true); + GCS::VEC_pD parameters {&pointX, &pointY, ¢erX, ¢erY, &radius}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = std::hypot(pointX - centerX, pointY - centerY) - radius; + return {static_cast(status), pointX, pointY, centerX, centerY, radius, startAngle, endAngle, residual}; +} + +std::vector solvePointOnEllipse( + double pointX, + double pointY, + double centerX, + double centerY, + double focusX, + double focusY, + double minorRadius +) +{ + if (!(minorRadius > 0.0)) throw std::invalid_argument("Ellipse minor radius must be positive."); + const double focusDistance = std::hypot(focusX - centerX, focusY - centerY); + const double majorRadius = std::hypot(focusDistance, minorRadius); + if (!(majorRadius > 0.0) || focusDistance >= majorRadius) throw std::invalid_argument("Ellipse focus and radius are invalid."); + GCS::Point point(&pointX, &pointY); + GCS::Ellipse ellipse; + ellipse.center = GCS::Point(¢erX, ¢erY); + ellipse.focus1 = GCS::Point(&focusX, &focusY); + ellipse.radmin = &minorRadius; + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + double fixedFocusX = focusX; + double fixedFocusY = focusY; + double fixedMinorRadius = minorRadius; + double fixedPointX = pointX; + system.addConstraintCoordinateX(ellipse.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(ellipse.center, &fixedCenterY, 2, true); + system.addConstraintCoordinateX(ellipse.focus1, &fixedFocusX, 3, true); + system.addConstraintCoordinateY(ellipse.focus1, &fixedFocusY, 4, true); + system.addConstraintEqual(ellipse.radmin, &fixedMinorRadius, 5, true); + system.addConstraintCoordinateX(point, &fixedPointX, 6, true); + system.addConstraintPointOnEllipse(point, ellipse, 7, true); + GCS::VEC_pD parameters {&pointX, &pointY, ¢erX, ¢erY, &focusX, &focusY, &minorRadius}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double focus2X = centerX - (focusX - centerX); + const double focus2Y = centerY - (focusY - centerY); + const double residual = std::hypot(pointX - focusX, pointY - focusY) + std::hypot(pointX - focus2X, pointY - focus2Y) - 2.0 * majorRadius; + return {static_cast(status), pointX, pointY, centerX, centerY, focusX, focusY, minorRadius, residual}; +} + +std::vector solveEllipseInternalAlignment( + double centerX, + double centerY, + double majorRadius, + double minorRadius, + double rotation, + int alignmentType +) +{ + if (!std::isfinite(centerX) || !std::isfinite(centerY) || !std::isfinite(rotation) + || !(majorRadius > minorRadius) || !(minorRadius > 0.0)) { + throw std::invalid_argument("InternalAlignment requires a finite non-circular ellipse."); + } + if (alignmentType < 1 || alignmentType > 4) { + throw std::invalid_argument("Ellipse InternalAlignment type must be in the range 1..4."); + } + const double focalDistance = std::sqrt(majorRadius * majorRadius - minorRadius * minorRadius); + const double majorX = std::cos(rotation); + const double majorY = std::sin(rotation); + const double minorX = -majorY; + const double minorY = majorX; + double focusX = centerX + focalDistance * majorX; + double focusY = centerY + focalDistance * majorY; + double helperStartX; + double helperStartY; + double helperEndX; + double helperEndY; + if (alignmentType == 1) { + helperStartX = centerX + majorRadius * majorX; + helperStartY = centerY + majorRadius * majorY; + helperEndX = centerX - majorRadius * majorX; + helperEndY = centerY - majorRadius * majorY; + } + else if (alignmentType == 2) { + helperStartX = centerX + minorRadius * minorX; + helperStartY = centerY + minorRadius * minorY; + helperEndX = centerX - minorRadius * minorX; + helperEndY = centerY - minorRadius * minorY; + } + else { + const double direction = alignmentType == 3 ? 1.0 : -1.0; + helperStartX = centerX + direction * focalDistance * majorX; + helperStartY = centerY + direction * focalDistance * majorY; + helperEndX = helperStartX; + helperEndY = helperStartY; + } + + GCS::Ellipse ellipse; + ellipse.center = GCS::Point(¢erX, ¢erY); + ellipse.focus1 = GCS::Point(&focusX, &focusY); + ellipse.radmin = &minorRadius; + GCS::Point helperStart(&helperStartX, &helperStartY); + GCS::Point helperEnd(&helperEndX, &helperEndY); + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + double fixedFocusX = focusX; + double fixedFocusY = focusY; + double fixedMinorRadius = minorRadius; + system.addConstraintCoordinateX(ellipse.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(ellipse.center, &fixedCenterY, 2, true); + system.addConstraintCoordinateX(ellipse.focus1, &fixedFocusX, 3, true); + system.addConstraintCoordinateY(ellipse.focus1, &fixedFocusY, 4, true); + system.addConstraintEqual(ellipse.radmin, &fixedMinorRadius, 5, true); + if (alignmentType == 1) system.addConstraintInternalAlignmentEllipseMajorDiameter(ellipse, helperStart, helperEnd, 6, true); + else if (alignmentType == 2) system.addConstraintInternalAlignmentEllipseMinorDiameter(ellipse, helperStart, helperEnd, 6, true); + else if (alignmentType == 3) system.addConstraintInternalAlignmentEllipseFocus1(ellipse, helperStart, 6, true); + else system.addConstraintInternalAlignmentEllipseFocus2(ellipse, helperStart, 6, true); + GCS::VEC_pD parameters { + ¢erX, ¢erY, &focusX, &focusY, &minorRadius, + &helperStartX, &helperStartY + }; + if (alignmentType <= 2) { + parameters.push_back(&helperEndX); + parameters.push_back(&helperEndY); + } + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = system.calculateConstraintErrorByTag(6); + return { + static_cast(status), + centerX, centerY, focusX, focusY, minorRadius, + helperStartX, helperStartY, helperEndX, helperEndY, + residual + }; +} + +std::vector solveEllipseInternalAlignmentSet( + double centerX, + double centerY, + double majorRadius, + double minorRadius, + double rotation +) +{ + if (!std::isfinite(centerX) || !std::isfinite(centerY) || !std::isfinite(rotation) + || !(majorRadius > minorRadius) || !(minorRadius > 0.0)) { + throw std::invalid_argument("InternalAlignment requires a finite non-circular ellipse."); + } + const double focalDistance = std::sqrt(majorRadius * majorRadius - minorRadius * minorRadius); + const double majorX = std::cos(rotation); + const double majorY = std::sin(rotation); + const double minorX = -majorY; + const double minorY = majorX; + double focusX = centerX + focalDistance * majorX; + double focusY = centerY + focalDistance * majorY; + double majorStartX = centerX + majorRadius * majorX; + double majorStartY = centerY + majorRadius * majorY; + double majorEndX = centerX - majorRadius * majorX; + double majorEndY = centerY - majorRadius * majorY; + double minorStartX = centerX + minorRadius * minorX; + double minorStartY = centerY + minorRadius * minorY; + double minorEndX = centerX - minorRadius * minorX; + double minorEndY = centerY - minorRadius * minorY; + double focus1X = focusX; + double focus1Y = focusY; + double focus2X = centerX - focalDistance * majorX; + double focus2Y = centerY - focalDistance * majorY; + + GCS::Ellipse ellipse; + ellipse.center = GCS::Point(¢erX, ¢erY); + ellipse.focus1 = GCS::Point(&focusX, &focusY); + ellipse.radmin = &minorRadius; + GCS::Point majorStart(&majorStartX, &majorStartY); + GCS::Point majorEnd(&majorEndX, &majorEndY); + GCS::Point minorStart(&minorStartX, &minorStartY); + GCS::Point minorEnd(&minorEndX, &minorEndY); + GCS::Point focus1(&focus1X, &focus1Y); + GCS::Point focus2(&focus2X, &focus2Y); + GCS::System system; + double fixedCenterX = centerX; + double fixedCenterY = centerY; + double fixedFocusX = focusX; + double fixedFocusY = focusY; + double fixedMinorRadius = minorRadius; + system.addConstraintCoordinateX(ellipse.center, &fixedCenterX, 1, true); + system.addConstraintCoordinateY(ellipse.center, &fixedCenterY, 2, true); + system.addConstraintCoordinateX(ellipse.focus1, &fixedFocusX, 3, true); + system.addConstraintCoordinateY(ellipse.focus1, &fixedFocusY, 4, true); + system.addConstraintEqual(ellipse.radmin, &fixedMinorRadius, 5, true); + system.addConstraintInternalAlignmentEllipseMajorDiameter(ellipse, majorStart, majorEnd, 6, true); + system.addConstraintInternalAlignmentEllipseMinorDiameter(ellipse, minorStart, minorEnd, 7, true); + system.addConstraintInternalAlignmentEllipseFocus1(ellipse, focus1, 8, true); + system.addConstraintInternalAlignmentEllipseFocus2(ellipse, focus2, 9, true); + GCS::VEC_pD parameters { + ¢erX, ¢erY, &focusX, &focusY, &minorRadius, + &majorStartX, &majorStartY, &majorEndX, &majorEndY, + &minorStartX, &minorStartY, &minorEndX, &minorEndY, + &focus1X, &focus1Y, &focus2X, &focus2Y + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double majorResidual = system.calculateConstraintErrorByTag(6); + const double minorResidual = system.calculateConstraintErrorByTag(7); + const double focus1Residual = system.calculateConstraintErrorByTag(8); + const double focus2Residual = system.calculateConstraintErrorByTag(9); + return { + static_cast(status), + centerX, centerY, focusX, focusY, minorRadius, + majorResidual, minorResidual, focus1Residual, focus2Residual + }; +} + +std::vector solvePointOnCubicBspline( + double pointX, + double pointY, + double pole0X, + double pole0Y, + double pole1X, + double pole1Y, + double pole2X, + double pole2Y, + double pole3X, + double pole3Y, + double pointParameter +) +{ + std::vector poleX {pole0X, pole1X, pole2X, pole3X}; + std::vector poleY {pole0Y, pole1Y, pole2Y, pole3Y}; + std::vector poles; + poles.reserve(4); + for (std::size_t index = 0; index < poleX.size(); ++index) { + poles.emplace_back(&poleX[index], &poleY[index]); + } + std::vector weights(4, 1.0); + std::vector weightPointers; + weightPointers.reserve(4); + for (double& weight : weights) weightPointers.push_back(&weight); + std::vector knots {0.0, 1.0}; + std::vector knotPointers {&knots[0], &knots[1]}; + GCS::BSpline bspline; + bspline.start = poles.front(); + bspline.end = poles.back(); + bspline.poles = poles; + bspline.weights = weightPointers; + bspline.knots = knotPointers; + bspline.mult = {4, 4}; + bspline.degree = 3; + bspline.periodic = false; + bspline.setupFlattenedKnots(); + GCS::Point point(&pointX, &pointY); + GCS::System system; + double fixedPointX = pointX; + system.addConstraintCoordinateX(point, &fixedPointX, 1, true); + system.addConstraintPointOnBSpline(point, bspline, &pointParameter, 2, true); + GCS::VEC_pD parameters {&pointX, &pointY, &pointParameter}; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const GCS::DeriVector2 curvePoint = bspline.Value(pointParameter, 1.0); + const double residualX = pointX - curvePoint.x; + const double residualY = pointY - curvePoint.y; + return {static_cast(status), pointX, pointY, pointParameter, residualX, residualY}; +} + +std::vector solveCubicBsplineWeight( + double pole0X, + double pole0Y, + double pole1X, + double pole1Y, + double pole2X, + double pole2Y, + double pole3X, + double pole3Y, + double weight0, + double weight1, + double weight2, + double weight3, + int controlPointIndex, + double targetWeight +) +{ + if (controlPointIndex < 0 || controlPointIndex > 3) { + throw std::invalid_argument("B-spline Weight control-point index must be in the range 0..3."); + } + if (!(weight0 > 0.0) || !(weight1 > 0.0) || !(weight2 > 0.0) || !(weight3 > 0.0) + || !(targetWeight > 0.0) || !std::isfinite(targetWeight)) { + throw std::invalid_argument("B-spline weights must be positive and finite."); + } + std::vector poleX {pole0X, pole1X, pole2X, pole3X}; + std::vector poleY {pole0Y, pole1Y, pole2Y, pole3Y}; + std::vector poles; + poles.reserve(4); + for (std::size_t index = 0; index < poleX.size(); ++index) { + poles.emplace_back(&poleX[index], &poleY[index]); + } + std::vector weights {weight0, weight1, weight2, weight3}; + std::vector weightPointers; + weightPointers.reserve(4); + for (double& weight : weights) weightPointers.push_back(&weight); + std::vector knots {0.0, 1.0}; + std::vector knotPointers {&knots[0], &knots[1]}; + GCS::BSpline bspline; + bspline.start = poles.front(); + bspline.end = poles.back(); + bspline.poles = poles; + bspline.weights = weightPointers; + bspline.knots = knotPointers; + bspline.mult = {4, 4}; + bspline.degree = 3; + bspline.periodic = false; + bspline.setupFlattenedKnots(); + double helperCenterX = poleX[controlPointIndex]; + double helperCenterY = poleY[controlPointIndex]; + double helperRadius = weights[controlPointIndex]; + GCS::Circle helper; + helper.center = GCS::Point(&helperCenterX, &helperCenterY); + helper.rad = &helperRadius; + GCS::System system; + system.addConstraintInternalAlignmentBSplineControlPoint(bspline, helper, controlPointIndex, 1, true); + system.addConstraintCircleRadius(helper, &targetWeight, 2, true); + GCS::VEC_pD parameters { + &weights[controlPointIndex], + &helperCenterX, + &helperCenterY, + &helperRadius + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double alignmentResidual = system.calculateConstraintErrorByTag(1); + const double weightResidual = system.calculateConstraintErrorByTag(2); + return { + static_cast(status), + weights[0], weights[1], weights[2], weights[3], + helperCenterX, helperCenterY, helperRadius, + alignmentResidual, weightResidual + }; +} + +std::vector solveLineRelation( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY, + double secondLength, + bool perpendicular +) +{ + GCS::Line first; + first.p1 = GCS::Point(&firstStartX, &firstStartY); + first.p2 = GCS::Point(&firstEndX, &firstEndY); + GCS::Line second; + second.p1 = GCS::Point(&secondStartX, &secondStartY); + second.p2 = GCS::Point(&secondEndX, &secondEndY); + GCS::System system; + double fixedFirstStartX = firstStartX; + double fixedFirstStartY = firstStartY; + double fixedFirstEndX = firstEndX; + double fixedFirstEndY = firstEndY; + double fixedSecondStartX = secondStartX; + double fixedSecondStartY = secondStartY; + system.addConstraintCoordinateX(first.p1, &fixedFirstStartX, 1, true); + system.addConstraintCoordinateY(first.p1, &fixedFirstStartY, 2, true); + system.addConstraintCoordinateX(first.p2, &fixedFirstEndX, 3, true); + system.addConstraintCoordinateY(first.p2, &fixedFirstEndY, 4, true); + system.addConstraintCoordinateX(second.p1, &fixedSecondStartX, 5, true); + system.addConstraintCoordinateY(second.p1, &fixedSecondStartY, 6, true); + if (perpendicular) { + system.addConstraintPerpendicular(first, second, 7, true); + } else { + system.addConstraintParallel(first, second, 7, true); + } + system.addConstraintP2PDistance(second.p1, second.p2, &secondLength, 8, true); + GCS::VEC_pD parameters { + &firstStartX, &firstStartY, &firstEndX, &firstEndY, + &secondStartX, &secondStartY, &secondEndX, &secondEndY + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double firstDx = firstEndX - firstStartX; + const double firstDy = firstEndY - firstStartY; + const double secondDx = secondEndX - secondStartX; + const double secondDy = secondEndY - secondStartY; + const double scale = std::hypot(firstDx, firstDy) * std::hypot(secondDx, secondDy); + const double residual = scale == 0.0 + ? 1.0 + : (perpendicular + ? (firstDx * secondDx + firstDy * secondDy) / scale + : (firstDx * secondDy - firstDy * secondDx) / scale); + return { + static_cast(status), + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + residual + }; +} + +std::vector solveParallelLines( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY, + double secondLength +) +{ + return solveLineRelation( + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + secondLength, false + ); +} + +std::vector solvePerpendicularLines( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY, + double secondLength +) +{ + return solveLineRelation( + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + secondLength, true + ); +} + +std::vector solveCoincidentLinePoints( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY, + double secondLength, + bool firstEnd, + bool secondEnd +) +{ + GCS::Line first; + first.p1 = GCS::Point(&firstStartX, &firstStartY); + first.p2 = GCS::Point(&firstEndX, &firstEndY); + GCS::Line second; + second.p1 = GCS::Point(&secondStartX, &secondStartY); + second.p2 = GCS::Point(&secondEndX, &secondEndY); + GCS::System system; + double fixedFirstStartX = firstStartX; + double fixedFirstStartY = firstStartY; + double fixedFirstEndX = firstEndX; + double fixedFirstEndY = firstEndY; + system.addConstraintCoordinateX(first.p1, &fixedFirstStartX, 1, true); + system.addConstraintCoordinateY(first.p1, &fixedFirstStartY, 2, true); + system.addConstraintCoordinateX(first.p2, &fixedFirstEndX, 3, true); + system.addConstraintCoordinateY(first.p2, &fixedFirstEndY, 4, true); + GCS::Point& firstPoint = firstEnd ? first.p2 : first.p1; + GCS::Point& secondPoint = secondEnd ? second.p2 : second.p1; + system.addConstraintP2PCoincident(firstPoint, secondPoint, 5, true); + system.addConstraintP2PDistance(second.p1, second.p2, &secondLength, 6, true); + GCS::VEC_pD parameters { + &firstStartX, &firstStartY, &firstEndX, &firstEndY, + &secondStartX, &secondStartY, &secondEndX, &secondEndY + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double selectedFirstX = firstEnd ? firstEndX : firstStartX; + const double selectedFirstY = firstEnd ? firstEndY : firstStartY; + const double selectedSecondX = secondEnd ? secondEndX : secondStartX; + const double selectedSecondY = secondEnd ? secondEndY : secondStartY; + const double residual = std::hypot(selectedFirstX - selectedSecondX, selectedFirstY - selectedSecondY); + return { + static_cast(status), + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + residual + }; +} + +std::vector solveCoincidentLines( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY, + double secondLength +) +{ + return solveCoincidentLinePoints( + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + secondLength, true, false + ); +} + +std::vector solveSnellsLawLines( + double firstStartX, + double firstStartY, + double firstEndX, + double firstEndY, + double secondStartX, + double secondStartY, + double secondEndX, + double secondEndY, + double boundaryStartX, + double boundaryStartY, + double boundaryEndX, + double boundaryEndY, + double refractiveRatio, + bool firstEnd, + bool secondEnd +) +{ + const double firstLength = std::hypot(firstEndX - firstStartX, firstEndY - firstStartY); + double secondLength = std::hypot(secondEndX - secondStartX, secondEndY - secondStartY); + const double boundaryLength = std::hypot(boundaryEndX - boundaryStartX, boundaryEndY - boundaryStartY); + if (!(firstLength > 0.0) || !(secondLength > 0.0) || !(boundaryLength > 0.0)) { + throw std::invalid_argument("SnellsLaw requires three non-degenerate lines."); + } + if (!std::isfinite(refractiveRatio) || !(refractiveRatio > 0.0)) { + throw std::invalid_argument("SnellsLaw refractive ratio must be positive and finite."); + } + + GCS::Line first; + first.p1 = GCS::Point(&firstStartX, &firstStartY); + first.p2 = GCS::Point(&firstEndX, &firstEndY); + GCS::Line second; + second.p1 = GCS::Point(&secondStartX, &secondStartY); + second.p2 = GCS::Point(&secondEndX, &secondEndY); + GCS::Line boundary; + boundary.p1 = GCS::Point(&boundaryStartX, &boundaryStartY); + boundary.p2 = GCS::Point(&boundaryEndX, &boundaryEndY); + GCS::Point& firstPoint = firstEnd ? first.p2 : first.p1; + GCS::Point& secondPoint = secondEnd ? second.p2 : second.p1; + + const double junctionDistance = std::hypot(*firstPoint.x - *secondPoint.x, *firstPoint.y - *secondPoint.y); + const double boundaryDistance = std::abs( + (*firstPoint.x - boundaryStartX) * (boundaryEndY - boundaryStartY) + - (*firstPoint.y - boundaryStartY) * (boundaryEndX - boundaryStartX) + ) / boundaryLength; + if (junctionDistance > 1e-7 || boundaryDistance > 1e-7) { + throw std::invalid_argument("SnellsLaw ray endpoints must coincide on the boundary."); + } + + double n1 = refractiveRatio; + double n2 = 1.0; + if (std::abs(refractiveRatio) >= 1.0) { + n1 = 1.0; + n2 = refractiveRatio; + } else { + n1 = 1.0 / refractiveRatio; + n2 = 1.0; + } + + GCS::System system; + double fixedFirstStartX = firstStartX; + double fixedFirstStartY = firstStartY; + double fixedFirstEndX = firstEndX; + double fixedFirstEndY = firstEndY; + double fixedBoundaryStartX = boundaryStartX; + double fixedBoundaryStartY = boundaryStartY; + double fixedBoundaryEndX = boundaryEndX; + double fixedBoundaryEndY = boundaryEndY; + system.addConstraintCoordinateX(first.p1, &fixedFirstStartX, 1, true); + system.addConstraintCoordinateY(first.p1, &fixedFirstStartY, 2, true); + system.addConstraintCoordinateX(first.p2, &fixedFirstEndX, 3, true); + system.addConstraintCoordinateY(first.p2, &fixedFirstEndY, 4, true); + system.addConstraintCoordinateX(boundary.p1, &fixedBoundaryStartX, 5, true); + system.addConstraintCoordinateY(boundary.p1, &fixedBoundaryStartY, 6, true); + system.addConstraintCoordinateX(boundary.p2, &fixedBoundaryEndX, 7, true); + system.addConstraintCoordinateY(boundary.p2, &fixedBoundaryEndY, 8, true); + system.addConstraintP2PCoincident(firstPoint, secondPoint, 9, true); + system.addConstraintP2PDistance(second.p1, second.p2, &secondLength, 10, true); + system.addConstraintSnellsLaw( + first, + second, + boundary, + firstPoint, + &n1, + &n2, + !firstEnd, + secondEnd, + 11, + true + ); + GCS::VEC_pD parameters { + &firstStartX, &firstStartY, &firstEndX, &firstEndY, + &secondStartX, &secondStartY, &secondEndX, &secondEndY, + &boundaryStartX, &boundaryStartY, &boundaryEndX, &boundaryEndY + }; + const int status = system.solve(parameters, true, GCS::DogLeg, false); + if (status <= GCS::Converged) { + system.applySolution(); + } + const double residual = system.calculateConstraintErrorByTag(11); + return { + static_cast(status), + firstStartX, firstStartY, firstEndX, firstEndY, + secondStartX, secondStartY, secondEndX, secondEndY, + boundaryStartX, boundaryStartY, boundaryEndX, boundaryEndY, + residual + }; +} +} // namespace + +EMSCRIPTEN_BINDINGS(web_freecad_planegcs) +{ + emscripten::register_vector("DoubleVector"); + emscripten::function("solveHorizontalDistance", &solveHorizontalDistance); + emscripten::function("solveVerticalDistance", &solveVerticalDistance); + emscripten::function("solveDistanceX", &solveDistanceX); + emscripten::function("solveDistanceY", &solveDistanceY); + emscripten::function("solveAngle", &solveAngle); + emscripten::function("solveCircleRadius", &solveCircleRadius); + emscripten::function("solveCircleDiameter", &solveCircleDiameter); + emscripten::function("solveEqualLines", &solveEqualLines); + emscripten::function("solveEqualCircles", &solveEqualCircles); + emscripten::function("solveTangentCircles", &solveTangentCircles); + emscripten::function("solvePointSymmetry", &solvePointSymmetry); + emscripten::function("solvePointOnLine", &solvePointOnLine); + emscripten::function("solvePointOnCircle", &solvePointOnCircle); + emscripten::function("solvePointOnArc", &solvePointOnArc); + emscripten::function("solvePointOnEllipse", &solvePointOnEllipse); + emscripten::function("solveEllipseInternalAlignment", &solveEllipseInternalAlignment); + emscripten::function("solveEllipseInternalAlignmentSet", &solveEllipseInternalAlignmentSet); + emscripten::function("solvePointOnCubicBspline", &solvePointOnCubicBspline); + emscripten::function("solveCubicBsplineWeight", &solveCubicBsplineWeight); + emscripten::function("solveParallelLines", &solveParallelLines); + emscripten::function("solvePerpendicularLines", &solvePerpendicularLines); + emscripten::function("solveCoincidentLines", &solveCoincidentLines); + emscripten::function("solveCoincidentLinePoints", &solveCoincidentLinePoints); + emscripten::function("solveSnellsLawLines", &solveSnellsLawLines); +} diff --git a/native/planegcs/smoke-test.mjs b/native/planegcs/smoke-test.mjs new file mode 100644 index 0000000..48d1145 --- /dev/null +++ b/native/planegcs/smoke-test.mjs @@ -0,0 +1,138 @@ +import createPlanegcs from './dist/freecad-planegcs.js' + +const module = await createPlanegcs() +const result = module.solveHorizontalDistance(0, 0, 3, 4, 5) +const values = Array.from({ length: result.size() }, (_, index) => result.get(index)) +result.delete() +const [status, startX, startY, endX, endY, residual] = values +if (status > 1 || Math.abs(startY - endY) > 1e-7 || Math.abs(residual) > 1e-7 || Math.abs(Math.hypot(endX - startX, endY - startY) - 5) > 1e-7) throw new Error(`planegcs smoke failed: ${JSON.stringify(values)}`) +const verticalResult = module.solveVerticalDistance(0, 0, 4, 3, 5) +const verticalValues = Array.from({ length: verticalResult.size() }, (_, index) => verticalResult.get(index)) +verticalResult.delete() +const [verticalStatus, verticalStartX, verticalStartY, verticalEndX, verticalEndY, verticalResidual] = verticalValues +if (verticalStatus > 1 || Math.abs(verticalStartX - verticalEndX) > 1e-7 || Math.abs(verticalResidual) > 1e-7 || Math.abs(Math.hypot(verticalEndX - verticalStartX, verticalEndY - verticalStartY) - 5) > 1e-7) throw new Error(`planegcs vertical smoke failed: ${JSON.stringify(verticalValues)}`) +const distanceXResult = module.solveDistanceX(0, 0, 3, 4, 6) +const distanceXValues = Array.from({ length: distanceXResult.size() }, (_, index) => distanceXResult.get(index)) +distanceXResult.delete() +const [distanceXStatus, distanceXStartX, distanceXStartY, distanceXEndX, distanceXEndY, distanceXResidual] = distanceXValues +if (distanceXStatus > 1 || Math.abs(distanceXEndX - distanceXStartX - 6) > 1e-7 || Math.abs(distanceXStartY - distanceXEndY) > 1e-7 || Math.abs(distanceXResidual) > 1e-7) throw new Error(`planegcs distanceX smoke failed: ${JSON.stringify(distanceXValues)}`) +const distanceYResult = module.solveDistanceY(0, 0, 3, 4, 6) +const distanceYValues = Array.from({ length: distanceYResult.size() }, (_, index) => distanceYResult.get(index)) +distanceYResult.delete() +const [distanceYStatus, distanceYStartX, distanceYStartY, distanceYEndX, distanceYEndY, distanceYResidual] = distanceYValues +if (distanceYStatus > 1 || Math.abs(distanceYEndY - distanceYStartY - 6) > 1e-7 || Math.abs(distanceYStartX - distanceYEndX) > 1e-7 || Math.abs(distanceYResidual) > 1e-7) throw new Error(`planegcs distanceY smoke failed: ${JSON.stringify(distanceYValues)}`) +const angleResult = module.solveAngle(0, 0, 3, 4, 5, Math.PI / 4) +const angleValues = Array.from({ length: angleResult.size() }, (_, index) => angleResult.get(index)) +angleResult.delete() +const [angleStatus, angleStartX, angleStartY, angleEndX, angleEndY, angleLengthResidual, angleResidual] = angleValues +if (angleStatus > 1 || Math.abs(Math.hypot(angleEndX - angleStartX, angleEndY - angleStartY) - 5) > 1e-7 || Math.abs(Math.atan2(angleEndY - angleStartY, angleEndX - angleStartX) - Math.PI / 4) > 1e-7 || Math.abs(angleLengthResidual) > 1e-7 || Math.abs(angleResidual) > 1e-7) throw new Error(`planegcs angle smoke failed: ${JSON.stringify(angleValues)}`) +const circleRadiusResult = module.solveCircleRadius(2, 3, 1, 4) +const circleRadiusValues = Array.from({ length: circleRadiusResult.size() }, (_, index) => circleRadiusResult.get(index)) +circleRadiusResult.delete() +const [circleRadiusStatus, circleCenterX, circleCenterY, circleRadius, circleRadiusResidual] = circleRadiusValues +if (circleRadiusStatus > 1 || Math.abs(circleCenterX - 2) > 1e-7 || Math.abs(circleCenterY - 3) > 1e-7 || Math.abs(circleRadius - 4) > 1e-7 || Math.abs(circleRadiusResidual) > 1e-7) throw new Error(`planegcs circle radius smoke failed: ${JSON.stringify(circleRadiusValues)}`) +const circleDiameterResult = module.solveCircleDiameter(2, 3, 1, 8) +const circleDiameterValues = Array.from({ length: circleDiameterResult.size() }, (_, index) => circleDiameterResult.get(index)) +circleDiameterResult.delete() +const [circleDiameterStatus, circleDiameterCenterX, circleDiameterCenterY, circleDiameterRadius, circleDiameterResidual] = circleDiameterValues +if (circleDiameterStatus > 1 || Math.abs(circleDiameterCenterX - 2) > 1e-7 || Math.abs(circleDiameterCenterY - 3) > 1e-7 || Math.abs(circleDiameterRadius * 2 - 8) > 1e-7 || Math.abs(circleDiameterResidual) > 1e-7) throw new Error(`planegcs circle diameter smoke failed: ${JSON.stringify(circleDiameterValues)}`) +const equalLinesResult = module.solveEqualLines(0, 0, 4, 0, 1, 2, 2, 5) +const equalLinesValues = Array.from({ length: equalLinesResult.size() }, (_, index) => equalLinesResult.get(index)) +equalLinesResult.delete() +const [equalLinesStatus, equalLinesFirstStartX, equalLinesFirstStartY, equalLinesFirstEndX, equalLinesFirstEndY, equalLinesSecondStartX, equalLinesSecondStartY, equalLinesSecondEndX, equalLinesSecondEndY, equalLinesResidual] = equalLinesValues +if (equalLinesStatus > 1 || Math.abs(Math.hypot(equalLinesFirstEndX - equalLinesFirstStartX, equalLinesFirstEndY - equalLinesFirstStartY) - Math.hypot(equalLinesSecondEndX - equalLinesSecondStartX, equalLinesSecondEndY - equalLinesSecondStartY)) > 1e-7 || Math.abs(equalLinesResidual) > 1e-7) throw new Error(`planegcs equal lines smoke failed: ${JSON.stringify(equalLinesValues)}`) +const equalCirclesResult = module.solveEqualCircles(2, 3, 4, 8, 9, 1) +const equalCirclesValues = Array.from({ length: equalCirclesResult.size() }, (_, index) => equalCirclesResult.get(index)) +equalCirclesResult.delete() +const [equalCirclesStatus, equalCirclesFirstCenterX, equalCirclesFirstCenterY, equalCirclesFirstRadius, equalCirclesSecondCenterX, equalCirclesSecondCenterY, equalCirclesSecondRadius, equalCirclesResidual] = equalCirclesValues +if (equalCirclesStatus > 1 || Math.abs(equalCirclesFirstCenterX - 2) > 1e-7 || Math.abs(equalCirclesFirstCenterY - 3) > 1e-7 || Math.abs(equalCirclesSecondCenterX - 8) > 1e-7 || Math.abs(equalCirclesSecondCenterY - 9) > 1e-7 || Math.abs(equalCirclesFirstRadius - 4) > 1e-7 || Math.abs(equalCirclesSecondRadius - 4) > 1e-7 || Math.abs(equalCirclesResidual) > 1e-7) throw new Error(`planegcs equal circles smoke failed: ${JSON.stringify(equalCirclesValues)}`) +const tangentCirclesResult = module.solveTangentCircles(2, 3, 4, 10, 3, 1) +const tangentCirclesValues = Array.from({ length: tangentCirclesResult.size() }, (_, index) => tangentCirclesResult.get(index)) +tangentCirclesResult.delete() +const [tangentCirclesStatus, tangentCirclesFirstCenterX, tangentCirclesFirstCenterY, tangentCirclesFirstRadius, tangentCirclesSecondCenterX, tangentCirclesSecondCenterY, tangentCirclesSecondRadius, tangentCirclesResidual] = tangentCirclesValues +if (tangentCirclesStatus > 1 || Math.abs(tangentCirclesFirstCenterX - 2) > 1e-7 || Math.abs(tangentCirclesFirstCenterY - 3) > 1e-7 || Math.abs(tangentCirclesSecondCenterX - 10) > 1e-7 || Math.abs(tangentCirclesSecondCenterY - 3) > 1e-7 || Math.abs(tangentCirclesFirstRadius - 4) > 1e-7 || Math.abs(tangentCirclesSecondRadius - 4) > 1e-7 || Math.abs(tangentCirclesResidual) > 1e-7) throw new Error(`planegcs tangent circles smoke failed: ${JSON.stringify(tangentCirclesValues)}`) +const pointSymmetryResult = module.solvePointSymmetry(1, 2, 0, 0, 4, 6) +const pointSymmetryValues = Array.from({ length: pointSymmetryResult.size() }, (_, index) => pointSymmetryResult.get(index)) +pointSymmetryResult.delete() +const [pointSymmetryStatus, pointSymmetryFirstX, pointSymmetryFirstY, pointSymmetrySecondX, pointSymmetrySecondY, pointSymmetryCenterX, pointSymmetryCenterY, pointSymmetryResidual] = pointSymmetryValues +if (pointSymmetryStatus > 1 || Math.abs(pointSymmetryFirstX - 1) > 1e-7 || Math.abs(pointSymmetryFirstY - 2) > 1e-7 || Math.abs(pointSymmetrySecondX - 7) > 1e-7 || Math.abs(pointSymmetrySecondY - 10) > 1e-7 || Math.abs(pointSymmetryCenterX - 4) > 1e-7 || Math.abs(pointSymmetryCenterY - 6) > 1e-7 || Math.abs(pointSymmetryResidual) > 1e-7) throw new Error(`planegcs point symmetry smoke failed: ${JSON.stringify(pointSymmetryValues)}`) +const pointOnLineResult = module.solvePointOnLine(2, 3, 0, 0, 4, 0, false) +const pointOnLineValues = Array.from({ length: pointOnLineResult.size() }, (_, index) => pointOnLineResult.get(index)) +pointOnLineResult.delete() +const [pointOnLineStatus, pointOnLineX, pointOnLineY, pointOnLineStartX, pointOnLineStartY, pointOnLineEndX, pointOnLineEndY, pointOnLineResidual] = pointOnLineValues +if (pointOnLineStatus > 1 || Math.abs(pointOnLineX - 2) > 1e-7 || Math.abs(pointOnLineY) > 1e-7 || Math.abs(pointOnLineStartX) > 1e-7 || Math.abs(pointOnLineStartY) > 1e-7 || Math.abs(pointOnLineEndX - 4) > 1e-7 || Math.abs(pointOnLineEndY) > 1e-7 || Math.abs(pointOnLineResidual) > 1e-7) throw new Error(`planegcs point-on-line smoke failed: ${JSON.stringify(pointOnLineValues)}`) +const pointOnCircleResult = module.solvePointOnCircle(4, 6, 2, 3, 4) +const pointOnCircleValues = Array.from({ length: pointOnCircleResult.size() }, (_, index) => pointOnCircleResult.get(index)) +pointOnCircleResult.delete() +const [pointOnCircleStatus, pointOnCircleX, pointOnCircleY, pointOnCircleCenterX, pointOnCircleCenterY, pointOnCircleRadius, pointOnCircleResidual] = pointOnCircleValues +if (pointOnCircleStatus > 1 || Math.abs(pointOnCircleX - 4) > 1e-7 || Math.abs(pointOnCircleY - 6.464101615137754) > 1e-7 || Math.abs(pointOnCircleCenterX - 2) > 1e-7 || Math.abs(pointOnCircleCenterY - 3) > 1e-7 || Math.abs(pointOnCircleRadius - 4) > 1e-7 || Math.abs(pointOnCircleResidual) > 1e-7) throw new Error(`planegcs point-on-circle smoke failed: ${JSON.stringify(pointOnCircleValues)}`) +const pointOnArcResult = module.solvePointOnArc(2, 6, 2, 3, 4, 0, Math.PI) +const pointOnArcValues = Array.from({ length: pointOnArcResult.size() }, (_, index) => pointOnArcResult.get(index)) +pointOnArcResult.delete() +const [pointOnArcStatus, pointOnArcX, pointOnArcY, pointOnArcCenterX, pointOnArcCenterY, pointOnArcRadius, pointOnArcStartAngle, pointOnArcEndAngle, pointOnArcResidual] = pointOnArcValues +if (pointOnArcStatus > 1 || Math.abs(pointOnArcX - 2) > 1e-7 || Math.abs(pointOnArcY - 7) > 1e-7 || Math.abs(pointOnArcCenterX - 2) > 1e-7 || Math.abs(pointOnArcCenterY - 3) > 1e-7 || Math.abs(pointOnArcRadius - 4) > 1e-7 || Math.abs(pointOnArcStartAngle) > 1e-7 || Math.abs(pointOnArcEndAngle - Math.PI) > 1e-7 || Math.abs(pointOnArcResidual) > 1e-7) throw new Error(`planegcs point-on-arc smoke failed: ${JSON.stringify(pointOnArcValues)}`) +const pointOnEllipseResult = module.solvePointOnEllipse(2, 7, 2, 3, 6, 3, 3) +const pointOnEllipseValues = Array.from({ length: pointOnEllipseResult.size() }, (_, index) => pointOnEllipseResult.get(index)) +pointOnEllipseResult.delete() +const [pointOnEllipseStatus, pointOnEllipseX, pointOnEllipseY, pointOnEllipseCenterX, pointOnEllipseCenterY, pointOnEllipseFocusX, pointOnEllipseFocusY, pointOnEllipseMinorRadius, pointOnEllipseResidual] = pointOnEllipseValues +if (pointOnEllipseStatus > 1 || Math.abs(pointOnEllipseX - 2) > 1e-7 || Math.abs(pointOnEllipseY - 6) > 1e-7 || Math.abs(pointOnEllipseCenterX - 2) > 1e-7 || Math.abs(pointOnEllipseCenterY - 3) > 1e-7 || Math.abs(pointOnEllipseFocusX - 6) > 1e-7 || Math.abs(pointOnEllipseFocusY - 3) > 1e-7 || Math.abs(pointOnEllipseMinorRadius - 3) > 1e-7 || Math.abs(pointOnEllipseResidual) > 1e-7) throw new Error(`planegcs point-on-ellipse smoke failed: ${JSON.stringify(pointOnEllipseValues)}`) +const ellipseAlignmentSolves = [] +for (const alignmentType of [1, 2, 3, 4]) { + const alignmentResult = module.solveEllipseInternalAlignment(2, 3, 5, 3, 0.25, alignmentType) + const alignmentValues = Array.from({ length: alignmentResult.size() }, (_, index) => alignmentResult.get(index)) + alignmentResult.delete() + const [alignmentStatus, alignmentCenterX, alignmentCenterY, alignmentFocusX, alignmentFocusY, alignmentMinorRadius, helperStartX, helperStartY, helperEndX, helperEndY, alignmentResidual] = alignmentValues + const focalDistance = 4 + const major = { x: Math.cos(0.25), y: Math.sin(0.25) } + const minor = { x: -major.y, y: major.x } + const expectedStart = alignmentType === 1 ? { x: 2 + 5 * major.x, y: 3 + 5 * major.y } : alignmentType === 2 ? { x: 2 + 3 * minor.x, y: 3 + 3 * minor.y } : { x: 2 + (alignmentType === 3 ? 1 : -1) * focalDistance * major.x, y: 3 + (alignmentType === 3 ? 1 : -1) * focalDistance * major.y } + const expectedEnd = alignmentType === 1 ? { x: 2 - 5 * major.x, y: 3 - 5 * major.y } : alignmentType === 2 ? { x: 2 - 3 * minor.x, y: 3 - 3 * minor.y } : expectedStart + if (alignmentStatus > 1 || Math.abs(alignmentCenterX - 2) > 1e-7 || Math.abs(alignmentCenterY - 3) > 1e-7 || Math.abs(alignmentFocusX - (2 + focalDistance * major.x)) > 1e-7 || Math.abs(alignmentFocusY - (3 + focalDistance * major.y)) > 1e-7 || Math.abs(alignmentMinorRadius - 3) > 1e-7 || Math.abs(helperStartX - expectedStart.x) > 1e-7 || Math.abs(helperStartY - expectedStart.y) > 1e-7 || Math.abs(helperEndX - expectedEnd.x) > 1e-7 || Math.abs(helperEndY - expectedEnd.y) > 1e-7 || Math.abs(alignmentResidual) > 1e-7) throw new Error(`planegcs ellipse InternalAlignment smoke failed: ${JSON.stringify({ alignmentType, values: alignmentValues })}`) + ellipseAlignmentSolves.push({ alignmentType, solveStatus: alignmentStatus, residual: alignmentResidual }) +} +const ellipseAlignmentSetResult = module.solveEllipseInternalAlignmentSet(2, 3, 5, 3, 0.25) +const ellipseAlignmentSetValues = Array.from({ length: ellipseAlignmentSetResult.size() }, (_, index) => ellipseAlignmentSetResult.get(index)) +ellipseAlignmentSetResult.delete() +const [ellipseAlignmentSetStatus, ellipseAlignmentSetCenterX, ellipseAlignmentSetCenterY, ellipseAlignmentSetFocusX, ellipseAlignmentSetFocusY, ellipseAlignmentSetMinorRadius, ...ellipseAlignmentSetResiduals] = ellipseAlignmentSetValues +if (ellipseAlignmentSetStatus > 1 || Math.abs(ellipseAlignmentSetCenterX - 2) > 1e-7 || Math.abs(ellipseAlignmentSetCenterY - 3) > 1e-7 || Math.abs(ellipseAlignmentSetFocusX - (2 + 4 * Math.cos(0.25))) > 1e-7 || Math.abs(ellipseAlignmentSetFocusY - (3 + 4 * Math.sin(0.25))) > 1e-7 || Math.abs(ellipseAlignmentSetMinorRadius - 3) > 1e-7 || ellipseAlignmentSetResiduals.length !== 4 || ellipseAlignmentSetResiduals.some((value) => Math.abs(value) > 1e-7)) throw new Error(`planegcs ellipse InternalAlignment set smoke failed: ${JSON.stringify(ellipseAlignmentSetValues)}`) +const pointOnBsplineResult = module.solvePointOnCubicBspline(2, 1, 0, 0, 1, 2, 3, 2, 4, 0, 0.4) +const pointOnBsplineValues = Array.from({ length: pointOnBsplineResult.size() }, (_, index) => pointOnBsplineResult.get(index)) +pointOnBsplineResult.delete() +const [pointOnBsplineStatus, pointOnBsplineX, pointOnBsplineY, pointOnBsplineParameter, pointOnBsplineResidualX, pointOnBsplineResidualY] = pointOnBsplineValues +if (pointOnBsplineStatus > 1 || Math.abs(pointOnBsplineX - 2) > 1e-7 || Math.abs(pointOnBsplineY - 1.5) > 1e-7 || Math.abs(pointOnBsplineParameter - 0.5) > 1e-7 || Math.abs(pointOnBsplineResidualX) > 1e-7 || Math.abs(pointOnBsplineResidualY) > 1e-7) throw new Error(`planegcs point-on-B-spline smoke failed: ${JSON.stringify(pointOnBsplineValues)}`) +const bsplineWeightResult = module.solveCubicBsplineWeight(0, 0, 1, 2, 3, 2, 4, 0, 1, 0.75, 1.25, 1, 1, 1.5) +const bsplineWeightValues = Array.from({ length: bsplineWeightResult.size() }, (_, index) => bsplineWeightResult.get(index)) +bsplineWeightResult.delete() +const [bsplineWeightStatus, bsplineWeight0, bsplineWeight1, bsplineWeight2, bsplineWeight3, bsplineHelperCenterX, bsplineHelperCenterY, bsplineHelperRadius, bsplineAlignmentResidual, bsplineWeightResidual] = bsplineWeightValues +if (bsplineWeightStatus > 1 || Math.abs(bsplineWeight0 - 1) > 1e-7 || Math.abs(bsplineWeight1 - 1.5) > 1e-7 || Math.abs(bsplineWeight2 - 1.25) > 1e-7 || Math.abs(bsplineWeight3 - 1) > 1e-7 || Math.abs(bsplineHelperCenterX - 1) > 1e-7 || Math.abs(bsplineHelperCenterY - 2) > 1e-7 || Math.abs(bsplineHelperRadius - 1.5) > 1e-7 || Math.abs(bsplineAlignmentResidual) > 1e-7 || Math.abs(bsplineWeightResidual) > 1e-7) throw new Error(`planegcs B-spline Weight smoke failed: ${JSON.stringify(bsplineWeightValues)}`) +for (const firstEnd of [false, true]) { + for (const secondEnd of [false, true]) { + const coincidentResult = module.solveCoincidentLinePoints(0, 0, 4, 0, 0, 2, 3, 6, 5, firstEnd, secondEnd) + const coincidentValues = Array.from({ length: coincidentResult.size() }, (_, index) => coincidentResult.get(index)) + coincidentResult.delete() + const [coincidentStatus, firstStartX, firstStartY, firstEndX, firstEndY, secondStartX, secondStartY, secondEndX, secondEndY, coincidentResidual] = coincidentValues + const selectedFirstX = firstEnd ? firstEndX : firstStartX + const selectedFirstY = firstEnd ? firstEndY : firstStartY + const selectedSecondX = secondEnd ? secondEndX : secondStartX + const selectedSecondY = secondEnd ? secondEndY : secondStartY + if (coincidentStatus > 1 || Math.abs(selectedFirstX - selectedSecondX) > 1e-7 || Math.abs(selectedFirstY - selectedSecondY) > 1e-7 || Math.abs(coincidentResidual) > 1e-7 || Math.abs(Math.hypot(secondEndX - secondStartX, secondEndY - secondStartY) - 5) > 1e-7) throw new Error(`planegcs selectable coincident smoke failed: ${JSON.stringify({ firstEnd, secondEnd, values: coincidentValues })}`) + } +} +const snellsLawResult = module.solveSnellsLawLines(0, 0, -4, 4, 0, 0, 4, 3, -5, 0, 5, 0, 1.5, false, false) +const snellsLawValues = Array.from({ length: snellsLawResult.size() }, (_, index) => snellsLawResult.get(index)) +snellsLawResult.delete() +const [snellsLawStatus, snellsFirstStartX, snellsFirstStartY, snellsFirstEndX, snellsFirstEndY, snellsSecondStartX, snellsSecondStartY, snellsSecondEndX, snellsSecondEndY, snellsBoundaryStartX, snellsBoundaryStartY, snellsBoundaryEndX, snellsBoundaryEndY, snellsLawResidual] = snellsLawValues +if (snellsLawStatus > 1 || Math.abs(snellsFirstStartX - snellsSecondStartX) > 1e-7 || Math.abs(snellsFirstStartY - snellsSecondStartY) > 1e-7 || Math.abs(Math.hypot(snellsSecondEndX - snellsSecondStartX, snellsSecondEndY - snellsSecondStartY) - 5) > 1e-7 || Math.abs(snellsLawResidual) > 1e-7 || Math.abs(snellsBoundaryStartY) > 1e-7 || Math.abs(snellsBoundaryEndY) > 1e-7) throw new Error(`planegcs SnellsLaw smoke failed: ${JSON.stringify(snellsLawValues)}`) +const parallelResult = module.solveParallelLines(0, 0, 4, 0, 0, 2, 3, 6, 5) +const parallelValues = Array.from({ length: parallelResult.size() }, (_, index) => parallelResult.get(index)) +parallelResult.delete() +const [parallelStatus, parallelFirstStartX, parallelFirstStartY, parallelFirstEndX, parallelFirstEndY, parallelSecondStartX, parallelSecondStartY, parallelSecondEndX, parallelSecondEndY, parallelResidual] = parallelValues +const parallelCross = (parallelFirstEndX - parallelFirstStartX) * (parallelSecondEndY - parallelSecondStartY) - (parallelFirstEndY - parallelFirstStartY) * (parallelSecondEndX - parallelSecondStartX) +if (parallelStatus > 1 || Math.abs(parallelCross) > 1e-7 || Math.abs(parallelResidual) > 1e-7 || Math.abs(Math.hypot(parallelSecondEndX - parallelSecondStartX, parallelSecondEndY - parallelSecondStartY) - 5) > 1e-7) throw new Error(`planegcs parallel smoke failed: ${JSON.stringify(parallelValues)}`) +const perpendicularResult = module.solvePerpendicularLines(0, 0, 4, 0, 0, 2, 3, 6, 5) +const perpendicularValues = Array.from({ length: perpendicularResult.size() }, (_, index) => perpendicularResult.get(index)) +perpendicularResult.delete() +const [perpendicularStatus, perpendicularFirstStartX, perpendicularFirstStartY, perpendicularFirstEndX, perpendicularFirstEndY, perpendicularSecondStartX, perpendicularSecondStartY, perpendicularSecondEndX, perpendicularSecondEndY, perpendicularResidual] = perpendicularValues +const perpendicularDot = (perpendicularFirstEndX - perpendicularFirstStartX) * (perpendicularSecondEndX - perpendicularSecondStartX) + (perpendicularFirstEndY - perpendicularFirstStartY) * (perpendicularSecondEndY - perpendicularSecondStartY) +if (perpendicularStatus > 1 || Math.abs(perpendicularDot) > 1e-7 || Math.abs(perpendicularResidual) > 1e-7 || Math.abs(Math.hypot(perpendicularSecondEndX - perpendicularSecondStartX, perpendicularSecondEndY - perpendicularSecondStartY) - 5) > 1e-7) throw new Error(`planegcs perpendicular smoke failed: ${JSON.stringify(perpendicularValues)}`) +console.log(JSON.stringify({ status: 'planegcs-smoke-pass', solveStatus: status, line: { startX, startY, endX, endY }, residual, vertical: { solveStatus: verticalStatus, startX: verticalStartX, startY: verticalStartY, endX: verticalEndX, endY: verticalEndY, residual: verticalResidual }, distanceX: { solveStatus: distanceXStatus, startX: distanceXStartX, startY: distanceXStartY, endX: distanceXEndX, endY: distanceXEndY, residual: distanceXResidual }, distanceY: { solveStatus: distanceYStatus, startX: distanceYStartX, startY: distanceYStartY, endX: distanceYEndX, endY: distanceYEndY, residual: distanceYResidual }, angle: { solveStatus: angleStatus, startX: angleStartX, startY: angleStartY, endX: angleEndX, endY: angleEndY, lengthResidual: angleLengthResidual, residual: angleResidual }, circleRadius: { solveStatus: circleRadiusStatus, centerX: circleCenterX, centerY: circleCenterY, radius: circleRadius, residual: circleRadiusResidual }, circleDiameter: { solveStatus: circleDiameterStatus, centerX: circleDiameterCenterX, centerY: circleDiameterCenterY, radius: circleDiameterRadius, residual: circleDiameterResidual }, equalLines: { solveStatus: equalLinesStatus, firstLength: Math.hypot(equalLinesFirstEndX - equalLinesFirstStartX, equalLinesFirstEndY - equalLinesFirstStartY), secondLength: Math.hypot(equalLinesSecondEndX - equalLinesSecondStartX, equalLinesSecondEndY - equalLinesSecondStartY), residual: equalLinesResidual }, equalCircles: { solveStatus: equalCirclesStatus, firstRadius: equalCirclesFirstRadius, secondRadius: equalCirclesSecondRadius, residual: equalCirclesResidual }, tangentCircles: { solveStatus: tangentCirclesStatus, firstRadius: tangentCirclesFirstRadius, secondRadius: tangentCirclesSecondRadius, residual: tangentCirclesResidual }, snellsLaw: { solveStatus: snellsLawStatus, ratio: 1.5, junction: { x: snellsSecondStartX, y: snellsSecondStartY }, secondEnd: { x: snellsSecondEndX, y: snellsSecondEndY }, boundary: { startX: snellsBoundaryStartX, startY: snellsBoundaryStartY, endX: snellsBoundaryEndX, endY: snellsBoundaryEndY }, residual: snellsLawResidual }, ellipseInternalAlignment: ellipseAlignmentSolves, bsplineWeight: { solveStatus: bsplineWeightStatus, weights: [bsplineWeight0, bsplineWeight1, bsplineWeight2, bsplineWeight3], helper: { centerX: bsplineHelperCenterX, centerY: bsplineHelperCenterY, radius: bsplineHelperRadius }, alignmentResidual: bsplineAlignmentResidual, residual: bsplineWeightResidual }, parallel: { solveStatus: parallelStatus, startX: parallelSecondStartX, startY: parallelSecondStartY, endX: parallelSecondEndX, endY: parallelSecondEndY, residual: parallelResidual }, perpendicular: { solveStatus: perpendicularStatus, startX: perpendicularSecondStartX, startY: perpendicularSecondStartY, endX: perpendicularSecondEndX, endY: perpendicularSecondEndY, residual: perpendicularResidual } }, null, 2)) diff --git a/native/planegcs/stubs/Base/Console.h b/native/planegcs/stubs/Base/Console.h new file mode 100644 index 0000000..04fe88b --- /dev/null +++ b/native/planegcs/stubs/Base/Console.h @@ -0,0 +1,40 @@ +#ifndef WEB_FREECAD_BASE_CONSOLE_H +#define WEB_FREECAD_BASE_CONSOLE_H + +#include + +namespace Base +{ +class TimeElapsed: public std::chrono::time_point +{ +public: + TimeElapsed() + : std::chrono::time_point(std::chrono::steady_clock::now()) + {} + + static float diffTimeF(const TimeElapsed& start, const TimeElapsed& end = TimeElapsed()) + { + return std::chrono::duration(end - start).count(); + } +}; + +class ConsoleSingleton +{ +public: + template + void log(const char*, Args&&...) + {} + + template + void warning(const char*, Args&&...) + {} +}; + +inline ConsoleSingleton& Console() +{ + static ConsoleSingleton console; + return console; +} +} // namespace Base + +#endif diff --git a/native/planegcs/stubs/FCConfig.h b/native/planegcs/stubs/FCConfig.h new file mode 100644 index 0000000..25e7608 --- /dev/null +++ b/native/planegcs/stubs/FCConfig.h @@ -0,0 +1,3 @@ +#ifndef WEB_FREECAD_FCCONFIG_H +#define WEB_FREECAD_FCCONFIG_H +#endif diff --git a/native/planegcs/stubs/FCGlobal.h b/native/planegcs/stubs/FCGlobal.h new file mode 100644 index 0000000..27d1b59 --- /dev/null +++ b/native/planegcs/stubs/FCGlobal.h @@ -0,0 +1,6 @@ +#ifndef WEB_FREECAD_FCGLOBAL_H +#define WEB_FREECAD_FCGLOBAL_H +#define FREECAD_DECL_EXPORT +#define FREECAD_DECL_IMPORT +#define BaseExport +#endif diff --git a/package-lock.json b/package-lock.json index f767ebe..cad93c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "@bitbybit-dev/occt": "1.1.1", "@bitbybit-dev/occt-worker": "1.1.1", "@sqlite.org/sqlite-wasm": "3.53.0-build1", - "fast-xml-parser": "^5.10.1", - "fflate": "^0.8.3", + "fast-xml-parser": "5.10.1", + "fflate": "0.8.3", "lucide-react": "^0.468.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -25,7 +25,8 @@ "@vitejs/plugin-react": "^4.3.4", "tsx": "^4.23.1", "typescript": "^5.7.2", - "vite": "^6.0.5" + "vite": "^6.0.5", + "ws": "8.21.3" }, "engines": { "node": "22.23.2" @@ -2446,6 +2447,28 @@ } } }, + "node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xml-naming": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz", diff --git a/package.json b/package.json index 048ebe3..1d7e9ef 100644 --- a/package.json +++ b/package.json @@ -14,18 +14,259 @@ "check:baseline": "node scripts/check-baseline.mjs", "check:freecad-source": "node scripts/verify-freecad-source.mjs", "check:bitbybit-history": "node scripts/check-bitbybit-history-surface.mjs", + "check:execution-plan": "node scripts/check-freecad-execution-plan.mjs && node scripts/check-freecad-web-exact-parity-plan.mjs && node scripts/check-freecad-web-exact-promotion.mjs && node scripts/check-freecad-oracle-coverage.mjs && node scripts/check-freecad-golden-coverage.mjs && node scripts/generate-freecad-parameter-mutation-report.mjs --check", + "check:freecad-web-exact-parity-plan": "node scripts/check-freecad-web-exact-parity-plan.mjs", + "check:freecad-web-exact-promotion": "node scripts/check-freecad-web-exact-promotion.mjs", + "generate:freecad-inventory": "node scripts/generate-freecad-source-inventory.mjs", + "check:freecad-inventory": "node scripts/check-freecad-source-inventory.mjs", + "generate:freecad-type-properties": "node scripts/generate-freecad-type-property-inventory.mjs", + "check:freecad-type-properties": "node scripts/check-freecad-type-property-inventory.mjs", + "generate:freecad-gui-commands": "node scripts/generate-freecad-gui-command-inventory.mjs", + "check:freecad-gui-commands": "node scripts/check-freecad-gui-command-inventory.mjs", + "generate:freecad-entrypoints": "node scripts/generate-freecad-entrypoint-inventory.mjs", + "check:freecad-entrypoints": "node scripts/check-freecad-entrypoint-inventory.mjs", + "check:freecad-oracle-coverage": "node scripts/check-freecad-oracle-coverage.mjs", + "check:freecad-golden-coverage": "node scripts/check-freecad-golden-coverage.mjs", + "generate:freecad-parameter-mutations": "node scripts/generate-freecad-parameter-mutation-report.mjs", + "check:freecad-parameter-mutations": "node scripts/generate-freecad-parameter-mutation-report.mjs --check", + "probe:freecad-partdesign-failures": "node scripts/run-freecad-partdesign-failure-oracle.mjs", + "check:freecad-partdesign-failures": "node scripts/check-freecad-partdesign-failure-oracle.mjs", + "probe:freecad-partdesign-revolution-groove": "node scripts/run-freecad-partdesign-revolution-groove-oracle.mjs", + "check:freecad-partdesign-revolution-groove": "node scripts/check-freecad-partdesign-revolution-groove-oracle.mjs", + "probe:freecad-part-builders": "node scripts/run-freecad-part-builders-oracle.mjs", + "check:freecad-part-builders": "node scripts/check-freecad-part-builders-oracle.mjs", + "generate:freecad-golden-fixtures": "node scripts/generate-freecad-golden-fixtures.mjs", + "check:freecad-golden-fixtures": "node scripts/check-freecad-golden-fixtures.mjs", + "check:freecad-semantic-comparator": "node scripts/check-freecad-semantic-comparator.mjs", + "check:freecad-fcstd-roundtrip": "node scripts/check-freecad-fcstd-roundtrip-verification.mjs", + "probe:freecad-composite-history-elementmap": "node scripts/run-freecad-composite-history-elementmap-oracle.mjs", + "check:freecad-composite-history-elementmap": "npx tsx scripts/check-freecad-composite-history-elementmap-oracle.mjs", + "check:freecad-exact-history-elementmap-gate": "npx tsx scripts/check-freecad-exact-history-elementmap-gate.mjs", + "check:freecad-native-naming-evidence": "npx tsx scripts/check-freecad-native-naming-evidence.mjs", + "test:golden:freecad:failures": "node scripts/run-freecad-golden-failures.mjs", + "test:golden:freecad:family-failures": "node scripts/run-freecad-golden-failures.mjs --manifest=fixtures/freecad-golden/feature-families/failures/manifest.json", + "check:occt-history-artifact": "node scripts/check-occt-history-browser-artifact.mjs", + "test:browser-occt": "node scripts/run-browser-occt-harness.mjs", + "test:freecad:threeway": "node scripts/run-freecad-threeway-boolean.mjs", + "check:browser-occt": "node scripts/check-occt-browser-verification.mjs", + "check:freecad:threeway": "node scripts/check-freecad-threeway.mjs", + "check:occt-upstream-drift": "node scripts/check-occt-upstream-drift.mjs", + "test:chrome-topology": "node scripts/run-chrome-topology-harness.mjs", + "check:chrome-topology": "node scripts/check-chrome-topology-verification.mjs", "check:facade-boundary": "node scripts/check-facade-boundary.mjs", "fetch:freecad-source": "node scripts/fetch-freecad-source.mjs", "configure:freecad-native": "node scripts/configure-freecad-native.mjs", "build:freecad-native": "node scripts/build-freecad-native.mjs", + "check:freecad-desktop-oracle": "node scripts/check-freecad-desktop-oracle.mjs", + "probe:freecad-sketcher-constraints": "node scripts/run-freecad-sketcher-constraint-oracle.mjs", + "check:freecad-sketcher-constraints": "node scripts/check-freecad-sketcher-constraint-oracle.mjs && node scripts/check-freecad-partdesign-profile-oracle.mjs && node scripts/check-freecad-partdesign-base-oracle.mjs && node scripts/check-freecad-partdesign-loft-oracle.mjs && node scripts/check-freecad-partdesign-dressup-oracle.mjs && node scripts/check-freecad-partdesign-transform-oracle.mjs && node scripts/check-freecad-partdesign-failure-oracle.mjs && node scripts/check-freecad-partdesign-revolution-groove-oracle.mjs && node scripts/check-freecad-part-builders-oracle.mjs && node scripts/check-freecad-sketcher-editor-oracle.mjs", + "probe:freecad-partdesign-profiles": "node scripts/run-freecad-partdesign-profile-oracle.mjs", + "check:freecad-partdesign-profiles": "node scripts/check-freecad-partdesign-profile-oracle.mjs", + "probe:freecad-partdesign-base": "node scripts/run-freecad-partdesign-base-oracle.mjs", + "check:freecad-partdesign-base": "node scripts/check-freecad-partdesign-base-oracle.mjs", + "probe:freecad-partdesign-loft": "node scripts/run-freecad-partdesign-loft-oracle.mjs", + "check:freecad-partdesign-loft": "node scripts/check-freecad-partdesign-loft-oracle.mjs", + "probe:freecad-partdesign-dressup": "node scripts/run-freecad-partdesign-dressup-oracle.mjs", + "check:freecad-partdesign-dressup": "node scripts/check-freecad-partdesign-dressup-oracle.mjs", + "probe:freecad-partdesign-transform": "node scripts/run-freecad-partdesign-transform-oracle.mjs", + "check:freecad-partdesign-transform": "node scripts/check-freecad-partdesign-transform-oracle.mjs", + "probe:freecad-sketcher-editor": "node scripts/run-freecad-sketcher-editor-oracle.mjs", + "check:freecad-sketcher-editor": "node scripts/check-freecad-sketcher-editor-oracle.mjs", + "test:freecad-fcstd-native": "tsx scripts/run-freecad-fcstd-native-oracle.ts", + "probe:freecad-cam-path": "tsx scripts/run-freecad-cam-path-oracle.ts", + "check:freecad-cam-path": "node scripts/check-freecad-cam-path-oracle.mjs", + "test:freecad-cam-path-report": "node --test tests/freecadCamPathOracle.test.mjs", "build:occt-history": "bash native/occt-history/build.sh", "test:occt-history": "node native/occt-history/smoke-test.mjs", + "build:planegcs": "bash native/planegcs/build.sh", + "test:planegcs": "node native/planegcs/smoke-test.mjs", + "check:planegcs-artifact": "node scripts/check-planegcs-artifact.mjs", + "test:chrome-planegcs": "node scripts/run-chrome-planegcs-harness.mjs", + "check:chrome-planegcs": "node scripts/check-chrome-planegcs-verification.mjs", + "test:chrome-persistence": "node scripts/run-chrome-persistence-harness.mjs", + "check:chrome-persistence": "node scripts/check-chrome-persistence-verification.mjs", + "test:chrome-app-e2e": "node scripts/run-chrome-app-e2e.mjs", + "check:chrome-app-e2e": "node scripts/check-chrome-app-e2e-verification.mjs", + "test:chrome-partdesign-lifecycle": "node scripts/run-chrome-partdesign-lifecycle.mjs", + "check:chrome-partdesign-lifecycle": "node scripts/check-chrome-partdesign-lifecycle.mjs", + "check:partdesign-closure": "node scripts/check-partdesign-closure.mjs", + "check:pwa": "node scripts/check-pwa-assets.mjs", + "test:chrome-offline": "node scripts/run-chrome-offline.mjs", + "check:chrome-offline": "node scripts/check-chrome-offline.mjs", + "test:chrome-geometry-features": "node scripts/run-chrome-geometry-features.mjs", + "check:chrome-geometry-features": "node scripts/check-chrome-geometry-features.mjs", + "test:chrome-native-history": "node scripts/run-chrome-native-history.mjs", + "check:chrome-native-history": "node scripts/check-chrome-native-history.mjs", + "test:chrome-native-pad-history": "node scripts/run-chrome-native-pad-history.mjs", + "check:chrome-native-pad-history": "node scripts/check-chrome-native-pad-history.mjs", + "test:chrome-native-pocket-history": "node scripts/run-chrome-native-pocket-history.mjs", + "check:chrome-native-pocket-history": "node scripts/check-chrome-native-pocket-history.mjs", + "test:chrome-native-revolution-history": "node scripts/run-chrome-native-revolution-history.mjs", + "check:chrome-native-revolution-history": "node scripts/check-chrome-native-revolution-history.mjs", + "test:chrome-native-groove-history": "node scripts/run-chrome-native-groove-history.mjs", + "check:chrome-native-groove-history": "node scripts/check-chrome-native-groove-history.mjs", + "test:chrome-native-fillet-history": "node scripts/run-chrome-native-fillet-history.mjs", + "check:chrome-native-fillet-history": "node scripts/check-chrome-native-fillet-history.mjs", + "test:chrome-native-chamfer-history": "node scripts/run-chrome-native-chamfer-history.mjs", + "check:chrome-native-chamfer-history": "node scripts/check-chrome-native-chamfer-history.mjs", + "test:chrome-native-hole-history": "node scripts/run-chrome-native-hole-history.mjs", + "check:chrome-native-hole-history": "node scripts/check-chrome-native-hole-history.mjs", + "test:chrome-native-draft-history": "node scripts/run-chrome-native-draft-history.mjs", + "check:chrome-native-draft-history": "node scripts/check-chrome-native-draft-history.mjs", + "test:chrome-sketcher-diagnostics": "node scripts/run-chrome-sketcher-diagnostics.mjs", + "check:chrome-sketcher-diagnostics": "node scripts/check-chrome-sketcher-diagnostics.mjs", + "test:chrome-profile-validation": "node scripts/run-chrome-profile-validation.mjs", + "check:chrome-profile-validation": "node scripts/check-chrome-profile-validation.mjs", + "test:chrome-sketcher-editor": "node scripts/run-chrome-sketcher-editor.mjs", + "check:chrome-sketcher-editor": "node scripts/check-chrome-sketcher-editor.mjs", + "test:chrome-sketcher-bspline": "node scripts/run-chrome-sketcher-bspline.mjs", + "check:chrome-sketcher-bspline": "node scripts/check-chrome-sketcher-bspline.mjs", + "test:chrome-sketcher-stress": "node scripts/run-chrome-sketcher-stress.mjs", + "check:chrome-sketcher-stress": "node scripts/check-chrome-sketcher-stress.mjs", + "test:chrome-part-primitives": "node scripts/run-chrome-part-primitives.mjs", + "check:chrome-part-primitives": "node scripts/check-chrome-part-primitives.mjs", + "test:chrome-partdesign-transform": "node scripts/run-chrome-partdesign-transform.mjs", + "check:chrome-partdesign-transform": "node scripts/check-chrome-partdesign-transform.mjs", + "test:chrome-partdesign-loft": "node scripts/run-chrome-partdesign-loft.mjs", + "check:chrome-partdesign-loft": "node scripts/check-chrome-partdesign-loft.mjs", + "test:chrome-fcstd-semantic": "node scripts/run-chrome-fcstd-semantic.mjs", + "check:chrome-fcstd-semantic": "node scripts/check-chrome-fcstd-semantic.mjs", + "test:chrome-spreadsheet": "node scripts/run-chrome-spreadsheet.mjs", + "check:chrome-spreadsheet": "node scripts/check-chrome-spreadsheet.mjs", + "test:chrome-plot": "node scripts/run-chrome-plot.mjs", + "check:chrome-plot": "node scripts/check-chrome-plot.mjs", + "test:chrome-draft": "node scripts/run-chrome-draft.mjs", + "check:chrome-draft": "node scripts/check-chrome-draft.mjs", + "test:chrome-techdraw": "node scripts/run-chrome-techdraw.mjs", + "check:chrome-techdraw": "node scripts/check-chrome-techdraw.mjs", + "test:chrome-assembly": "node scripts/run-chrome-assembly.mjs", + "check:chrome-assembly": "node scripts/check-chrome-assembly.mjs", + "test:chrome-mesh": "node scripts/run-chrome-mesh.mjs", + "check:chrome-mesh": "node scripts/check-chrome-mesh.mjs", + "test:chrome-inspection": "node scripts/run-chrome-inspection.mjs", + "check:chrome-inspection": "node scripts/check-chrome-inspection.mjs", + "test:chrome-bim": "node scripts/run-chrome-bim.mjs", + "check:chrome-bim": "node scripts/check-chrome-bim.mjs", + "test:chrome-cam": "node scripts/run-chrome-cam.mjs", + "check:chrome-cam": "node scripts/check-chrome-cam.mjs", + "check:cam-parity": "node scripts/check-cam-parity.mjs", + "test:chrome-fem": "node scripts/run-chrome-fem.mjs", + "check:chrome-fem": "node scripts/check-chrome-fem.mjs", + "test:chrome-robot": "node scripts/run-chrome-robot.mjs", + "check:chrome-robot": "node scripts/check-chrome-robot.mjs", + "test:chrome-data": "node scripts/run-chrome-data.mjs", + "test:chrome-addon": "node scripts/run-chrome-addon.mjs", + "test:chrome-script": "node scripts/run-chrome-script.mjs", + "test:chrome-surface": "node scripts/run-chrome-surface.mjs", + "test:chrome-qa08": "node scripts/run-chrome-qa08.mjs", + "test:chrome-secondary-formats": "node scripts/run-chrome-secondary-formats.mjs", + "test:chrome-performance": "node scripts/run-chrome-performance.mjs", + "test:chrome-production-document": "node scripts/run-chrome-production-document.mjs", + "test:chrome-engineering": "node scripts/run-chrome-engineering.mjs", + "test:chrome-security": "node scripts/run-chrome-security.mjs", + "check:chrome-data": "node scripts/check-chrome-data.mjs", + "check:chrome-addon": "node scripts/check-chrome-addon.mjs", + "check:chrome-script": "node scripts/check-chrome-script.mjs && npm run check:platform-closure", + "check:platform-closure": "node scripts/check-platform-closure.mjs", + "check:chrome-surface": "node scripts/check-chrome-surface.mjs", + "check:chrome-qa08": "node scripts/check-chrome-qa08.mjs", + "check:chrome-secondary-formats": "node scripts/check-chrome-secondary-formats.mjs", + "check:chrome-performance": "node scripts/check-chrome-performance.mjs", + "check:chrome-production-document": "node scripts/check-chrome-production-document.mjs", + "check:document-closure": "node scripts/check-document-closure.mjs", + "check:chrome-engineering": "node scripts/check-chrome-engineering.mjs && npm run check:engineering-closure", + "check:engineering-closure": "node scripts/check-engineering-closure.mjs", + "check:chrome-security": "node scripts/check-chrome-security.mjs", + "test:chrome-fault-injection": "node scripts/run-chrome-fault-injection.mjs", + "check:chrome-fault-injection": "node scripts/check-chrome-fault-injection.mjs", + "test:chrome-opfs-migration": "node scripts/run-chrome-opfs-migration.mjs", + "check:chrome-opfs-migration": "node scripts/check-chrome-opfs-migration.mjs", + "test:chrome-fcstd-golden": "node scripts/run-chrome-fcstd-golden.mjs", + "check:chrome-fcstd-golden": "node scripts/check-chrome-fcstd-golden-verification.mjs", + "test:chrome-fcstd-roundtrip": "node scripts/run-chrome-fcstd-roundtrip.mjs", + "check:chrome-fcstd-roundtrip": "node scripts/check-chrome-fcstd-roundtrip.mjs", + "check:built-pwa": "node scripts/check-built-pwa-assets.mjs", + "test:spreadsheet": "tsx --test tests/spreadsheet.test.ts", + "test:plot": "tsx --test tests/plot.test.ts", + "test:draft": "tsx --test tests/draft.test.ts", + "test:techdraw": "tsx --test tests/techDraw.test.ts", + "test:assembly": "tsx --test tests/assembly.test.ts", + "test:mesh": "tsx --test tests/mesh.test.ts", + "test:inspection": "tsx --test tests/inspection.test.ts", + "test:bim": "tsx --test tests/bim.test.ts", + "test:cam": "tsx --test tests/cam.test.ts", + "test:cam-pipeline": "tsx --test tests/camPipeline.test.ts", + "check:cam-pipeline": "node scripts/check-cam-pipeline.mjs", + "test:cam-native-simulation": "tsx --test tests/camNativeSimulation.test.ts", + "check:opencamlib-wasm": "node scripts/check-opencamlib-wasm.mjs", + "build:camotics-native": "bash scripts/build-camotics-native.sh", + "check:camotics-native": "node scripts/check-camotics-native.mjs", + "check:camotics-gui-tpl": "node scripts/check-camotics-gui-tpl.mjs", + "build:camotics-wasm": "bash native/camotics-wasm/build.sh", + "check:camotics-wasm": "node scripts/check-camotics-wasm.mjs", + "test:camotics-wasm": "tsx --test tests/camoticsWasm.test.ts", + "test:chrome-camotics-wasm": "node scripts/run-chrome-camotics-wasm.mjs", + "check:chrome-camotics-wasm": "node scripts/check-chrome-camotics-wasm.mjs", + "test:chrome-cam-native-simulation": "node scripts/run-chrome-cam-native-simulation.mjs", + "check:chrome-cam-native-simulation": "node scripts/check-chrome-cam-native-simulation.mjs", + "test:chrome-cam-linuxcnc-machine": "node scripts/run-chrome-cam-linuxcnc-machine.mjs", + "check:chrome-cam-linuxcnc-machine": "node scripts/check-chrome-cam-linuxcnc-machine.mjs", + "test:fem": "tsx --test tests/fem.test.ts", + "test:robot": "tsx --test tests/robot.test.ts", + "test:data": "tsx --test tests/dataModules.test.ts", + "test:addon": "tsx --test tests/addonGovernance.test.ts", + "test:script": "tsx --test tests/scriptSandbox.test.ts", + "test:surface": "tsx --test tests/surface.test.ts", + "test:locale": "tsx --test tests/locale.test.ts", + "test:secondary-formats": "tsx --test tests/secondaryFormats.test.ts", + "test:performance": "tsx --test tests/performanceBudget.test.ts", + "test:production-document": "tsx --test tests/productionDocument.test.ts", + "test:engineering": "tsx --test tests/engineeringProject.test.ts", + "test:security-preflight": "tsx --test tests/securityPreflight.test.ts", + "test:fcstd-roundtrip": "tsx --test tests/fcstdRoundTrip.test.ts", + "test:fcstd-hardening": "tsx scripts/run-fcstd-hardening.ts", + "check:fcstd-hardening": "tsx scripts/run-fcstd-hardening.ts", + "check:fcstd-closure": "node scripts/check-fcstd-closure.mjs", "test:facade": "tsx --test tests/facade.test.ts", + "generate:sbom": "node scripts/generate-sbom.mjs", + "check:sbom": "node scripts/generate-sbom.mjs --check", + "generate:release-artifacts": "node scripts/sign-release-artifacts.mjs", + "sign:release-artifacts": "node scripts/sign-release-artifacts.mjs", + "check:release-signing-key": "node scripts/check-release-signing-key.mjs", + "check:release-artifacts": "node scripts/generate-release-artifacts.mjs --check", + "check:release-closure": "node scripts/check-release-closure.mjs", + "test:release-signature": "node --test scripts/release-signature.test.mjs", + "test:project-migration": "tsx scripts/run-project-migration-rehearsal.ts", + "check:project-migration": "tsx scripts/run-project-migration-rehearsal.ts --check", + "check:security-baseline": "node scripts/check-security-baseline.mjs", + "test:dependency-audit": "node scripts/run-dependency-audit.mjs", + "check:dependency-audit": "node scripts/check-dependency-audit.mjs", + "test:fcstd-fuzz": "tsx scripts/run-fcstd-fuzz.ts", + "test:geometry-input-fuzz": "tsx scripts/run-geometry-input-fuzz.ts", + "test:sketch-solver-fuzz": "tsx scripts/run-sketch-solver-fuzz.ts", + "check:quality-closure": "node scripts/check-quality-closure.mjs", + "test:sketcher-stress": "tsx scripts/run-sketcher-stress.ts", + "test:topology-replay": "tsx scripts/run-topology-mutation-replay.ts", "test:golden": "node --test tests/goldenReplay.test.mjs", "test:golden:freecad": "node scripts/run-freecad-golden.mjs", + "test:golden:freecad:families": "node scripts/run-freecad-golden.mjs --manifest=fixtures/freecad-golden/feature-families/manifest.json", "probe:freecad-reference": "node scripts/run-freecad-reference-probe.mjs", "check:runtime": "node scripts/check-runtime.mjs", - "verify": "npm run check:runtime && npm run check:baseline && npm run check:bitbybit-history && npm run check:facade-boundary && npm run test:golden && npm run test:facade && npm run build" + "verify": "npm run check:runtime && npm run check:baseline && npm run check:bitbybit-history && npm run check:execution-plan && npm run check:freecad-sketcher-constraints && npm run check:freecad-inventory && npm run check:freecad-type-properties && npm run check:freecad-gui-commands && npm run check:freecad-entrypoints && npm run check:freecad-golden-fixtures && npm run check:freecad-semantic-comparator && npm run check:freecad-fcstd-roundtrip && npm run check:freecad-composite-history-elementmap && npm run check:freecad-exact-history-elementmap-gate && npm run check:freecad-native-naming-evidence && npm run check:fcstd-hardening && npm run check:occt-history-artifact && npm run check:planegcs-artifact && npm run check:browser-occt && npm run check:chrome-topology && npm run check:chrome-planegcs && npm run check:chrome-fault-injection && npm run check:chrome-opfs-migration && npm run check:chrome-persistence && npm run check:chrome-app-e2e && npm run check:chrome-partdesign-lifecycle && npm run check:pwa && npm run check:chrome-offline && npm run check:chrome-geometry-features && npm run check:chrome-native-history && npm run check:chrome-native-pad-history && npm run check:chrome-native-pocket-history && npm run check:chrome-native-loft-history && npm run check:chrome-native-pipe-history && npm run check:chrome-native-revolution-history && npm run check:chrome-native-groove-history && npm run check:chrome-native-fillet-history && npm run check:chrome-native-chamfer-history && npm run check:chrome-native-hole-history && npm run check:chrome-native-draft-history && npm run check:chrome-native-thickness-history && npm run check:chrome-native-linear-pattern-history && npm run check:chrome-native-polar-pattern-history && npm run check:chrome-native-mirrored-history && npm run check:chrome-native-multi-transform-history && npm run check:chrome-sketcher-diagnostics && npm run check:chrome-profile-validation && npm run check:chrome-sketcher-editor && npm run check:chrome-sketcher-bspline && npm run check:chrome-sketcher-stress && npm run check:chrome-part-primitives && npm run check:chrome-partdesign-transform && npm run check:chrome-partdesign-loft && npm run check:partdesign-closure && npm run check:chrome-fcstd-semantic && npm run check:chrome-fcstd-roundtrip && npm run check:fcstd-closure && npm run check:chrome-spreadsheet && npm run check:chrome-plot && npm run check:chrome-draft && npm run check:chrome-techdraw && npm run check:chrome-assembly && npm run check:chrome-mesh && npm run check:chrome-inspection && npm run check:chrome-bim && npm run check:chrome-cam && npm run check:cam-parity && npm run check:cam-pipeline && npm run check:opencamlib-wasm && npm run check:camotics-native && npm run check:camotics-gui-tpl && npm run check:camotics-wasm && npm run check:chrome-camotics-wasm && npm run check:chrome-cam-native-simulation && npm run check:chrome-cam-linuxcnc-machine && npm run check:chrome-fem && npm run check:chrome-robot && npm run check:chrome-data && npm run check:chrome-addon && npm run check:chrome-script && npm run check:chrome-surface && npm run check:chrome-qa08 && npm run check:chrome-secondary-formats && npm run check:chrome-performance && npm run check:chrome-production-document && npm run check:document-closure && npm run check:chrome-engineering && npm run check:chrome-security && npm run check:chrome-fcstd-golden && npm run check:sbom && npm run check:project-migration && npm run check:security-baseline && npm run check:dependency-audit && npm run check:freecad:threeway && npm run check:occt-upstream-drift && npm run check:facade-boundary && npm run test:golden && npm run test:spreadsheet && npm run test:plot && npm run test:draft && npm run test:techdraw && npm run test:assembly && npm run test:mesh && npm run test:inspection && npm run test:bim && npm run test:cam && npm run test:camotics-wasm && npm run test:fem && npm run test:robot && npm run test:data && npm run test:addon && npm run test:script && npm run test:surface && npm run test:locale && npm run test:secondary-formats && npm run test:performance && npm run test:production-document && npm run test:engineering && npm run test:security-preflight && npm run test:fcstd-roundtrip && npm run test:facade && npm run test:fcstd-fuzz && npm run test:geometry-input-fuzz && npm run test:sketch-solver-fuzz && npm run check:quality-closure && npm run test:planegcs && npm run test:project-migration && npm run test:sketcher-stress && npm run test:topology-replay && npm run build && npm run check:built-pwa && npm run generate:release-artifacts && npm run check:release-artifacts && npm run check:release-closure && npm run test:release-signature", + "test:chrome-native-thickness-history": "node scripts/run-chrome-native-thickness-history.mjs", + "check:chrome-native-thickness-history": "node scripts/check-chrome-native-thickness-history.mjs", + "test:chrome-native-linear-pattern-history": "node scripts/run-chrome-native-linear-pattern-history.mjs", + "check:chrome-native-linear-pattern-history": "node scripts/check-chrome-native-linear-pattern-history.mjs", + "test:chrome-native-polar-pattern-history": "node scripts/run-chrome-native-polar-pattern-history.mjs", + "check:chrome-native-polar-pattern-history": "node scripts/check-chrome-native-polar-pattern-history.mjs", + "test:chrome-native-mirrored-history": "node scripts/run-chrome-native-mirrored-history.mjs", + "check:chrome-native-mirrored-history": "node scripts/check-chrome-native-mirrored-history.mjs", + "test:chrome-native-multi-transform-history": "node scripts/run-chrome-native-multi-transform-history.mjs", + "check:chrome-native-multi-transform-history": "node scripts/check-chrome-native-multi-transform-history.mjs", + "test:chrome-native-loft-history": "node scripts/run-chrome-native-loft-history.mjs", + "check:chrome-native-loft-history": "node scripts/check-chrome-native-loft-history.mjs", + "test:chrome-native-pipe-history": "node scripts/run-chrome-native-pipe-history.mjs", + "check:chrome-native-pipe-history": "node scripts/check-chrome-native-pipe-history.mjs" }, "dependencies": { "@bitbybit-dev/occt": "1.1.1", @@ -45,6 +286,7 @@ "@vitejs/plugin-react": "^4.3.4", "tsx": "^4.23.1", "typescript": "^5.7.2", - "vite": "^6.0.5" + "vite": "^6.0.5", + "ws": "8.21.3" } } diff --git a/public/_headers b/public/_headers new file mode 100644 index 0000000..000d01d --- /dev/null +++ b/public/_headers @@ -0,0 +1,6 @@ +/* + Cross-Origin-Opener-Policy: same-origin + Cross-Origin-Embedder-Policy: require-corp + Cross-Origin-Resource-Policy: same-origin + Content-Security-Policy: default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; worker-src 'self' blob:; connect-src 'self'; img-src 'self' data: blob:; font-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'none' + Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=() diff --git a/public/chrome-addon-harness.html b/public/chrome-addon-harness.html new file mode 100644 index 0000000..b2b1e25 --- /dev/null +++ b/public/chrome-addon-harness.html @@ -0,0 +1 @@ +Chrome Addon Harness
running
diff --git a/public/chrome-assembly-harness.html b/public/chrome-assembly-harness.html new file mode 100644 index 0000000..41aa4a4 --- /dev/null +++ b/public/chrome-assembly-harness.html @@ -0,0 +1,5 @@ + + +Chrome Assembly harness +
running
+ diff --git a/public/chrome-bim-harness.html b/public/chrome-bim-harness.html new file mode 100644 index 0000000..951f0da --- /dev/null +++ b/public/chrome-bim-harness.html @@ -0,0 +1,5 @@ + + +Chrome BIM harness +
running
+ diff --git a/public/chrome-cam-harness.html b/public/chrome-cam-harness.html new file mode 100644 index 0000000..2fb5382 --- /dev/null +++ b/public/chrome-cam-harness.html @@ -0,0 +1,5 @@ + + +Chrome CAM harness +
running
+ diff --git a/public/chrome-cam-native-simulation-harness.html b/public/chrome-cam-native-simulation-harness.html new file mode 100644 index 0000000..168d8d7 --- /dev/null +++ b/public/chrome-cam-native-simulation-harness.html @@ -0,0 +1,5 @@ + + +Chrome native CAM simulation harness +
running
+ diff --git a/public/chrome-data-harness.html b/public/chrome-data-harness.html new file mode 100644 index 0000000..e1a0560 --- /dev/null +++ b/public/chrome-data-harness.html @@ -0,0 +1,5 @@ + + +Chrome Data modules harness +
running
+ diff --git a/public/chrome-draft-harness.html b/public/chrome-draft-harness.html new file mode 100644 index 0000000..2a6df23 --- /dev/null +++ b/public/chrome-draft-harness.html @@ -0,0 +1,5 @@ + + +Chrome Draft harness +
running
+ diff --git a/public/chrome-engineering-harness.html b/public/chrome-engineering-harness.html new file mode 100644 index 0000000..78c1c30 --- /dev/null +++ b/public/chrome-engineering-harness.html @@ -0,0 +1 @@ +Chrome Engineering Harness
running
diff --git a/public/chrome-fault-injection-harness.html b/public/chrome-fault-injection-harness.html new file mode 100644 index 0000000..b0d00f0 --- /dev/null +++ b/public/chrome-fault-injection-harness.html @@ -0,0 +1,158 @@ + + +Chrome fault injection harness + +
loading
+ + + diff --git a/public/chrome-fcstd-roundtrip-harness.html b/public/chrome-fcstd-roundtrip-harness.html new file mode 100644 index 0000000..b8074a4 --- /dev/null +++ b/public/chrome-fcstd-roundtrip-harness.html @@ -0,0 +1 @@ +Chrome FCStd Round Trip Harness
running
diff --git a/public/chrome-fem-harness.html b/public/chrome-fem-harness.html new file mode 100644 index 0000000..6146f3f --- /dev/null +++ b/public/chrome-fem-harness.html @@ -0,0 +1,5 @@ + + +Chrome FEM harness +
running
+ diff --git a/public/chrome-inspection-harness.html b/public/chrome-inspection-harness.html new file mode 100644 index 0000000..d6ea923 --- /dev/null +++ b/public/chrome-inspection-harness.html @@ -0,0 +1,5 @@ + + +Chrome Inspection harness +
running
+ diff --git a/public/chrome-mesh-harness.html b/public/chrome-mesh-harness.html new file mode 100644 index 0000000..8ee32da --- /dev/null +++ b/public/chrome-mesh-harness.html @@ -0,0 +1,5 @@ + + +Chrome Mesh harness +
running
+ diff --git a/public/chrome-native-chamfer-history-harness.html b/public/chrome-native-chamfer-history-harness.html new file mode 100644 index 0000000..33e5d2e --- /dev/null +++ b/public/chrome-native-chamfer-history-harness.html @@ -0,0 +1,52 @@ + + +Chrome native Chamfer history harness +
running
+ diff --git a/public/chrome-native-draft-history-harness.html b/public/chrome-native-draft-history-harness.html new file mode 100644 index 0000000..1db5274 --- /dev/null +++ b/public/chrome-native-draft-history-harness.html @@ -0,0 +1,42 @@ + + +Chrome native Draft history harness +
running
+ diff --git a/public/chrome-native-fillet-history-harness.html b/public/chrome-native-fillet-history-harness.html new file mode 100644 index 0000000..e2c6bb1 --- /dev/null +++ b/public/chrome-native-fillet-history-harness.html @@ -0,0 +1,59 @@ + + +Chrome native Fillet history harness +
running
+ diff --git a/public/chrome-native-groove-history-harness.html b/public/chrome-native-groove-history-harness.html new file mode 100644 index 0000000..22120cd --- /dev/null +++ b/public/chrome-native-groove-history-harness.html @@ -0,0 +1,74 @@ + + +Chrome native Groove history harness +
running
+ diff --git a/public/chrome-native-history-harness.html b/public/chrome-native-history-harness.html new file mode 100644 index 0000000..ee5b130 --- /dev/null +++ b/public/chrome-native-history-harness.html @@ -0,0 +1,48 @@ + + +Chrome native OCCT history harness +
running
+ diff --git a/public/chrome-native-hole-history-harness.html b/public/chrome-native-hole-history-harness.html new file mode 100644 index 0000000..5502884 --- /dev/null +++ b/public/chrome-native-hole-history-harness.html @@ -0,0 +1,28 @@ + + +Chrome native Hole history harness +
running
+ diff --git a/public/chrome-native-linear-pattern-history-harness.html b/public/chrome-native-linear-pattern-history-harness.html new file mode 100644 index 0000000..30612be --- /dev/null +++ b/public/chrome-native-linear-pattern-history-harness.html @@ -0,0 +1,5 @@ +Chrome native LinearPattern history
running
diff --git a/public/chrome-native-loft-history-harness.html b/public/chrome-native-loft-history-harness.html new file mode 100644 index 0000000..7f28365 --- /dev/null +++ b/public/chrome-native-loft-history-harness.html @@ -0,0 +1,36 @@ + + +Chrome native Loft history +
running
+ diff --git a/public/chrome-native-mirrored-history-harness.html b/public/chrome-native-mirrored-history-harness.html new file mode 100644 index 0000000..54a62ae --- /dev/null +++ b/public/chrome-native-mirrored-history-harness.html @@ -0,0 +1,31 @@ + + +Chrome native Mirrored history +
running
+ diff --git a/public/chrome-native-multi-transform-history-harness.html b/public/chrome-native-multi-transform-history-harness.html new file mode 100644 index 0000000..6b1f759 --- /dev/null +++ b/public/chrome-native-multi-transform-history-harness.html @@ -0,0 +1,36 @@ + + +Chrome native MultiTransform history +
running
+ diff --git a/public/chrome-native-pad-history-harness.html b/public/chrome-native-pad-history-harness.html new file mode 100644 index 0000000..7715884 --- /dev/null +++ b/public/chrome-native-pad-history-harness.html @@ -0,0 +1,38 @@ + + +Chrome native Pad history harness +
loading
+ diff --git a/public/chrome-native-pipe-history-harness.html b/public/chrome-native-pipe-history-harness.html new file mode 100644 index 0000000..c5aa7de --- /dev/null +++ b/public/chrome-native-pipe-history-harness.html @@ -0,0 +1,33 @@ + + +Chrome native Pipe history +
running
+ diff --git a/public/chrome-native-pocket-history-harness.html b/public/chrome-native-pocket-history-harness.html new file mode 100644 index 0000000..e0fd1cf --- /dev/null +++ b/public/chrome-native-pocket-history-harness.html @@ -0,0 +1,70 @@ + + +Chrome native Pocket history harness +
running
+ diff --git a/public/chrome-native-polar-pattern-history-harness.html b/public/chrome-native-polar-pattern-history-harness.html new file mode 100644 index 0000000..22ef95d --- /dev/null +++ b/public/chrome-native-polar-pattern-history-harness.html @@ -0,0 +1,31 @@ + + +Chrome native PolarPattern history +
running
+ diff --git a/public/chrome-native-revolution-history-harness.html b/public/chrome-native-revolution-history-harness.html new file mode 100644 index 0000000..88a97dd --- /dev/null +++ b/public/chrome-native-revolution-history-harness.html @@ -0,0 +1,61 @@ + + +Chrome native Revolution history harness +
running
+ diff --git a/public/chrome-native-thickness-history-harness.html b/public/chrome-native-thickness-history-harness.html new file mode 100644 index 0000000..972dc77 --- /dev/null +++ b/public/chrome-native-thickness-history-harness.html @@ -0,0 +1,22 @@ +Chrome native Thickness history harness
running
+ diff --git a/public/chrome-offline-harness.html b/public/chrome-offline-harness.html new file mode 100644 index 0000000..1210dcb --- /dev/null +++ b/public/chrome-offline-harness.html @@ -0,0 +1 @@ +Chrome Offline Harness
running
diff --git a/public/chrome-opfs-migration-harness.html b/public/chrome-opfs-migration-harness.html new file mode 100644 index 0000000..20d2964 --- /dev/null +++ b/public/chrome-opfs-migration-harness.html @@ -0,0 +1,101 @@ + + +Chrome OPFS migration harness +
running
+ diff --git a/public/chrome-partdesign-lifecycle-harness.html b/public/chrome-partdesign-lifecycle-harness.html new file mode 100644 index 0000000..6d91806 --- /dev/null +++ b/public/chrome-partdesign-lifecycle-harness.html @@ -0,0 +1,128 @@ + + +Chrome PartDesign lifecycle harness +
running
+ diff --git a/public/chrome-partdesign-loft-harness.html b/public/chrome-partdesign-loft-harness.html new file mode 100644 index 0000000..f3645c1 --- /dev/null +++ b/public/chrome-partdesign-loft-harness.html @@ -0,0 +1,5 @@ + + +Chrome PartDesign loft harness +
running
+ diff --git a/public/chrome-partdesign-transform-harness.html b/public/chrome-partdesign-transform-harness.html new file mode 100644 index 0000000..9088d9f --- /dev/null +++ b/public/chrome-partdesign-transform-harness.html @@ -0,0 +1,5 @@ + + +Chrome PartDesign transform harness +
running
+ diff --git a/public/chrome-performance-harness.html b/public/chrome-performance-harness.html new file mode 100644 index 0000000..51d28ad --- /dev/null +++ b/public/chrome-performance-harness.html @@ -0,0 +1 @@ +Chrome Performance Harness
running
diff --git a/public/chrome-persistence-harness.html b/public/chrome-persistence-harness.html new file mode 100644 index 0000000..c0289e1 --- /dev/null +++ b/public/chrome-persistence-harness.html @@ -0,0 +1,40 @@ + + +Chrome OPFS persistence harness +
running
+ diff --git a/public/chrome-plot-harness.html b/public/chrome-plot-harness.html new file mode 100644 index 0000000..0c57266 --- /dev/null +++ b/public/chrome-plot-harness.html @@ -0,0 +1,5 @@ + + +Chrome Plot harness +
running
+ diff --git a/public/chrome-production-document-harness.html b/public/chrome-production-document-harness.html new file mode 100644 index 0000000..cf92ae7 --- /dev/null +++ b/public/chrome-production-document-harness.html @@ -0,0 +1 @@ +Chrome Production Document Harness
running
diff --git a/public/chrome-profile-validation-harness.html b/public/chrome-profile-validation-harness.html new file mode 100644 index 0000000..5f55ec6 --- /dev/null +++ b/public/chrome-profile-validation-harness.html @@ -0,0 +1,112 @@ + + +Chrome Sketcher profile validation harness +
running
+ diff --git a/public/chrome-qa08-harness.html b/public/chrome-qa08-harness.html new file mode 100644 index 0000000..c1279d0 --- /dev/null +++ b/public/chrome-qa08-harness.html @@ -0,0 +1 @@ +Chrome QA-08 Harness
running
diff --git a/public/chrome-robot-harness.html b/public/chrome-robot-harness.html new file mode 100644 index 0000000..730945c --- /dev/null +++ b/public/chrome-robot-harness.html @@ -0,0 +1,5 @@ + + +Chrome Robot harness +
running
+ diff --git a/public/chrome-script-harness.html b/public/chrome-script-harness.html new file mode 100644 index 0000000..f868722 --- /dev/null +++ b/public/chrome-script-harness.html @@ -0,0 +1 @@ +Chrome Script Harness
running
diff --git a/public/chrome-secondary-formats-harness.html b/public/chrome-secondary-formats-harness.html new file mode 100644 index 0000000..cff9333 --- /dev/null +++ b/public/chrome-secondary-formats-harness.html @@ -0,0 +1 @@ +Chrome Secondary Formats Harness
running
diff --git a/public/chrome-security-harness.html b/public/chrome-security-harness.html new file mode 100644 index 0000000..d37acfc --- /dev/null +++ b/public/chrome-security-harness.html @@ -0,0 +1 @@ +Chrome Security Harness
running
diff --git a/public/chrome-sketcher-bspline-harness.html b/public/chrome-sketcher-bspline-harness.html new file mode 100644 index 0000000..0f35765 --- /dev/null +++ b/public/chrome-sketcher-bspline-harness.html @@ -0,0 +1,89 @@ + + +Chrome Sketcher B-spline editor harness +
running
+ diff --git a/public/chrome-sketcher-diagnostics-harness.html b/public/chrome-sketcher-diagnostics-harness.html new file mode 100644 index 0000000..2d742f3 --- /dev/null +++ b/public/chrome-sketcher-diagnostics-harness.html @@ -0,0 +1,59 @@ + + +Chrome Sketcher dimensional diagnostics harness +
running
+ diff --git a/public/chrome-sketcher-editor-harness.html b/public/chrome-sketcher-editor-harness.html new file mode 100644 index 0000000..b3c3c39 --- /dev/null +++ b/public/chrome-sketcher-editor-harness.html @@ -0,0 +1,92 @@ + + +Chrome Sketcher interactive editor harness +
+ +
+
running
+ diff --git a/public/chrome-sketcher-stress-harness.html b/public/chrome-sketcher-stress-harness.html new file mode 100644 index 0000000..9777f5f --- /dev/null +++ b/public/chrome-sketcher-stress-harness.html @@ -0,0 +1,32 @@ + + +Chrome Sketcher golden stress harness +
running
+ diff --git a/public/chrome-spreadsheet-harness.html b/public/chrome-spreadsheet-harness.html new file mode 100644 index 0000000..09f6b49 --- /dev/null +++ b/public/chrome-spreadsheet-harness.html @@ -0,0 +1,5 @@ + + +Chrome Spreadsheet harness +
running
+ diff --git a/public/chrome-surface-harness.html b/public/chrome-surface-harness.html new file mode 100644 index 0000000..fd0657f --- /dev/null +++ b/public/chrome-surface-harness.html @@ -0,0 +1 @@ +Chrome Surface Harness
running
diff --git a/public/chrome-techdraw-harness.html b/public/chrome-techdraw-harness.html new file mode 100644 index 0000000..6f30bf8 --- /dev/null +++ b/public/chrome-techdraw-harness.html @@ -0,0 +1,5 @@ + + +Chrome TechDraw harness +
running
+ diff --git a/public/chrome-topology-harness.html b/public/chrome-topology-harness.html new file mode 100644 index 0000000..af73a2d --- /dev/null +++ b/public/chrome-topology-harness.html @@ -0,0 +1,59 @@ + + +Chrome Topology Harness +
running
+ diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest new file mode 100644 index 0000000..3ba6613 --- /dev/null +++ b/public/manifest.webmanifest @@ -0,0 +1,13 @@ +{ + "name": "BitBybit CAD Studio", + "short_name": "BitBybit CAD", + "description": "Local-first FreeCAD-compatible Web CAD workspace", + "start_url": "/start", + "scope": "/", + "display": "standalone", + "background_color": "#111519", + "theme_color": "#111519", + "lang": "en", + "categories": ["productivity", "utilities"], + "icons": [] +} diff --git a/public/native/planegcs/freecad-planegcs.js b/public/native/planegcs/freecad-planegcs.js new file mode 100644 index 0000000..c0abf6f --- /dev/null +++ b/public/native/planegcs/freecad-planegcs.js @@ -0,0 +1,22 @@ + +var Module = (() => { + var _scriptName = import.meta.url; + + return ( +async function(moduleArg = {}) { + var moduleRtn; + +function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";var ENVIRONMENT_IS_PTHREAD=ENVIRONMENT_IS_WORKER&&self.name?.startsWith("em-pthread");if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");let dirname=import.meta.url;if(dirname.startsWith("data:")){dirname="/"}var require=createRequire(dirname);var worker_threads=require("worker_threads");global.Worker=worker_threads.Worker;ENVIRONMENT_IS_WORKER=!worker_threads.isMainThread;ENVIRONMENT_IS_PTHREAD=ENVIRONMENT_IS_WORKER&&worker_threads["workerData"]=="em-pthread"}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(!import.meta.url.startsWith("data:")){scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}if(!ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}if(ENVIRONMENT_IS_PTHREAD){var wasmPromiseResolve;var wasmPromiseReject;if(ENVIRONMENT_IS_NODE){var parentPort=worker_threads["parentPort"];parentPort.on("message",data=>onmessage({data}));Object.assign(globalThis,{self:global,importScripts:()=>{},postMessage:msg=>parentPort.postMessage(msg)})}var initializedJS=false;function threadPrintErr(...args){var text=args.join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}if(!Module["printErr"])err=threadPrintErr;function threadAlert(...args){var text=args.join(" ");postMessage({cmd:"alert",text,threadId:_pthread_self()})}self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>new Promise((resolve,reject)=>{wasmPromiseResolve=module=>{var instance=new WebAssembly.Instance(module,getWasmImports());receiveInstance(instance);resolve()};wasmPromiseReject=reject});self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{var msgData=e["data"];var cmd=msgData.cmd;if(cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{postMessage({cmd:"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};for(const handler of msgData.handlers){if(!Module[handler]||Module[handler].proxy){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler,args})};if(handler=="print")out=Module[handler];if(handler=="printErr")err=Module[handler]}}wasmMemory=msgData.wasmMemory;updateMemoryViews();wasmPromiseResolve(msgData.wasmModule)}else if(cmd==="run"){establishStackSpace(msgData.pthread_ptr);__emscripten_thread_init(msgData.pthread_ptr,0,0,1,0,0);PThread.receiveObjectTransfer(msgData);PThread.threadInitTLS();__emscripten_thread_mailbox_await(msgData.pthread_ptr);if(!initializedJS){__embind_initialize_bindings();initializedJS=true}try{invokeEntryPoint(msgData.start_routine,msgData.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(msgData.target==="setimmediate"){}else if(cmd==="checkMailbox"){if(initializedJS){checkMailbox()}}else if(cmd){err(`worker: received unknown command ${cmd}`);err(msgData)}}catch(ex){__emscripten_thread_crashed();throw ex}}self.onmessage=handleMessage}if(!ENVIRONMENT_IS_PTHREAD){if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:8192,shared:true})}updateMemoryViews()}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){var preRuns=Module["preRun"];if(preRuns){if(typeof preRuns=="function")preRuns=[preRuns];preRuns.forEach(addOnPreRun)}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;var postRuns=Module["postRun"];if(postRuns){if(typeof postRuns=="function")postRuns=[postRuns];postRuns.forEach(addOnPostRun)}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){if(Module["locateFile"]){var f="freecad-planegcs.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("freecad-planegcs.wasm",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){assignWasmImports();return{env:wasmImports,wasi_snapshot_preview1:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;registerTLSInit(wasmExports["_emscripten_tls_init"]);wasmTable=wasmExports["__indirect_function_table"];addOnInit(wasmExports["__wasm_call_ctors"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,pthread_ptr:threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;var proxyToMainThread=(funcIndex,emAsmAddr,sync,...callArgs)=>{var serializedNumCallArgs=callArgs.length;var sp=stackSave();var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,0,returnCode);_exit(returnCode)}var exitJS=(status,implicit)=>{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)};var _exit=exitJS;var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(!ENVIRONMENT_IS_PTHREAD){PThread.initMainThread()}},initMainThread(){var pthreadPoolSize=2;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d.cmd;if(d.targetThread&&d.targetThread!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d.transferList)}else{err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d.targetThread}, but that thread no longer exists!`)}return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d.thread)}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="alert"){alert(`Thread ${d.threadId}: ${d.text}`)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d.handler](...d.args)}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message="worker sent an error!";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",data=>worker.onmessage({data}));worker.on("error",e=>worker.onerror(e))}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.propertyIsEnumerable(handler)){handlers.push(handler)}}worker.postMessage({cmd:"load",handlers,wasmMemory,wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker(){var worker;var workerOptions={type:"module",workerData:"em-pthread",name:"em-pthread"};worker=new Worker(new URL("freecad-planegcs.js",import.meta.url),workerOptions);PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};var callRuntimeCallbacks=callbacks=>{callbacks.forEach(f=>f(Module))};var establishStackSpace=pthread_ptr=>{updateMemoryViews();var stackHigh=GROWABLE_HEAP_U32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_U32()[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{runtimeKeepaliveCounter=0;noExitRuntime=0;var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){EXITSTATUS=result}else{__emscripten_thread_exit(result)}}finish(result)};var noExitRuntime=Module["noExitRuntime"]||true;var registerTLSInit=tlsInitFunc=>PThread.tlsInitFunctions.push(tlsInitFunc);var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(ptr);return ___cxa_get_exception_ptr(ptr)};var ___cxa_current_primary_exception=()=>{if(!exceptionCaught.length){return 0}var info=exceptionCaught[exceptionCaught.length-1];___cxa_increment_exception_refcount(info.excPtr);return info.excPtr};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}var _emscripten_has_threading_support=()=>typeof SharedArrayBuffer!="undefined";var ___pthread_create_js=(pthread_ptr,attr,startRoutine,arg)=>{if(!_emscripten_has_threading_support()){return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine,pthread_ptr,arg,transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)};var __abort_js=()=>{abort("")};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,"i");var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(GROWABLE_HEAP_I32(),pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(GROWABLE_HEAP_I32(),waitingAsync>>2,1)}};var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(__emscripten_check_mailbox)}};var __emscripten_notify_mailbox_postmessage=(targetThread,currThreadId)=>{if(targetThread==currThreadId){setTimeout(checkMailbox)}else if(ENVIRONMENT_IS_PTHREAD){postMessage({targetThread,cmd:"checkMailbox"})}else{var worker=PThread.pthreads[targetThread];if(!worker){return}worker.postMessage({cmd:"checkMailbox"})}};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(funcIndex,emAsmAddr,callingThread,numCallArgs,args)=>{proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({cmd:"cleanupThread",thread})};var __emscripten_thread_set_strongref=thread=>{if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var _emscripten_date_now=()=>Date.now();var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw"unwind"};var _emscripten_get_now=()=>performance.timeOrigin+performance.now();var getHeapMax=()=>536870912;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,0,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url).then(arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},err=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+8>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+12>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+16>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+24>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+28>>2]=tempI64[1];GROWABLE_HEAP_I32()[buf+32>>2]=4096;GROWABLE_HEAP_I32()[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+44>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+48>>2]=atime%1e3*1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+56>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+60>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+64>>2]=mtime%1e3*1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+72>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+76>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+80>>2]=ctime%1e3*1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+88>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,0,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,0,1,fd,offset_low,offset_high,whence,newOffset);var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[newOffset>>2]=tempI64[0],GROWABLE_HEAP_I32()[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}PThread.init();embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var proxiedFunctionTable=[_proc_exit,exitOnMainThread,pthreadCreateProxied,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var wasmImports;function assignWasmImports(){wasmImports={__cxa_begin_catch:___cxa_begin_catch,__cxa_current_primary_exception:___cxa_current_primary_exception,__cxa_end_catch:___cxa_end_catch,__cxa_find_matching_catch_2:___cxa_find_matching_catch_2,__cxa_find_matching_catch_3:___cxa_find_matching_catch_3,__cxa_rethrow:___cxa_rethrow,__cxa_throw:___cxa_throw,__cxa_uncaught_exceptions:___cxa_uncaught_exceptions,__pthread_create_js:___pthread_create_js,__resumeException:___resumeException,_abort_js:__abort_js,_embind_register_bigint:__embind_register_bigint,_embind_register_bool:__embind_register_bool,_embind_register_class:__embind_register_class,_embind_register_class_constructor:__embind_register_class_constructor,_embind_register_class_function:__embind_register_class_function,_embind_register_emval:__embind_register_emval,_embind_register_float:__embind_register_float,_embind_register_function:__embind_register_function,_embind_register_integer:__embind_register_integer,_embind_register_memory_view:__embind_register_memory_view,_embind_register_optional:__embind_register_optional,_embind_register_std_string:__embind_register_std_string,_embind_register_std_wstring:__embind_register_std_wstring,_embind_register_void:__embind_register_void,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,_emscripten_init_main_thread_js:__emscripten_init_main_thread_js,_emscripten_notify_mailbox_postmessage:__emscripten_notify_mailbox_postmessage,_emscripten_receive_on_main_thread_js:__emscripten_receive_on_main_thread_js,_emscripten_thread_cleanup:__emscripten_thread_cleanup,_emscripten_thread_mailbox_await:__emscripten_thread_mailbox_await,_emscripten_thread_set_strongref:__emscripten_thread_set_strongref,_emval_take_value:__emval_take_value,_tzset_js:__tzset_js,emscripten_check_blocking_allowed:_emscripten_check_blocking_allowed,emscripten_date_now:_emscripten_date_now,emscripten_exit_with_live_runtime:_emscripten_exit_with_live_runtime,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_ddiiii,invoke_di,invoke_dii,invoke_diid,invoke_diii,invoke_fiii,invoke_i,invoke_ii,invoke_iid,invoke_iii,invoke_iiii,invoke_iiiid,invoke_iiiii,invoke_iiiiid,invoke_iiiiii,invoke_iiiiiii,invoke_iiiiiiii,invoke_iiiiiiiiii,invoke_iiiiiiiiiii,invoke_iiiiiiiiiiii,invoke_iiiiiiiiiiiii,invoke_jiiii,invoke_v,invoke_vi,invoke_vid,invoke_vii,invoke_viid,invoke_viiddi,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiiiii,invoke_viiiiiid,invoke_viiiiiii,invoke_viiiiiiidiiii,invoke_viiiiiiii,invoke_viiiiiiiiii,invoke_viiiiiiiiiidii,invoke_viiiiiiiiiiiiiii,memory:wasmMemory}}var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _free=a0=>(_free=wasmExports["free"])(a0);var _malloc=a0=>(_malloc=wasmExports["malloc"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["__getTypeName"])(a0);var __embind_initialize_bindings=()=>(__embind_initialize_bindings=wasmExports["_embind_initialize_bindings"])();var _pthread_self=()=>(_pthread_self=wasmExports["pthread_self"])();var __emscripten_tls_init=()=>(__emscripten_tls_init=wasmExports["_emscripten_tls_init"])();var __emscripten_thread_init=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=wasmExports["_emscripten_thread_init"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=()=>(__emscripten_thread_crashed=wasmExports["_emscripten_thread_crashed"])();var _emscripten_main_runtime_thread_id=()=>(_emscripten_main_runtime_thread_id=wasmExports["emscripten_main_runtime_thread_id"])();var _emscripten_main_thread_process_queued_calls=()=>(_emscripten_main_thread_process_queued_calls=wasmExports["emscripten_main_thread_process_queued_calls"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3,a4)=>(__emscripten_run_on_main_thread_js=wasmExports["_emscripten_run_on_main_thread_js"])(a0,a1,a2,a3,a4);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports["_emscripten_thread_free_data"])(a0);var __emscripten_thread_exit=a0=>(__emscripten_thread_exit=wasmExports["_emscripten_thread_exit"])(a0);var __emscripten_check_mailbox=()=>(__emscripten_check_mailbox=wasmExports["_emscripten_check_mailbox"])();var _setThrew=(a0,a1)=>(_setThrew=wasmExports["setThrew"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports["_emscripten_tempret_set"])(a0);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports["_emscripten_tempret_get"])();var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports["emscripten_stack_set_limits"])(a0,a1);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"])();var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["__cxa_decrement_exception_refcount"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["__cxa_can_catch"])(a0,a1,a2);var ___cxa_get_exception_ptr=a0=>(___cxa_get_exception_ptr=wasmExports["__cxa_get_exception_ptr"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["dynCall_jiji"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["dynCall_viijii"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["dynCall_jiiii"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["dynCall_iiiiij"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["dynCall_iiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["dynCall_iiiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ddiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diid(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iid(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiid(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiidiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiidii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiid(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viid(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiddi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}var calledRun;var calledPrerun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}if(!calledPrerun){calledPrerun=1;preRun();if(runDependencies>0){return}}function doRun(){if(calledRun)return;calledRun=1;Module["calledRun"]=1;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; + + + return moduleRtn; +} +); +})(); +export default Module; +var isPthread = globalThis.self?.name?.startsWith('em-pthread'); +var isNode = typeof globalThis.process?.versions?.node == 'string'; +if (isNode) isPthread = (await import('worker_threads')).workerData === 'em-pthread'; + +// When running as a pthread, construct a new instance on startup +isPthread && Module(); diff --git a/public/native/planegcs/freecad-planegcs.wasm b/public/native/planegcs/freecad-planegcs.wasm new file mode 100755 index 0000000..9c88053 Binary files /dev/null and b/public/native/planegcs/freecad-planegcs.wasm differ diff --git a/public/occt-browser-harness.html b/public/occt-browser-harness.html new file mode 100644 index 0000000..1d2ad91 --- /dev/null +++ b/public/occt-browser-harness.html @@ -0,0 +1,105 @@ + + +OCCT Browser Harness +
running
+ diff --git a/public/planegcs-browser-harness.html b/public/planegcs-browser-harness.html new file mode 100644 index 0000000..0a4c636 --- /dev/null +++ b/public/planegcs-browser-harness.html @@ -0,0 +1,455 @@ + + +planegcs browser harness + +
loading
+ + + diff --git a/public/planegcs-browser-worker.js b/public/planegcs-browser-worker.js new file mode 100644 index 0000000..4482559 --- /dev/null +++ b/public/planegcs-browser-worker.js @@ -0,0 +1,69 @@ +import createPlanegcs from '/native/planegcs/freecad-planegcs.js' + +let modulePromise + +const getModule = () => { + modulePromise ??= createPlanegcs() + return modulePromise +} + +self.addEventListener('message', async (event) => { + const { requestId, operation, input } = event.data ?? {} + if (!requestId || !['solve-horizontal-distance', 'solve-vertical-distance', 'solve-distance-x', 'solve-distance-y', 'solve-angle', 'solve-circle-radius', 'solve-circle-diameter', 'solve-equal-lines', 'solve-equal-circles', 'solve-tangent-circles', 'solve-point-symmetry', 'solve-point-on-line', 'solve-point-on-circle', 'solve-point-on-arc', 'solve-point-on-ellipse', 'solve-point-on-cubic-bspline', 'solve-cubic-bspline-weight', 'solve-parallel-lines', 'solve-perpendicular-lines', 'solve-coincident-lines', 'solve-coincident-line-points', 'solve-snells-law-lines', 'solve-ellipse-internal-alignment'].includes(operation)) { + self.postMessage({ requestId, ok: false, error: 'Unsupported planegcs Worker request.' }) + return + } + try { + const module = await getModule() + const result = operation === 'solve-vertical-distance' + ? module.solveVerticalDistance(input.startX, input.startY, input.endX, input.endY, input.targetLength) + : operation === 'solve-distance-x' + ? module.solveDistanceX(input.startX, input.startY, input.endX, input.endY, input.targetDistance) + : operation === 'solve-distance-y' + ? module.solveDistanceY(input.startX, input.startY, input.endX, input.endY, input.targetDistance) + : operation === 'solve-angle' + ? module.solveAngle(input.startX, input.startY, input.endX, input.endY, input.targetLength, input.targetAngle) + : operation === 'solve-circle-radius' + ? module.solveCircleRadius(input.centerX, input.centerY, input.radius, input.targetRadius) + : operation === 'solve-circle-diameter' + ? module.solveCircleDiameter(input.centerX, input.centerY, input.radius, input.targetDiameter) + : operation === 'solve-equal-lines' + ? module.solveEqualLines(input.firstStartX, input.firstStartY, input.firstEndX, input.firstEndY, input.secondStartX, input.secondStartY, input.secondEndX, input.secondEndY) + : operation === 'solve-equal-circles' + ? module.solveEqualCircles(input.firstCenterX, input.firstCenterY, input.firstRadius, input.secondCenterX, input.secondCenterY, input.secondRadius) + : operation === 'solve-tangent-circles' + ? module.solveTangentCircles(input.firstCenterX, input.firstCenterY, input.firstRadius, input.secondCenterX, input.secondCenterY, input.secondRadius) + : operation === 'solve-point-symmetry' + ? module.solvePointSymmetry(input.firstX, input.firstY, input.secondX, input.secondY, input.centerX, input.centerY) + : operation === 'solve-point-on-line' + ? module.solvePointOnLine(input.pointX, input.pointY, input.startX, input.startY, input.endX, input.endY, input.vertical) + : operation === 'solve-point-on-circle' + ? module.solvePointOnCircle(input.pointX, input.pointY, input.centerX, input.centerY, input.radius) + : operation === 'solve-point-on-arc' + ? module.solvePointOnArc(input.pointX, input.pointY, input.centerX, input.centerY, input.radius, input.startAngle, input.endAngle) + : operation === 'solve-point-on-ellipse' + ? module.solvePointOnEllipse(input.pointX, input.pointY, input.centerX, input.centerY, input.focusX, input.focusY, input.minorRadius) + : operation === 'solve-point-on-cubic-bspline' + ? module.solvePointOnCubicBspline(input.pointX, input.pointY, input.pole0X, input.pole0Y, input.pole1X, input.pole1Y, input.pole2X, input.pole2Y, input.pole3X, input.pole3Y, input.pointParameter) + : operation === 'solve-cubic-bspline-weight' + ? module.solveCubicBsplineWeight(input.pole0X, input.pole0Y, input.pole1X, input.pole1Y, input.pole2X, input.pole2Y, input.pole3X, input.pole3Y, input.weight0, input.weight1, input.weight2, input.weight3, input.controlPointIndex, input.targetWeight) + : operation === 'solve-parallel-lines' + ? module.solveParallelLines(input.firstStartX, input.firstStartY, input.firstEndX, input.firstEndY, input.secondStartX, input.secondStartY, input.secondEndX, input.secondEndY, input.secondLength) + : operation === 'solve-coincident-lines' + ? module.solveCoincidentLines(input.firstStartX, input.firstStartY, input.firstEndX, input.firstEndY, input.secondStartX, input.secondStartY, input.secondEndX, input.secondEndY, input.secondLength) + : operation === 'solve-coincident-line-points' + ? module.solveCoincidentLinePoints(input.firstStartX, input.firstStartY, input.firstEndX, input.firstEndY, input.secondStartX, input.secondStartY, input.secondEndX, input.secondEndY, input.secondLength, input.firstEnd, input.secondEnd) + : operation === 'solve-snells-law-lines' + ? module.solveSnellsLawLines(input.firstStartX, input.firstStartY, input.firstEndX, input.firstEndY, input.secondStartX, input.secondStartY, input.secondEndX, input.secondEndY, input.boundaryStartX, input.boundaryStartY, input.boundaryEndX, input.boundaryEndY, input.refractiveRatio, input.firstEnd, input.secondEnd) + : operation === 'solve-ellipse-internal-alignment' + ? module.solveEllipseInternalAlignment(input.centerX, input.centerY, input.majorRadius, input.minorRadius, input.rotation, input.alignmentType) + : operation === 'solve-perpendicular-lines' + ? module.solvePerpendicularLines(input.firstStartX, input.firstStartY, input.firstEndX, input.firstEndY, input.secondStartX, input.secondStartY, input.secondEndX, input.secondEndY, input.secondLength) + : module.solveHorizontalDistance(input.startX, input.startY, input.endX, input.endY, input.targetLength) + const values = Array.from({ length: result.size() }, (_, index) => result.get(index)) + result.delete() + self.postMessage({ requestId, ok: true, values }) + } catch (error) { + self.postMessage({ requestId, ok: false, error: error instanceof Error ? `${error.name}: ${error.message}` : String(error) }) + } +}) diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..605b3c7 --- /dev/null +++ b/public/sw.js @@ -0,0 +1,18 @@ +const CACHE_NAME = 'bitbybit-cad-shell-v1' +const SHELL = ['/','/index.html','/manifest.webmanifest'] + +self.addEventListener('install', (event) => { + event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(SHELL)).then(() => self.skipWaiting())) +}) + +self.addEventListener('activate', (event) => { + event.waitUntil(caches.keys().then((keys) => Promise.all(keys.filter((key) => key !== CACHE_NAME).map((key) => caches.delete(key)))).then(() => self.clients.claim())) +}) + +self.addEventListener('fetch', (event) => { + if (event.request.method !== 'GET' || new URL(event.request.url).origin !== self.location.origin) return + event.respondWith(fetch(event.request).then((response) => { + if (response.ok) void caches.open(CACHE_NAME).then((cache) => cache.put(event.request, response.clone())) + return response + }).catch(() => caches.match(event.request).then((cached) => cached || caches.match('/index.html')))) +}) diff --git a/public/vendor/camotics/camotics-sweep.wasm b/public/vendor/camotics/camotics-sweep.wasm new file mode 100755 index 0000000..387b015 Binary files /dev/null and b/public/vendor/camotics/camotics-sweep.wasm differ diff --git a/public/vendor/opencamlib/ocl.js b/public/vendor/opencamlib/ocl.js new file mode 100755 index 0000000..84edbf4 --- /dev/null +++ b/public/vendor/opencamlib/ocl.js @@ -0,0 +1,19 @@ + +var ocl = (() => { + var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; + + return ( +function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});["_memory","___indirect_function_table","onRuntimeInitialized"].forEach(prop=>{if(!Object.getOwnPropertyDescriptor(readyPromise,prop)){Object.defineProperty(readyPromise,prop,{get:()=>abort("You are getting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>abort("You are setting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var scriptDirectory="";var readAsync,readBinary;if(ENVIRONMENT_IS_SHELL){if(typeof process=="object"&&typeof require==="function"||typeof window=="object"||typeof importScripts=="function")throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}if(!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");{readAsync=url=>{assert(!isFileURI(url),"readAsync does not work with file:// URLs");return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{throw new Error("environment detection error")}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module["arguments"])arguments_=Module["arguments"];legacyModuleProp("arguments","arguments_");if(Module["thisProgram"])thisProgram=Module["thisProgram"];legacyModuleProp("thisProgram","thisProgram");assert(typeof Module["memoryInitializerPrefixURL"]=="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["pthreadMainPrefixURL"]=="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["cdInitializerPrefixURL"]=="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["filePackagePrefixURL"]=="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["read"]=="undefined","Module.read option was removed");assert(typeof Module["readAsync"]=="undefined","Module.readAsync option was removed (modify readAsync in JS)");assert(typeof Module["readBinary"]=="undefined","Module.readBinary option was removed (modify readBinary in JS)");assert(typeof Module["setWindowTitle"]=="undefined","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");assert(typeof Module["TOTAL_MEMORY"]=="undefined","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");legacyModuleProp("asm","wasmExports");legacyModuleProp("readAsync","readAsync");legacyModuleProp("readBinary","readBinary");legacyModuleProp("setWindowTitle","setWindowTitle");assert(!ENVIRONMENT_IS_WORKER,"worker environment detected but not enabled at build time. Add `worker` to `-sENVIRONMENT` to enable.");assert(!ENVIRONMENT_IS_NODE,"node environment detected but not enabled at build time. Add `node` to `-sENVIRONMENT` to enable.");assert(!ENVIRONMENT_IS_SHELL,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.");var wasmBinary=Module["wasmBinary"];legacyModuleProp("wasmBinary","wasmBinary");if(typeof WebAssembly!="object"){err("no native wasm support detected")}function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i>2]=34821223;HEAPU32[max+4>>2]=2310721022;HEAPU32[0>>2]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();if(max==0){max+=4}var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`)}if(HEAPU32[0>>2]!=1668509029){abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){var preRuns=Module["preRun"];if(preRuns){if(typeof preRuns=="function")preRuns=[preRuns];preRuns.forEach(addOnPreRun)}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){assert(!runtimeInitialized);runtimeInitialized=true;checkStackCookie();if(!Module["noFSInit"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();var postRuns=Module["postRun"];if(postRuns){if(typeof postRuns=="function")postRuns=[postRuns];postRuns.forEach(addOnPostRun)}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");assert(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");assert(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");assert(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies);if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!="undefined"){runDependencyWatcher=setInterval(()=>{if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err("still waiting on run dependencies:")}err(`dependency: ${dep}`)}if(shown){err("(end of list)")}},1e4)}}else{err("warning: run dependency added without ID")}}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function createExportWrapper(name,nargs){return(...args)=>{assert(runtimeInitialized,`native function \`${name}\` called before runtime initialization`);var f=wasmExports[name];assert(f,`exported native function \`${name}\` not found`);assert(args.length<=nargs,`native function \`${name}\` called with ${args.length} args but expects ${nargs}`);return f(...args)}}function findWasmBinary(){var f="data:application/octet-stream;base64,AGFzbQEAAAAB9QRPYAF/AX9gAX8AYAJ/fwBgAn9/AX9gA39/fwF/YAN/f38AYAR/f39/AX9gBX9/f39/AX9gBH9/f38AYAZ/f39/f38Bf2ACf3wBfGAAAX9gA39/fABgCH9/f39/f39/AX9gBn9/f39/fwBgBX9/f39/AGACf3wAYAAAYAF/AXxgB39/f39/f38Bf2ACf3wBf2ACf38BfGAEf3x8fAF/YAd/f39/f39/AGABfAF8YAV/fn5+fgBgA39+fwF+YAV/f35/fwBgBX9/f39+AX9gCn9/f39/f39/f38AYAN/fHwBf2AFf39/f3wBf2ADf3x/AGADf39/AXxgA3x8fwF8YAZ/f3x8f38AYAR/fn5/AGAKf39/f39/f39/fwF/YAZ/f39/fn4Bf2AHf39/f39+fgF/YAV/fHx8fwF/YAZ/fH9/f38Bf2ACfHwBfGACfH8BfGADf35/AX9gBH9/f38BfmAMf39/f39/f39/f39/AX9gC39/f39/f39/f39/AX9gD39/f39/f39/f39/f39/fwBgA39/fwF+YAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAd/fHx8fHx8AX9gA398fwF/YAR/fH9/AX9gBX9/fHx8AGAGfHx8f39/AX9gBH98fH8AYAR/f398AX9gAXwBf2AEf398fwBgA39/fAF/YAV/fHx8fAF/YAJ8fwF/YAJ/fgBgBH9+fn4AYAJ/fwF+YAN/f34AYAR+fn5+AX9gA35+fgF/YAJ+fgF8YAJ+fgF9YAF/AX5gAn9+AX9gAn5/AX9gBH9/f34BfmADf39/AX1gCX9/f39/f39/fwF/YAR/f35+AAKaBx8DZW52C19fY3hhX3Rocm93AAUDZW52Fl9lbWJpbmRfcmVnaXN0ZXJfY2xhc3MAMwNlbnYiX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19jb25zdHJ1Y3RvcgAOA2Vudh9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uAB0DZW52H19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfcHJvcGVydHkAHQNlbnYVX2VtYmluZF9yZWdpc3Rlcl9lbnVtAAgDZW52G19lbWJpbmRfcmVnaXN0ZXJfZW51bV92YWx1ZQAFA2VudhFfZW12YWxfdGFrZV92YWx1ZQADA2VudhVfZW1iaW5kX3JlZ2lzdGVyX3ZvaWQAAgNlbnYVX2VtYmluZF9yZWdpc3Rlcl9ib29sAAgDZW52GF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcgAPA2VudhZfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0AAUDZW52G19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZwACA2VudhxfZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nAAUDZW52Fl9lbWJpbmRfcmVnaXN0ZXJfZW12YWwAAQNlbnYcX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldwAFA2VudhVfZW1zY3JpcHRlbl9tZW1jcHlfanMABQNlbnYWZW1zY3JpcHRlbl9yZXNpemVfaGVhcAAAA2VudhBfX3N5c2NhbGxfb3BlbmF0AAYDZW52EV9fc3lzY2FsbF9mY250bDY0AAQDZW52D19fc3lzY2FsbF9pb2N0bAAEFndhc2lfc25hcHNob3RfcHJldmlldzEIZmRfd3JpdGUABhZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxB2ZkX3JlYWQABhZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGZkX2Nsb3NlAAADZW52CV9hYm9ydF9qcwARFndhc2lfc25hcHNob3RfcHJldmlldzERZW52aXJvbl9zaXplc19nZXQAAxZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxC2Vudmlyb25fZ2V0AAMDZW52CV90enNldF9qcwAIA2Vudg1fX2Fzc2VydF9mYWlsAAgDZW52F19lbWJpbmRfcmVnaXN0ZXJfYmlnaW50ABcWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQdmZF9zZWVrAAcD3QjbCBEBAwQAAREBADQBAwIVAAMEFigCAwAWAwMAAQMUNTYCBQICBAMAAAECAgASDAASDAAWHgMSBRUBEgECEBAQFQUhAwgFBQgEAwQCAwUCAQIABgMCAxERHggHAhQKChYUCgoIBwI3CgoEBAYEAwICAAAGBhQCFgEHCAABBQUBAhYKChQECAYHEwIUBAQEHwYHBjgGBwcGBAQEAgoeCAYCFAoKBQUFBQUiCgoAEAMCAgAAAQIGAgMIAhASAQIBAgEAAQICAAEAAQIAAQEAAQIBAAEBIwAAAQIBAQICAwEBAQEAAAABAgIBAQAgICApAwACBAIDBQUVDAAAAQEBCAE5AAEBAQIIAAEBIyMBBhACAQICAwE6AgIFAQEGCQYqGDsNCQIQAQABABERAAEACxYEHgMDABUCIQQMBgMVDAMABCgGAwMABAsGBAQDCwUDBAMFAAEEAwMABwYDAAMFCwMAAwsCAAAAAgsSEAILEAISEAILAQIFAhACAgsDAwU8AwsCAwsQCwsHPRISEgMDBAQDAwQEPgYGAAELAgUIAAUEBAYAAQIFAAUEAAECBQAFBAgAAQABGBgqPyIYBAQEKxgEACIYAABAAEEkGQgAQgZDBAQEAAABAwIZJERFGRACAiQZGRlGRwMDABoEBAAsLAAABQQRAAQGSAABAAEABBtJCAQDBQIAAAADBAAAAQECAQADAwAEAAIAAAAAAwMBBQUAAAEBAwEAAAADFAIEAAEABAUABAEAAwAEAAAAAgAAAggFAgIAAgAAAgQFAAACAAMAAwMAGwAAAAQAAQADDREDAw0EAxsIAAcCAAEIAAEAAQABAAEDBQgDAwUFBQgFAAECAgIAAwMAAAICAgIRAwMAAwADAwACAgIAAQIaAwAAAQQAAwMDAwUCAgUCAAIBAAABAQIAAwADAwACAAQDAQIAAwADAwIEAwADAwAAACsHBQAFSg8EKQIGBAAABANLAAcAAQYACAcIBAcIBQQJAQACAhMDAwIDAwABCQAFJQYICS0JBgkGCS0JDy5MCSEJCAkICwQEAwEJABMDCQMFJQkJCQkJDy4JCQkIBAAAAgcAAAMBAAcIBwQXCRwHHB8EBhcmBwQBBwABBxcJHAccHxcmBwQCAg0DAAkJCQ4JDgkPBw0NAwkJCQ4JDgkPBw0TDgITAwACAgIAAgITLwIFBRMPAgACAgAAAwITLwITAgADDwACAAMnHTACBAknHTAECQQODgADAwIAAQAFAwEBAAABAwIBAQEBBAYGBgMEAwQDBgQHAAEDBAMEBgQHDQcHAQ0EDQcHAAAHAA0NBwANDQcAAQABAAACAgICAgICAgABAAECAAEAAQABAAEAAQABAAEAAQABAAEAAQABAQAAAAIABQEEAAAFAAAABQABAgACAAAAAAEAATExAAAAMgAFAjIAAgARBAQEAwUICAgDCAQDCAUPDg8PDw4ODgAAAAABAQsRCwsLAQALBxcTTSVOBAcBcAGtB60HBQcBAYICgIACBhcEfwFBwMEGC38BQQALfwFBAAt/AUEACwfLAxYGbWVtb3J5AgARX193YXNtX2NhbGxfY3RvcnMAHw1fX2dldFR5cGVOYW1lAMQCGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAZtYWxsb2MA8AMGZmZsdXNoAIsECHN0cmVycm9yAMYIBGZyZWUA8QMXX2Vtc2NyaXB0ZW5fdGVtcHJldF9zZXQA6wgXX2Vtc2NyaXB0ZW5fdGVtcHJldF9nZXQA7AgVZW1zY3JpcHRlbl9zdGFja19pbml0AO0IGWVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2ZyZWUA7ggZZW1zY3JpcHRlbl9zdGFja19nZXRfYmFzZQDvCBhlbXNjcmlwdGVuX3N0YWNrX2dldF9lbmQA8AgZX2Vtc2NyaXB0ZW5fc3RhY2tfcmVzdG9yZQDxCBdfZW1zY3JpcHRlbl9zdGFja19hbGxvYwDyCBxlbXNjcmlwdGVuX3N0YWNrX2dldF9jdXJyZW50APMIDGR5bkNhbGxfamlqaQD0CA5keW5DYWxsX3ZpaWppaQD1CA5keW5DYWxsX2lpaWlpagD2CA9keW5DYWxsX2lpaWlpamoA9wgQZHluQ2FsbF9paWlpaWlqagD4CAm+DQEAQQELrAfpCCMkIyQjJDg5IyRFRklKSyMkTE1OIyQkbCMkIyMkIyR5qQGqAXisAa4BsAF3dnp7JH2CAYEBgAF+f5cBlAGRAYYBhwGSAYgBjwGQAZUBlgGEAYUBlAGUAZQBlAGUAZQBjQGYAY4BmwEkoAGhAaYBowGkAaIBngGfASSnAbcBuAG4ASS9AbwBuwG6Ab4BvwHAAcIBwwHHAcEBwgHEAcYBzgHPAdAB1QHWAdcB2AHZAdkB2gHbAdwB0gHaAdoB2QFJ3QHeAd8BzwjgAdoB2QHhAeIB4wHkAeYB5wHQAegB5QHpAeoB7AHtAe4B7wHyAfMB9AH7AfoB/AH9AfcB/gGAAoECggLaAYMChAKFApYClwKeAqACmAKdAt4BowKXAqoCpAKoArUCsAK1ArYCwgLDAr8CwALBAt4BxQLHAsgCyQLKAssCzALNAs4CzwLQAlPRAldW0gJV0wJU1AJa1QJbXGXWAl1r1wLYAtkCxwIjI8gC2gLbAssC3ALdAt4CQdcCQN8CxwIjI8gC4ALhAssC4gIy1wLHAsgCyQLjAuQC5QLHAsgC5gLnAscCyALJAugCbekCbuoCxwLIAirrAuwC7QLuAu8C2ALZAskB1QLMAdcCxwLIAvAC8QLyAvMC7ALtAscCyAL0AvUC9gL3AuwC7QL4AvkCxwLIAskC+gL7AvwCR+kCSOkCxwLIAukC/QLpAtUCxwIjI8gCyQL+AtIC/wLpAoAD6gLpAoEDggODA8cCIyPIAskChAPSAusB6QKFA9EChgPVAocD/QLHAiMjyALJAogD0gKGA9UCiQPRAooD6QKLA9ECjAONA/0CxwLIAskCjgOPA9ICkAORA5IDkwPVApQD6QKVA9cCxwLIAskClgPSAukCxwLIAs0ClwPYAtkCmAOZA4gCmgOJAowC6gKNAtcCxwLIAvACmwPHAiMjyALJApwDhgPVAtICnQOeA8cCIyPIAskCnwOgA9UC0gLHAsgCyQKhA+kC1QLSAscCyALJAqIDqAHWArQBswGjA6QD1wKlA9ECpgOnA8cCIyPIAs0CqAO1AdYCxwIjI8gCzQKpA8cCIyPIAssCqgPHAiMjyALLAqsDxwIjI8gCzQKsA8cCIyPIAs0CrQPHAiMjyALLAq4DxwIjI8gCywKvA8cCIyPIArADsQPHAiMjyAKwA7IDswO0A8kCtQO2A+kCtwO4A7kD6gK6A7sDvAO9A74DvwPJArUDwAPpAsEDuAPCA+oCwwO7A8QDvQPFA8YDyQK1A8cD6QLIA7gDyQPqAsoDuwPLA70DxgLNA84DzwPQA+4DhQSGBIcEiASMBJYElwTZAZkEmgScBElJnQShBKIEpASlBKQEpgSoBKcEqQS8BL4EvQS/BMkEygTZAZkEmgScBElJzAShBM4EpATPBKQEpgSoBKcEqQS8BL4EvQS/BIUFhgXwBIcF6gTrBO0E8wT2BIQF/gSABYEFggX3BPsE/ASUBJUElASVBIgFiQWKBYsFjAWNBY4FjwW0BbUFSbcFzAXNBc4FzwXRBdIFzQXVBdYF1wXYBdkF2gXbBd0F3gXZBeAF1gXhBeIF8QXyBfQF8QPaAdoB2gHaAdEHigiMCI8IkQiTCJUIlwiZCJsInQifCKEIowilCMkHywfQB94H3wfgB+EH4gfjB9oH5AflB+YHvgfqB+sH7QfvB/AHSfIH8wf7B/wH/weACIEIgwiGCP0H/gfaBG6CCIQIhwgjJCTSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3Qck5wfnB+gHTEzpB0wk9Af1B+gHSUn2B/cHJPQH9QfoB0lJ9gf3ByT4B/kH6AdJSfoH9wck+Af5B+gHSUn6B/cHIySBBoIGgwYjJIQGhQaHBiSIBpUGmwadBp8GnwahBqMGpwapBqsGJLIGtga6BrsGvAa8Br0GvgbBBsIGwwYkyQbPBtUG1gbXBtgG3AbdBiTgBuMG5gbnBugG6QbrBuwGIyTyBvMG9Ab1BvcG+Qb8BokIjgiSCJ4IogiWCJoIIyTyBv8GgAeBB4MHhQeIB4sIkAiUCKAIpAiYCJwIpwimCIkHpwimCIwHJI4HjgePB48HjweQB0mRB5EHJI4HjgePB48HjweQB0mRB5EHJJIHkgePB48HjweTB0mRB5EHJJIHkgePB48HjweTB0mRB5EHJJUHmgckpAenBySwB7UHJLYHugckuwe8B9kBJLsHvQfZASPeASMk2gHaAdAIJNAIJNII5QjiCNUIJOQI4QjWCCTjCN4I2Qgk2ggk5wgk6Agk5gjqCL0I6ggKyf0O2wiKBwEFfxDtCEHdsAItAABFBEBBjJoBKAIAIgIhAyMAQRBrIgEkAEH8rQIQmAQiAEG0rgI2AiggACADNgIgIABBkJsBNgIAIABBADoANCAAQX82AjAgAUEMaiAAEN8EIAAgAUEMaiAAKAIAKAIIEQIAIAFBDGoQiQYgAUEQaiQAQdioAhDHBSEAQdCoAkHojgE2AgAgAEH8jgE2AgBB1KgCQQA2AgBB3I4BKAIAQdCoAmpB/K0CEMgFQbyuAkGQmgEoAgAiA0HsrgIQwgVBgKoCQbyuAhDDBUH0rgJBlJoBKAIAIgRBpK8CEMIFQairAkH0rgIQwwVB0KwCQairAigCAEEMaygCAEGoqwJqKAIYEMMFQdCoAigCAEEMaygCAEHQqAJqQYCqAhDEBUGoqwIoAgBBDGsoAgBBqKsCahDJBUGoqwIoAgBBDGsoAgBBqKsCakGAqgIQxAUjAEEQayIBJABBrK8CEMsEIgBB5K8CNgIoIAAgAjYCICAAQdycATYCACAAQQA6ADQgAEF/NgIwIAFBDGogABDfBCAAIAFBDGogACgCACgCCBECACABQQxqEIkGIAFBEGokAEGwqQIQygUhAkGoqQJBiJABNgIAIAJBnJABNgIAQaypAkEANgIAQfyPASgCAEGoqQJqQayvAhDIBUHsrwIgA0GcsAIQxQVB1KoCQeyvAhDGBUGksAIgBEHUsAIQxQVB/KsCQaSwAhDGBUGkrQJB/KsCKAIAQQxrKAIAQfyrAmooAhgQxgVBqKkCKAIAQQxrKAIAQaipAmpB1KoCEMQFQfyrAigCAEEMaygCAEH8qwJqEMkFQfyrAigCAEEMaygCAEH8qwJqQdSqAhDEBUHdsAJBAToAAAsjAEEQayIAJAACQCAAQQxqIABBCGoQGQ0AQeCwAiAAKAIMQQJ0QQRqEPADIgE2AgAgAUUNACAAKAIIEPADIgEEQEHgsAIoAgAgACgCDEECdGpBADYCAEHgsAIoAgAgARAaRQ0BC0HgsAJBADYCAAsgAEEQaiQAQdCSAkIANwIAQdiSAkEANgIAQeSSAkG0ATYCAEHokgJBADYCABDFAkHokgJB4JICKAIANgIAQeCSAkHkkgI2AgBB7JICQZcENgIAQfCSAkEANgIAEMYCQfCSAkHgkgIoAgA2AgBB4JICQeySAjYCAEGMlAJBlJMCNgIAQcSTAkEqNgIAC9sEAwd8A38BfiMAQeAAayIIJAAgCEEgaiAAQRhqIABB2ABqIgkQXiAIQUBrIAhBIGoQWSAIIABBOGogCRBeIAhBIGogCBBZIAAgCEFAaxBXOQMQIAhBQGsQViAIQSBqEFYgAC0AeCEJIAAgCEFAayAIQSBqEFUiAUSQQfL////vP2QEfEQAAAAAAAAAAAVBAUF/IAkbIQkCfCABRJBB8v///++/YwRAIAm3IQJEGC1EVPshCUAMAQsgCCsDUCECIAgrAyghBSAIKwMwIQYgCCsDSCEHRBgtRFT7IRlAAnxEAAAAAAAA8D8gASABRAAAAAAAAPA/ZBsiAb0iC0IgiKdB/////wdxIgpBgIDA/wNPBEBEAAAAAAAAAABEGC1EVPshCUAgC0IAWRsgC6cgCkGAgMD/A2tyRQ0BGkQAAAAAAAAAACABIAGhowwBCwJ8IApB/////gNNBEBEGC1EVPsh+T8gCkGBgIDjA0kNARpEB1wUMyamkTwgASABIAGiENEDoqEgAaFEGC1EVPsh+T+gDAILIAtCAFMEQEQYLURU+yH5PyABRAAAAAAAAPA/oEQAAAAAAADgP6IiAZ8iAyADIAEQ0QOiRAdcFDMmppG8oKChIgEgAaAMAgtEAAAAAAAA8D8gAaFEAAAAAAAA4D+iIgOfIgQgAxDRA6IgAyAEvUKAgICAcIO/IgEgAaKhIAQgAaCjoCABoCIBIAGgCwsiAaEgASAHIAaiIAUgAqKhIAm3IgKiRAAAAAAAAAAAYxsLIQEgAiABoguZIAArAxCiOQMIIAhB4ABqJAALVAEDfyAAQYgINgIAIABBGGoQTyECIABBOGoQTyEDIABB2ABqEE8hBCACIAFBGGoQaCADIAFBOGoQaCAEIAFB2ABqEGggACABLQB4OgB4IAAQICAAC5cEAQp/IwBBEGsiByQAAkAgB0EEaiAAEMAEIgstAABBAUcNACABIAJqIgkgASAAIAAoAgBBDGsoAgBqIgIoAgRBsAFxQSBGGyEIIAIoAhghBiACKAJMIgNBf0YEQCAHQQxqIAIQsgUgB0EMakGwtQIQjgYiA0EgIAMoAgAoAhwRAwAhAyAHQQxqEIkGIAIgAzYCTAsCfyABIQQgA8AhDEEAIQMjAEEQayIFJAACQAJAIAYiAUUNACACKAIMIQYgCCAEayIKQQBKBEAgASAEIAogASgCACgCMBEEACAKRw0BCyAGIAkgBGsiA2tBACADIAZIGyIEQQBKBEAgBEH4////B08NAgJAIARBC08EQCAEQQdyQQFqIgMQxAghBiAFIANBgICAgHhyNgIMIAUgBjYCBCAFIAQ2AggMAQsgBSAEOgAPIAVBBGohBgtBACEDIAYgDCAEENgDIARqQQA6AAAgASAFKAIEIAVBBGogBSwAD0EASBsgBCABKAIAKAIwEQQAIQYgBSwAD0EASARAIAUoAgwaIAUoAgQQ8QMLIAQgBkcNAQsCQCAJIAhrIgNBAEwNACABIAggAyABKAIAKAIwEQQAIANGDQBBACEDDAELIAJBADYCDCABIQMLIAVBEGokACADDAELECUACw0AIAAgACgCAEEMaygCAGoiASABKAIQQQVyELMFCyALEMEEIAdBEGokACAACwQAIAALBwAgABDxAwsIAEGxERAmAAtiAQN/QQgQzggQxQgiAUH8jQI2AgAgABDdAyICQQ1qEMQIIgNBADYCCCADIAI2AgQgAyACNgIAIAFBBGogA0EMaiAAIAJBAWoQ1wM2AgAgAUGsjgI2AgAgAUHMjgJBARAAAAt5AQJ/IwBBIGsiASQAIABBvCw2AgAgAEEIahBPIQIgAEEoahBPIAFEAAAAAAAAAABEAAAAAAAAAABEAAAAAAAAAAAQUBBoIAIgAUQAAAAAAAAAAEQAAAAAAAAAAEQAAAAAAAAAABBQEGggAEEAOgBIIAFBIGokACAAC08BAn8jAEEgayIHJAAgAEG8LDYCACAAQQhqEE8hCCAAQShqEE8gByABIAMgBRBQEGggCCAHIAIgBCAGEFAQaCAAQQE6AEggB0EgaiQAIAALCQAgAEEAOgBIC1cCAXwBfwJAIAErAwgiAiAAKwMQZA0AIAIgACsDMGMNACABKwMQIgIgACsDGGQNACACIAArAzhjDQAgASsDGCICIAArAyBkDQAgAiAAKwNAY0UhAwsgAwuLBAIBfAF/AkACQCAALQBIIgNFBEAgAEEIaiABQQhqIgMQaCAAQShqIAMQaCAAQQE6AEgMAQsgASsDECICIAArAxBkBEAgACACOQMQIAErAxAhAgsgACsDMCACZARAIAAgAjkDMAsgASsDGCICIAArAxhkBEAgACACOQMYIAErAxghAgsgACsDOCACZARAIAAgAjkDOAsgASsDICICIAArAyBkBEAgACACOQMgIAErAyAhAgsgACsDQCACZARAIAAgAjkDQAsgAw0AIABBCGogAUEoaiIDEGggAEEoaiADEGggAEEBOgBIDAELIAErAzAiAiAAKwMQZARAIAAgAjkDECABKwMwIQILIAArAzAgAmQEQCAAIAI5AzALIAErAzgiAiAAKwMYZARAIAAgAjkDGCABKwM4IQILIAArAzggAmQEQCAAIAI5AzgLIAErA0AiAiAAKwMgZARAIAAgAjkDICABKwNAIQILIAIgACsDQGNFDQAgACACOQNACyABKwNQIgIgACsDEGQEQCAAIAI5AxAgASsDUCECCyAAKwMwIAJkBEAgACACOQMwCyABKwNYIgIgACsDGGQEQCAAIAI5AxggASsDWCECCyAAKwM4IAJkBEAgACACOQM4CyABKwNgIgIgACsDIGQEQCAAIAI5AyAgASsDYCECCyAAKwNAIAJkBEAgACACOQNACwtWAQF8RAAAAAAAAPC/IQICQAJAAkACQAJAAkACQCABDgYAAQIDBAUGCyAAKwMwDwsgACsDEA8LIAArAzgPCyAAKwMYDwsgACsDQA8LIAArAyAhAgsgAgsXACAAEE8iAEEANgIgIABB4Cw2AgAgAAsZACAAIAEQUiIBQQA2AiAgAUHgLDYCACABCxkAIAAgARBSIgEgAjYCICABQeAsNgIAIAELHQAgACABIAIgAxBQIgBBADYCICAAQeAsNgIAIAALHQAgACABIAIgAxBQIgAgBDYCICAAQeAsNgIAIAALjAIBA38jAEGQAWsiAiQAIAJB9JYBNgJAIAJBgJcBKAIAIgM2AgggA0EMaygCACACQQhqakGElwEoAgA2AgAgAigCCEEMaygCACACQQhqaiIDIAJBDGoiBBC2BSADQoCAgIBwNwJIIAJB9JYBNgJAIAJB4JYBNgIIIAQQmAQiA0HkkAE2AgAgAkIANwI0IAJCADcCLCACQRA2AjwgAkEIaiABEDMhASAAIAMQ5AQgAUH8lgEoAgAiADYCACABIABBDGsoAgBqQYiXASgCADYCACADQeSQATYCACACQUBrIQAgASwAL0EASARAIAEoAiwaIAIoAiwQ8QMLIAMQlgQaIAAQtAUaIAJBkAFqJAALkwIBBn8gAEHpIkEDECIgASsDCBDGBEGQJUECECIgASsDEBDGBEGQJUECECIgASsDGBDGBEG1HkEEECIhAiABKAIgIQQjAEEQayIBJAAgAUEIaiACEMAEGgJAIAFBCGotAABFDQAgAiACKAIAQQxrKAIAaigCBBogAUEEaiACIAIoAgBBDGsoAgBqELIFIAFBBGoQwgQhAyABQQRqEIkGIAEgAhCtBCEFIAIgAigCAEEMaygCAGoiBhDDBCEHIAEgAyAFKAIAIAYgByAEIAMoAgAoAhARBwA2AgQgAUEEahDEBEUNACACIAIoAgBBDGsoAgBqQQUQsgQLIAFBCGoQwQQgAUEQaiQAIAJB4yJBARAiGiAACxwAIAAQTyIAQaAtNgIAIABBKBDECBAtNgIgIAALIgAgACABIAIgAxBQIgBBoC02AgAgAEEoEMQIEC02AiAgAAtIAQF/IAAgASsDCCABKwMQIAErAxgQUCIAQaAtNgIAQSgQxAggASgCICICEFIiAUHgLDYCACABIAIoAiA2AiAgACABNgIgIAALKwAgACABKwMIIAErAxAgASsDGBBQIgFBoC02AgAgAUEoEMQIEC02AiAgAQslAQF/IABBoC02AgAgACgCICIBBEAgASABKAIAKAIEEQEACyAACygBAX8gAEGgLTYCACAAKAIgIgEEQCABIAEoAgAoAgQRAQALIAAQ8QMLDgAgACsDGCABKwOoAWMLGgEBfyAAKwMYIAFjIgIEQCAAIAE5AxgLIAILWgECfwJAIAArAxggAWMiBEUNACAAIAE5AxhBKBDECCACEFIiA0HgLDYCACADIAIoAiA2AiAgACgCICECIAAgAzYCICACIgNFDQAgAyADKAIAKAIEEQEACyAEC2UBAX8CQCACIAMQZkUNACAAKwMYIAFjRQ0AIAAgATkDGEEoEMQIIAIQUiIDQeAsNgIAIAMgAigCIDYCICAAKAIgIQIgACADNgIgQQEhBCACIgNFDQAgAyADKAIAKAIEEQEACyAEC3MBAX8gACABRwRAIAAgASsDCDkDCCAAIAErAxA5AxAgACABKwMYOQMYAkAgACgCIEUNACAAKAIgIgJFDQAgAiACKAIAKAIEEQEAC0EoEMQIIAEoAiAiAhBSIgFB4Cw2AgAgASACKAIgNgIgIAAgATYCIAsLOwAgACABKwMIIAIrAwigIAErAxAgAisDEKAgASsDGCACKwMYoBBQIgJBoC02AgAgAkEoEMQIEC02AiALHwAgACABKAIgIgEQUiIAQeAsNgIAIAAgASgCIDYCIAvFAgEDfyMAQZABayICJAAgAkH0lgE2AkAgAkGAlwEoAgAiAzYCCCADQQxrKAIAIAJBCGpqQYSXASgCADYCACACKAIIQQxrKAIAIAJBCGpqIgMgAkEMaiIEELYFIANCgICAgHA3AkggAkH0lgE2AkAgAkHglgE2AgggBBCYBCIDQeSQATYCACACQgA3AjQgAkIANwIsIAJBEDYCPCACQQhqQeUiQQMQIiABKwMIEMYEQZAlQQIQIiABKwMQEMYEQZAlQQIQIiABKwMYEMYEQcAfQQUQIiABKAIgEDMaIAAgAxDkBCACQfyWASgCACIBNgIIIAFBDGsoAgAgAkEIampBiJcBKAIANgIAIANB5JABNgIAIAJBQGshASACLAA3QQBIBEAgAigCNBogAigCLBDxAwsgAxCWBBogARC0BRogAkGQAWokAAssAQJ/IABBzC02AgAgAEEIahBPIQMgAEEoahBPIQQgAyABEGggBCACEGggAAsyAQJ/IABBzC02AgAgAEEIahBPIQIgAEEoahBPIQMgAiABQQhqEGggAyABQShqEGggAAsoAQF/IABBADYCDCAAQfAtNgIAIAAgAEEEaiIBNgIIIAAgATYCBCAAC2QBA38gAEHwLTYCAAJAIAAoAgxFDQAgACgCCCIBKAIAIgIgACgCBCgCBCIDNgIEIAMgAjYCACAAQQA2AgwgASAAQQRqIgNGDQADQCABKAIEIQIgARDxAyADIAIiAUcNAAsLIAALZwEDfyAAQfAtNgIAAkAgACgCDEUNACAAKAIIIgEoAgAiAiAAKAIEKAIEIgM2AgQgAyACNgIAIABBADYCDCABIABBBGoiA0YNAANAIAEoAgQhAiABEPEDIAMgAiIBRw0ACwsgABDxAwtZAQF/QdAAEMQIIgJBlC42AgAgAkEIaiABEEMaQQwQxAgiASAAQQRqNgIEIAEgAjYCCCABIAAoAgQiAjYCACACIAE2AgQgACABNgIEIAAgACgCDEEBajYCDAtZAQF/QYgBEMQIIgJB4C42AgAgAkEIaiABECEaQQwQxAgiASAAQQRqNgIEIAEgAjYCCCABIAAoAgQiAjYCACACIAE2AgQgACABNgIEIAAgACgCDEEBajYCDAsEAEEACzECAX8BfCMAQSBrIgEkACABIABBCGoiAEEoaiAAQQhqEF4gARBXIQIgAUEgaiQAIAILjgECAn8DfCMAQdAAayIDJAAgAyACOQNIIANBCGogAUEIaiIEQShqIARBCGoiBBBeIANBCGoiASsDCCEFIAErAxAhBiADKwNIIQIgASsDGCEHIANBKGoiAUGYLzYCACABIAcgAqI5AxggASAGIAKiOQMQIAEgBSACojkDCCAAIANBKGogBBBiIANB0ABqJAALBABBAQsHACAAKwMQC9QBAgN/A3wgAUEIaiEBIwBBIGsiAyQAAkAgAplEmyuhhpuEBj1jBEAgACABQRhqEFIaDAELIAJEAAAAAAAA8L+gmUSbK6GGm4QGPWMEQCAAIAFBOGoQUhoMAQsgAS0AeCEEIAErAwghBiADIAFBGGogAUHYAGoiBRBeIAMrAxAhByAGIAKiIgIgApogBBsgASsDEKMiAhDWAyEGIAMgAysDCCIIIAIQ2wMiAqIgBiAHoqA5AxAgAyAGIAiiIAcgAqKhOQMIIAAgAyAFEGILIANBIGokAAshACAAQgA3AwggAEGYLzYCACAAQgA3AxAgAEIANwMYIAALIQAgACADOQMYIAAgAjkDECAAIAE5AwggAEGYLzYCACAACyEAIABCADcDGCAAIAI5AxAgACABOQMIIABBmC82AgAgAAsqACAAQZgvNgIAIAAgASsDCDkDCCAAIAErAxA5AxAgACABKwMYOQMYIAALJQEBfCAAKwMIIgEgAaIgACsDECIBIAGioCAAKwMYIgEgAaKgnwtmAQZ8IAErAxghAyACKwMYIQQgASsDCCEFIAIrAxAhBiACKwMIIQcgASsDECEIIABBmC82AgAgACAFIAaiIAcgCKKhOQMYIAAgAyAHoiAEIAWioTkDECAAIAggBKIgBiADoqE5AwgLJQAgACsDGCABKwMYoiAAKwMIIAErAwiiIAArAxAgASsDEKKgoAteAQR8IAArAwgiAiACoiAAKwMQIgMgA6KgIAArAxgiBCAEoqCfIgFEAAAAAAAAAABiBEAgACAERAAAAAAAAPA/IAGjIgGiOQMYIAAgAyABojkDECAAIAIgAaI5AwgLCxoBAXwgACsDCCIBIAGiIAArAxAiASABoqCfC1YBA3wgACsDCCICIAKiIAArAxAiAyADoqCfIgFEAAAAAAAAAABiBEAgACADRAAAAAAAAPA/IAGjIgGiOQMQIAAgAiABojkDCCAAIAEgACsDGKI5AxgLCzMBAnwgASsDECECIAErAwghAyAAIAErAxg5AxggACADOQMQIABBmC82AgAgACACmjkDCAt2AQV8IAArAxAhAiABENsDIQMgACsDCCEEIAAgACsDGCIFIAEQ1gMiAaIgBEQAAAAAAAAAAKIiBiADIAKioKA5AxggACAGIAEgAqKgIAMgBaKhOQMQIAAgBUQAAAAAAAAAAKIgBCACRAAAAAAAAAAAoqCgOQMIC3YBBXwgACsDCCECIAEQ2wMhAyAAKwMQIQQgACAAKwMYIgUgARDWAyIBoiAERAAAAAAAAAAAoiIGIAMgAqKhoDkDGCAAIAVEAAAAAAAAAACiIAQgAkQAAAAAAAAAAKKgoDkDECAAIAMgBaIgASACoiAGoKA5AwgLcgEEfCAAIAArAxgiAiAAKwMIIgNEAAAAAAAAAACiIAArAxAiBEQAAAAAAAAAAKKgoDkDGCABENYDIQUgACACRAAAAAAAAAAAoiICIAMgARDbAyIBoiAFIASioKA5AxAgACACIAUgA6IgBCABoqGgOQMICyYBAXwgACsDCCABKwMIoSICIAKiIAArAxAgASsDEKEiAiACoqCfC1QBBnwgAisDCCEDIAErAwghBCACKwMQIQUgASsDECEGIAIrAxghByABKwMYIQggAEGYLzYCACAAIAggB6E5AxggACAGIAWhOQMQIAAgBCADoTkDCAvKAwIGfAF/AkAgASsDCCIHIAIrAwgiA2IEQCABKwMQIQUgAisDECEEDAELIAErAxAiBSACKwMQIgRiDQBBgKoCQeApQcMAECIaQYCqAkHJIUErECIiCUGXI0EBECIgACsDCBDGBEGQJUECECIgACsDEBDGBEGQJUECECIgACsDGBDGBEHjIkEBECIaIAlBoyVBERAiGkGAqgJB4CBBJxAiIgBBlyNBARAiIAErAwgQxgRBkCVBAhAiIAErAxAQxgRBkCVBAhAiIAErAxgQxgRB4yJBARAiGiAAQaQqQQYQIhpBgKoCQYEgQScQIiIBQZcjQQEQIiACKwMIEMYEQZAlQQIQIiACKwMQEMYEQZAlQQIQIiACKwMYEMYEQeMiQQEQIhogAUGuLEEBECIaQYCqAkHoJUE0ECIaRAAAAAAAAPC/DwsgAyAHoSIDmiEGAkAgAyADoiAEIAWhIgMgA6KgnyIERAAAAAAAAAAAYQRARAAAAAAAAAAAIQQMAQtEAAAAAAAA8D8gBKMiCEQAAAAAAAAAAKIhBCAIIAaiIQYgAyAIoiEDCyAERAAAAAAAAAAAoiADIAcgACsDCKGiIAYgBSAAKwMQoaKgoJkLOwAgAEGXI0EBECIgASsDCBDGBEGQJUECECIgASsDEBDGBEGQJUECECIgASsDGBDGBEHjIkEBECIaIAALrQEBCXwgASsDGCEFIAIrAxghByADKwMYIQQgASsDCCEGIAIrAwghCCADKwMIIQogAysDECELIAErAxAhDCACKwMQIQkgAEGYLzYCACAAIAcgBCAHoSIEIAQgBSAHoaIgBiAIoSAKIAihIgWiIAsgCaEiBiAMIAmhoqCgIAQgBKIgBSAFoiAGIAaioKCjIgSioDkDGCAAIAkgBiAEoqA5AxAgACAIIAUgBKKgOQMIC1QBBnwgAisDCCEDIAErAwghBCACKwMQIQUgASsDECEGIAIrAxghByABKwMYIQggAEGYLzYCACAAIAggB6A5AxggACAGIAWgOQMQIAAgBCADoDkDCAtGAQR8IAIrAwghBCACKwMQIQUgASsDACEDIAIrAxghBiAAQZgvNgIAIAAgBiADojkDGCAAIAUgA6I5AxAgACAEIAOiOQMIC5sDAgV8AX8CfCADKwMIIAIrAwihIgUgBaIgAysDECACKwMQoSIEIASioCIGnxC8AgRAQYCqAkGZKUHGABAiGkGAqgJBnyFBKRAiIglBlyNBARAiIAErAwgQxgRBkCVBAhAiIAErAxAQxgRBkCVBAhAiIAErAxgQxgRB4yJBARAiGiAJQaMlQREQIhpBgKoCQbogQSUQIiIBQZcjQQEQIiACKwMIEMYEQZAlQQIQIiACKwMQEMYEQZAlQQIQIiACKwMYEMYEQeMiQQEQIhogAUGkKkEGECIaQYCqAkHbH0ElECIiAkGXI0EBECIgAysDCBDGBEGQJUECECIgAysDEBDGBEGQJUECECIgAysDGBDGBEHjIkEBECIaIAJBrixBARAiGkGAqgJBtSVBMhAiGkQAAAAAAAAAACEERAAAAAAAAAAADAELIAErAwggAisDCCIHoSAFoiAEIAErAxAgAisDECIIoaKgIAajIgYgBKIgCKAhBCAGIAWiIAegCyEFIABCADcDGCAAIAQ5AxAgACAFOQMIIABBmC82AgALOwECfCACKwMQIAErAxAiA6EgACsDCCABKwMIIgShoiAAKwMQIAOhIAIrAwggBKGioUSbK6GGm4QGPWQLxgECCnwBfwJAIAErAxAiAiABKwNQIgihIgMgACsDECIEoiABKwNYIgkgASsDGCIFoSIGIAArAwgiC6IgBSAIoiAJIAKioSIHoKAgAyABKwM4IgqiIAYgASsDMCIDoiAHoKCjIgZEAAAAAAAAAABkRQ0AIAMgAqEiByAEoiAFIAqhIgQgC6IgAiAKoiADIAWioSICoKAgByAJoiAEIAiiIAKgoKMiAkQAAAAAAAAAAGRFDQAgAiAGoEQAAAAAAADwP2MhDAsgDAt9AQR8IAArAxggASsDGCIDoSACKwMYIAOhIgOiIAArAwggASsDCCIEoSACKwMIIAShIgSiIAIrAxAgASsDECIGoSIFIAArAxAgBqGioKAgAyADoiAEIASiIAUgBaKgoKMiA0QAAAAAAADwP2RBf3MgA0QAAAAAAAAAAGNFcQsoACAAIAFHBEAgACABKwMIOQMIIAAgASsDEDkDECAAIAErAxg5AxgLCzsBAX8gACABRgRAQQEPCwJAIAArAwggASsDCGINACAAKwMQIAErAxBiDQAgACsDGCABKwMYYSECCyACC1oCBHwBfyAAIABBCEEQIAIrAwggASsDCCIDoSIEmSACKwMQIAErAxAiBaEiBplkIgcbaisDACADIAUgBxuhIAQgBiAHG6MgAisDGCABKwMYIgOhoiADoDkDGAu+AgEDfyMAQZABayICJAAgAkH0lgE2AkAgAkGAlwEoAgAiAzYCCCADQQxrKAIAIAJBCGpqQYSXASgCADYCACACKAIIQQxrKAIAIAJBCGpqIgMgAkEMaiIEELYFIANCgICAgHA3AkggAkH0lgE2AkAgAkHglgE2AgggBBCYBCIDQeSQATYCACACQgA3AjQgAkIANwIsIAJBEDYCPCACQQhqQZcjQQEQIiABKwMIEMYEQZAlQQIQIiABKwMQEMYEQZAlQQIQIiABKwMYEMYEQeMiQQEQIhogACADEOQEIAJB/JYBKAIAIgE2AgggAUEMaygCACACQQhqakGIlwEoAgA2AgAgA0HkkAE2AgAgAkFAayEBIAIsADdBAEgEQCACKAI0GiACKAIsEPEDCyADEJYEGiABELQFGiACQZABaiQACyEAQduSAiwAAEEASARAQdiSAigCABpB0JICKAIAEPEDCwtVAQJ/QeABEMQIIgJCADcCACACQQhqIAEQcBogAiAAQQRqNgIEIAIgACgCBCIDNgIAIAMgAjYCBCAAIAI2AgQgACAAKAIMQQFqNgIMIABBEGogARArCwcAIAAoAgwLswEBBn8jAEGAAWsiBCQAIABB1C82AgAgAEEIahBPIQUgAEEoahBPIQYgAEHIAGoQTyEHIABB6ABqEE8hCSAAQYgBahAnIQggBSABEGggBiACEGggByADEGggBEHgAGogBSAGEF4gBEFAayAFIAcQXiAEQSBqIARB4ABqIARBQGsQVCAEQSBqEFYgCSAEIAQrAyggBCsDMCAEKwM4EFAQaCAIECkgCCAAECsgBEGAAWokACAAC70BAQZ/IwBBgAFrIgIkACAAQdQvNgIAIABBCGoQTyEDIABBKGoQTyEEIABByABqEE8hBSAAQegAahBPIQcgAEGIAWoQJyEGIAMgAUEIahBoIAQgAUEoahBoIAUgAUHIAGoQaCACQeAAaiADIAQQXiACQUBrIAMgBRBeIAJBIGogAkHgAGogAkFAaxBUIAJBIGoQViAHIAIgAisDKCACKwMwIAIrAzgQUBBoIAYQKSAGIAAQKyACQYABaiQAIAALVgECfyMAQRBrIgIkACABQegAaiEDAkAgASsDgAFEAAAAAAAAAABjBEAgAkKAgICAgICA+L9/NwMIIAAgAkEIaiADEGMMAQsgACADEFIaCyACQRBqJAALlQIBBH8CQCAAKAIEIAAoAgAiA2tBBXUiBEEBaiICQYCAgMAASQRAQf///z8gACgCCCADayIDQQR1IgUgAiACIAVJGyADQeD///8HTxsiAgR/IAJBgICAwABPDQIgAkEFdBDECAVBAAshAyADIAJBBXRqIQUgAyAEQQV0aiABEFIiAUEgaiEEIAAoAgQiAiAAKAIAIgNHBEADQCABQSBrIAJBIGsiAhBSIQEgAiADRw0ACyAAKAIAIQMgACgCBCECCyAAIAQ2AgQgACABNgIAIAAoAggaIAAgBTYCCCACIANHBEADQCACQSBrIgIgAigCACgCABEAABogAiADRw0ACwsgAwRAIAMQ8QMLIAQPCxBzAAsQdAALCABBywsQJgALKQEBf0EEEM4IEMUIIgBB5IwCNgIAIABB+IwCNgIAIABB6I0CQRwQAAALQgAgACACOQMwIAAgATkDICAAQfwvNgIAIABCADcDCCAAIAFEAAAAAAAA4D+iIgE5AyggACABOQMQIAAgATkDGCAAC+sBAgN/BHwjAEHQAGsiBCQAIAIrAxAhByABKwMoIQggBEEwaiADKwMYIAIrAxihIAMrAwggAisDCKGaRAAAAAAAAAAAEFAiBRBYIAUrAxBEAAAAAAAAAABjBEAgBEKAgICAgICA+L9/NwMIIARBEGogBEEIaiAFEGMgBSAEQRBqEGgLIARBEGogBSsDCCAIIAiiIAcgB6KhnyIHmqIgAisDEEQAAAAAAAAAABBQIgYgAiADEGogBisDGCEIIAErAyghCSAFKwMQIQogACAGKwMIOQMAIAAgCCAHIAqioCAJoTkDCCAEQdAAaiQAC5QGAgJ/BHwjAEGwAmsiBSQAIAVByAFqIAQgAxBeAn9BACAFQcgBahBXELwCDQAaIAVBqAFqIAFBCGogBUHIAWpEAAAAAAAAAABEAAAAAAAAAAAgACsDKBBQEGIgBUGIAWogAUEoaiAFQcgBakQAAAAAAAAAAEQAAAAAAAAAACAAKwMoEFAQYiAFQegAaiAEIAMQXiAFQcgAaiAFQagBaiADEF4gBUEoaiAFQcgAaiAFQegAahBUIAVByAFqIAVBiAFqIAVBqAFqEF4gBUEIaiAFQcgBaiAFQegAahBUIAVB6ABqIAVB6ABqEFUhCCAFQQhqIAVBCGoQVSEHIAVBCGogBUEoahBVIgkgCaAiCSAJoiAHRAAAAAAAABDAoiAFQShqIAVBKGoQVSAIIAArAygiCiAKoqKhoqAiCBC8AgRAIAVByAFqIAEgCZogByAHoKMiBxCUAiAFQZACaiAFQcgBaiAFQfABakQAAAAAAAAAAEQAAAAAAAAAACAAKwMoEFAQYiAFQfABaiAFQZACaiADIAQQYSAFQcgBaiAFQfABahAuIgBBCDYCICACIAcgACADIAQgBSsDqAIgACsDGKFEAAAAAAAAAABmEIoCDAELQQAgCEQAAAAAAAAAAGRFDQAaIAVByAFqIAEgCJ8iCCAJoSAHIAegIgejIgoQlAIgBUGQAmogBUHIAWogBUHwAWpEAAAAAAAAAABEAAAAAAAAAAAgACsDKBBQEGIgBUHwAWogBUGQAmogAyAEEGEgBUHIAWogBUHwAWoQLiIGQQg2AiAgAiAKIAYgAyAEIAUrA6gCIAYrAxihRAAAAAAAAAAAZhCKAiEGIAVByAFqIAEgCZogCKEgB6MiBxCUAiAFQZACaiAFQcgBaiAFQfABakQAAAAAAAAAAEQAAAAAAAAAACAAKwMoEFAQYiAFQfABaiAFQZACaiADIAQQYSAFQcgBaiAFQfABahAuIgBBCDYCICACIAcgACADIAQgBSsDqAIgACsDGKFEAAAAAAAAAABmEIoCIAZyCyEGIAVBsAJqJAAgBgvMAgIDfwN8IwBBkAFrIgIkACACQfSWATYCQCACQYCXASgCACIDNgIIIANBDGsoAgAgAkEIampBhJcBKAIANgIAIAIoAghBDGsoAgAgAkEIamoiAyACQQxqIgQQtgUgA0KAgICAcDcCSCACQfSWATYCQCACQeCWATYCCCAEEJgEIgNB5JABNgIAIAJCADcCNCACQgA3AiwgAkEQNgI8IAErAzAhBSABKwMoIQYgASsDICEHIAJBCGpBlR9BDRAiIAcQxgRBzB5BBBAiIAYQxgRB0R9BBBAiIAUQxgRB4yJBARAiGiAAIAMQ5AQgAkH8lgEoAgAiATYCCCABQQxrKAIAIAJBCGpqQYiXASgCADYCACADQeSQATYCACACQUBrIQEgAiwAN0EASARAIAIoAjQaIAIoAiwQ8QMLIAMQlgQaIAEQtAUaIAJBkAFqJAALZgIBfwJ8QTgQxAghAiAAKwMgIQMgACsDMCEEIAJB/C82AgAgAkIANwMIIAIgBCABoDkDMCACIAMgASABoKAiATkDICACIAFEAAAAAAAA4D+iIgE5AyggAiABOQMQIAIgATkDGCACCxgBAXwgACsDKCICIAIgAqIgASABoqGfoQslAQF8IAArAygiAiABZQR8IAIFIAIgAqIgAiABoSICIAKioZ8LC1UAIAAgAjkDQCAAIAE5AyAgAEHYMDYCACAAIAM5AzAgACACOQMYIAAgAjkDECAAIAFEAAAAAAAA4D+iIgE5AyggACABIAKhIgI5AzggACACOQMIIAALhgECAX8DfEHIABDECCECIAArAzAhBSAAKwMgIQQgACsDQCEDIAJB2DA2AgAgAiADIAGgIgM5A0AgAiAEIAEgAaCgIgQ5AyAgAiAFIAGgOQMwIAIgAzkDGCACIAM5AxAgAiAERAAAAAAAAOA/oiIBOQMoIAIgASADoSIBOQM4IAIgATkDCCACC0oBAnwgASAAKwM4IgNlBEBEAAAAAAAAAAAPCyAAKwMoIAFmRQRARAAAAAAAAPC/DwsgACsDQCICIAIgAqIgASADoSIBIAGioZ+hCy4BAXwgASAAKwNAIgJmBEAgACsDKA8LIAIgAqIgAiABoSIBIAGioZ8gACsDOKALsQ0CB38DfCMAQZACayIJJAACQCACKwMYIAMrAxihELwCBEAgAisDGCELIAEgAisDECABKAIAKAIsEQoAIQwgAEIANwMAIAAgCyAMoTkDCAwBCyABKwNAIQsgAysDGCACKwMYoSADKwMIIAIrAwihoxDSAxDbAyEMIAlB8AFqRAAAAAAAAAAAIAIrAxBEAAAAAAAAAAAQUCEGIAErAzghDSMAQSBrIgQkACAJQUBrIgVBuDk2AgAgBUEQahDIARogBUEoahDIARogBUFAaxDIARogBUHYAGoQTyEHIAVBkAFqEE8hCCAHIAYQaCAFIAs5A4ABIAUgCyAMo5kiDDkDeCAFIA05A4gBIAUgDCALozkDCCAIIAREAAAAAAAAAABEAAAAAAAAAABEAAAAAAAAAAAQUBBoIARBIGokACMAQdAAayIGJAAgBkEYahDIASEHIAYQyAEhCCAHRAAAAAAAAAAAEMkBIAhEAAAAAAAACEAQyQEgBkEwaiAFIgQgByAEKAIAKAIEEQUAAkAgBisDQJlEu73X2d982z1jBEAgBEEQaiAHEMsBDAELIAZBMGogBCAIIAQoAgAoAgQRBQAgBisDQJlEu73X2d982z1jBEAgBEEQaiAIEMsBDAELIARBEGogBysDECAIKwMQIAQQxQEQyQELIwBBIGsiCCQAIAggBCAEQRBqIAQoAgAoAgQRBQAgCCsDECENIAQgBCsDEDkDKCAEIAQrAxiaOQMwIAggBCAEQShqIgUgBCgCACgCBBEFACAEKwMQIQwCQAJAIA2ZRLu919nffNs9oCINIAgrAxCZZEUEQCAEKwMYIQsMAQsgBSsDACAMoZlEOoww4o55RT5kDQEgBCsDMCAEKwMYIguhmUQ6jDDijnlFPmQNAQsgBCALOQMwIAQgDJo5AyggCCAEIAUgBCgCACgCBBEFACAEKwMQIQwCQCAIKwMQmSANY0UEQCAEKwMYIQsMAQsgBSsDACAMoZlEOoww4o55RT5kDQEgBCsDMCAEKwMYIguhmUQ6jDDijnlFPmQNAQsgBCALmjkDMCAEIAyaOQMoIAggBCAFIAQoAgAoAgQRBQAgBCsDECEMAkAgCCsDEJkgDWNFBEAgBCsDGCELDAELIAUrAwAgDKGZRDqMMOKOeUU+ZA0BIAQrAzAgBCsDGCILoZlEOoww4o55RT5kDQELIAQgCzkDMCAEIAw5AyggCCAEIAUgBCgCACgCBBEFACAIKwMQmSANYw0AQYCqAkH3KkE+ECIaQYCqAkGsJEEJECIiBUHRHkENECIgBEHYAGoQYEHKH0EDECIgBCsDeBDGBEHGH0EDECIgBCsDgAEQxgRBuh5BBRAiIAQrA4gBEMYEGiAFQa4sQQEQIhojAEHwAGsiBSQAQYCqAkG2JEENECIhByAFIAQpAyA3AyggBSAEKQMYNwMgIAUgBCkDEDcDGCAHIAVBGGoQygFB0iRBDBAiIQcgBUEwaiAEIARBEGoiCiAEKAIAKAIEEQUAIAcgBUEwahBgQYMfQQMQIiEHIAVB0ABqIAQgCiAEKAIAKAIEEQUAIAcgBSsDYBDGBEGuLEEBECIaQYCqAkHEJEENECIhByAFIAQpAzg3AxAgBSAEKQMwNwMIIAUgBCkDKDcDACAHIAUQygFB0iRBDBAiIQcgBUEwaiAEIARBKGoiCiAEKAIAKAIEEQUAIAcgBUEwahBgQYMfQQMQIiEHIAVB0ABqIAQgCiAEKAIAKAIEEQUAIAcgBSsDYBDGBEGuLEEBECIaIAVB8ABqJAALIAhBIGokACAGQdAAaiQAIwBBsAFrIgYkACAGQZABaiAEIARBEGoiBSAEKAIAKAIEEQUAIAYgBCsDYCAGKwOYAaEgAisDCCILoSADKwMIIAuhozkDCCAGQcgAaiADIAIQXiAGQegAaiAGQQhqIAZByABqEGMgBkEoaiACIAZB6ABqEGIgBkGQAWogBCAEQShqIgcgBCgCACgCBBEFACAGIAQrA2AgBisDmAGhIAIrAwgiC6EgAysDCCALoaM5A4gBIAZByABqIAMgAhBeIAZB6ABqIAZBiAFqIAZByABqEGMgBkEIaiACIAZB6ABqEGIgBEFAayAFIAcgBisDQCAGKwMgZiIFGxDLASAEQdgAaiAGQShqIAZBCGogBRsQaCAGQbABaiQAIAlBIGogBCAEQUBrIAQoAgAoAgARBQAgCSAJQSBqIAIgAxBhIAErA0AhCyAEKwNwIQwgACAJKwMIOQMAIAAgDCALoTkDCAsgCUGQAmokAAu+CwIJfwR8IwBBkAVrIgUkACAFQZgCaiAEIAMQXgJAIAVBmAJqEFcQvAINACAEKwMYIAMrAxihELwCDQAgBSABKwMgIAArA0CgIAMrAxgiDqEgBCsDGCAOoaM5A4gFIAVBsAFqIAQgAxBeIAVBmAJqIAVBiAVqIAVBsAFqEGMgBUHoBGogAyAFQZgCahBiIAVByARqIAQgAxBeIAVCADcD4AQgBUHIBGoQWCAFQagEaiAFQcgEahBZIAMrAxghDiAEKwMYIREgBUGYAmogBCADEF4gBUGYAmoQVyEPIAArA0AiECARIA6hIA+jENIDENsDo5khESAAKwM4IQ8gBUGYAmoiBkG4OTYCACAGQRBqEMgBGiAGQShqEMgBGiAGQUBrEMgBGiAGQdgAahBPIQkgBkGQAWoQTxogBkHQOTYCACAGQbABahBPIQogBkHQAWoQTyEIIAZB8AFqEE8aIAkgBUHoBGoQaCAGIBA5A4ABIAYgETkDeCAGIA85A4gBIAYgESAQozkDCCAKIAVByARqEGggCCAFQagEahBoIAYhByMAQdAAayILJAAgC0EwaiABIgZByABqEFkgB0HwAWogC0EwahBoIAdBkAFqIAZBCGoQaAJ8IAYrAxggBisDOGEEQCAHKwOAASAHKwPgAaIiDiAOoiIOIA4gBysDeCAHKwPAAaIiDyAPoqCjnwwBC0QAAAAAAAAAACAGKwMQIAYrAzBiDQAaIAcrA4ABIAcrA9gBoiIOIA6iIg4gDiAHKwN4IAcrA7gBoiIPIA+ioKOfCyEOIAtBMGoQyAEhBiALQRhqEMgBIQkgCxDIASEKIAZEAAAAAAAA8D8gDiAOoqGfIg8gDhC6AhDJASAJIQgCfyAHIAYrAxAgBygCACgCDBEKACIQRAAAAAAAAAAAZCIMRQRAIAohCEEAIBBEAAAAAAAAAABjRQ0BGgsgCCAGEMsBIBBEAAAAAAAAAABkRQshCCAGIA8gDpoiEBC6AhDJAQJAAn8gByAGKwMQIAcoAgAoAgwRCgAiEUQAAAAAAAAAAGQEQEEBIQwgCQwBCyARRAAAAAAAAAAAY0UNAUEBIQggCgsgBhDLAQsgBiAPmiIPIA4QugIQyQECQAJ/IAcgBisDECAHKAIAKAIMEQoAIg5EAAAAAAAAAABkBEBBASEMIAkMAQsgDkQAAAAAAAAAAGNFDQFBASEIIAoLIAYQywELIAYgDyAQELoCEMkBAkACfyAHIAYrAxAgBygCACgCDBEKACIORAAAAAAAAAAAZARAQQEhDCAJDAELIA5EAAAAAAAAAABjRQ0BQQEhCCAKCyAGEMsBCyAIIAxxIgYEQAJ8IAkrAxAiECAKKwMQIhFkBEAgECEPIBEMAQtEAAAAAAAAAAAhD0QAAAAAAAAAACAQIBFjRQ0AGiARIQ8gEAsiDiAPIAcQxQEhECAPRAAAAAAAABDAoCAOIAcQxQEhDiAHQRBqIBAQyQEgB0EoaiAOEMkBCyALQdAAaiQAIAZFDQAgBUH4AWogByAHQRBqIAcoAgAoAgARBQAgBUHYAWogByAHQShqIAcoAgAoAgARBQAgBUGIAWogBUH4AWogAyAEEGEgBUGwAWogBUGIAWoQLiENIAVB6ABqIAVB2AFqIAMgBBBhIAVBiAFqIAVB6ABqEC4hCCANQQk2AiAgCEEJNgIgIAVByABqIAcgB0EQaiAHKAIAKAIEEQUAIAVB6ABqIAVByABqIAVBKGpEAAAAAAAAAABEAAAAAAAAAAAgACsDGBBQEF4gBUEoaiAHIAdBKGogBygCACgCBBEFACAFQcgAaiAFQShqIAVBCGpEAAAAAAAAAABEAAAAAAAAAAAgACsDGBBQEF4gASAFQegAahCTAiEOIAEgBUHIAGoQkwIhESACIA4gDSADIARBARCKAiACIBEgCCADIARBARCKAnIhDQsgBUGQBWokACANC7EDAQN/IwBB0AFrIgIkACACQfSWATYCgAEgAkGAlwEoAgAiAzYCSCADQQxrKAIAIAJByABqakGElwEoAgA2AgAgAigCSEEMaygCACACQcgAamoiAyACQcwAaiIEELYFIANCgICAgHA3AkggAkH0lgE2AoABIAJB4JYBNgJIIAQQmAQiA0HkkAE2AgAgAkIANwJ0IAJCADcCbCACQRA2AnwgAiABKQMYNwMYIAIgASkDIDcDICACIAEpAyg3AyggAiABKQMwNwMwIAIgASkDEDcDECACIAEpAwg3AwggAkHYMDYCACACQUBrIAFBQGspAwA3AwAgAiABKQM4NwM4IAJByABqIgFBhx9BDRAiIAIrAyAQxgRBqSBBBRAiIAIrAzgQxgRB1h9BBBAiIAIrA0AQxgRB0R9BBBAiIAIrAzAQxgRB4yJBARAiGiAAIAMQ5AQgAUH8lgEoAgAiADYCACABIABBDGsoAgBqQYiXASgCADYCACADQeSQATYCACACQYABaiEAIAEsAC9BAEgEQCABKAIsGiACKAJsEPEDCyADEJYEGiAAELQFGiACQdABaiQAC4AIAQZ/AkACQAJAAkACQAJAIAAoAjwiByAAKAJAIgZJBEAgByACOQMAIAdBCGohBQwBCyAHIAAoAjgiCGtBA3UiCUEBaiIFQYCAgIACTw0BIAlBA3RB/////wEgBiAIayIJQQJ1IgYgBSAFIAZJGyAJQfj///8HTxsiBQR/IAVBgICAgAJPDQMgBUEDdBDECAVBAAsiCmoiBiACOQMAIAogBUEDdGohCiAGQQhqIQUgByAIRwRAA0AgBkEIayIGIAdBCGsiBysDADkDACAHIAhHDQALCyAAIAo2AkAgACAFNgI8IAAgBjYCOCAIRQ0AIAgQ8QMLIAAgBTYCPAJAIAAoAkgiByAAKAJMIgZJBEAgByADOQMAIAdBCGohBQwBCyAHIAAoAkQiCGtBA3UiCUEBaiIFQYCAgIACTw0DIAlBA3RB/////wEgBiAIayIJQQJ1IgYgBSAFIAZJGyAJQfj///8HTxsiBQR/IAVBgICAgAJPDQMgBUEDdBDECAVBAAsiCmoiBiADOQMAIAogBUEDdGohCiAGQQhqIQUgByAIRwRAA0AgBkEIayIGIAdBCGsiBysDADkDACAHIAhHDQALCyAAIAo2AkwgACAFNgJIIAAgBjYCRCAIRQ0AIAgQ8QMLIAAgBTYCSAJAIAAoAmAiByAAKAJkIgpJBEAgByABNgIAIAdBBGohBQwBCyAHIAAoAlwiCGtBAnUiCUEBaiIGQYCAgIAETw0EIAlBAnRB/////wMgCiAIayIFQQF1IgkgBiAGIAlJGyAFQfz///8HTxsiBQR/IAVBgICAgARPDQMgBUECdBDECAVBAAsiCWoiBiABNgIAIAkgBUECdGohASAGQQRqIQUgByAIRwRAA0AgBkEEayIGIAdBBGsiBygCADYCACAHIAhHDQALIAAoAmQaIAAoAlwhCAsgACABNgJkIAAgBTYCYCAAIAY2AlwgCEUNACAIEPEDCyAAIAU2AmACQCAAKAJUIgcgACgCWCIGSQRAIAcgBDkDACAHQQhqIQUMAQsgByAAKAJQIghrQQN1IglBAWoiBUGAgICAAk8NBUH/////ASAGIAhrIgFBAnUiBiAFIAUgBkkbIAFB+P///wdPGyIFBH8gBUGAgICAAk8NAyAFQQN0EMQIBUEACyIKIAlBA3RqIgYgBDkDACAKIAVBA3RqIQogBkEIaiEFIAcgCEcEQANAIAZBCGsiBiAHQQhrIgcrAwA5AwAgByAIRw0ACwsgACAKNgJYIAAgBTYCVCAAIAY2AlAgCEUNACAIEPEDCyAAIAU2AlQgAiAAKwMoZARAIAAgAjkDKCAAIAIgAqA5AyALDwsQcwALEHQACxBzAAsQcwALEHMAC+ABAQd/AkAgACgCYCICIAAoAlwiBkYNACAAKAI4IQQgAiAGa0ECdSEFAkAgAUSN7bWg98awvmYEQCAEKwMARI3ttaD3xrA+oCABZg0CIAVBAk8NAQwCCyAFQQJJDQELIARBCGshB0EBIQIDQAJAIAcgAkEDdCIIaisDAESN7bWg98awvqAgAWVFDQAgBCAIaisDAESN7bWg98awPqAgAWZFDQAgAiEDDAILIAUgAkEBaiICRw0ACwsgBiADQQJ0aigCACICIAEgAigCACgCLBEKACAAKAJQIANBA3RqKwMAoAvYAQEGfyAAKAJgIgIgACgCXCIGa0ECdSEDAkACQCACIAZGDQAgACgCRCEEIAFEje21oPfGsL5mBEBBACECIAQrAwBEje21oPfGsD6gIAFmDQILIANBAkkNACAEQQhrIQdBASECA0AgASAHIAJBA3QiBWorAwBEje21oPfGsL6gZgRAIAQgBWorAwBEje21oPfGsD6gIAFmDQMLIAMgAkEBaiICRw0ACwsgA0EBayECCyAGIAJBAnRqKAIAIgUgASAAKAJQIAJBA3RqKwMAoSAFKAIAKAIwEQoAC98CAgZ/AXwjAEHQAGsiAyQAIAAoAmAgACgCXEcEQANAIANBKGogASADRAAAAAAAAAAARAAAAAAAAAAAIAVBA3QiBiAAKAJQaisDABA1IgQQPyAEEDgaAkAgACgCXCAFQQJ0aigCACIEIANBKGogAiAEKAIAKAIMEQQARQ0AIAMoAkgoAiBFDQAgA0EoaiADKAJIEF0iCSAFBHwgACgCOCAGakEIaysDAESN7bWg98awvqAFRI3ttaD3xrC+C2MNACAJIAAoAjggBmorAwBEje21oPfGsD6gZA0AQSgQxAggAygCSCIIEFIiBEHgLDYCACAEIAgoAiA2AiAgASADKwNAIAAoAlAgBmorAwChEDsEQCAEQQ42AiAgASAENgIgQQEhBwwBCyAEIAQoAgAoAgQRAQALIANBKGoQOBogBUEBaiIFIAAoAmAgACgCXGtBAnVJDQALCyADQdAAaiQAIAcL2wICBn8BfCMAQdAAayIDJAAgACgCYCAAKAJcRwRAA0AgA0EoaiABIANBCGpEAAAAAAAAAABEAAAAAAAAAAAgBUEDdCIGIAAoAlBqKwMAEFAQPwJAIAAoAlwgBUECdGooAgAiBCADQShqIAIgBCgCACgCEBEEAEUNACADKAJIKAIgRQ0AIANBKGogAygCSBBdIgkgBQR8IAAoAjggBmpBCGsrAwBEje21oPfGsL6gBUSN7bWg98awvgtjDQAgCSAAKAI4IAZqKwMARI3ttaD3xrA+oGQNAEEoEMQIIAMoAkgiCBBSIgRB4Cw2AgAgBCAIKAIgNgIgIAEgAysDQCAAKAJQIAZqKwMAoRA7BEAgBEEDNgIgIAEgBDYCIEEBIQcMAQsgBCAEKAIAKAIEEQEACyADQShqEDgaIAVBAWoiBSAAKAJgIAAoAlxrQQJ1SQ0ACwsgA0HQAGokACAHC+oJAhV/AnwjAEHAAmsiBCQAIARBADYCvAIgBEIANwK0AgJAIAAoAmAgACgCXEYNACABQcgAaiEPIAFBKGohECABQQhqIREgBEGUAmohEiAEQaACaiETIARBCGohDSAEQdgBaiEUIARBsAFqIRUgBEH4AGohFiAEQdgAaiEXIARBOGohGAJAA0ACQCAEQagBahCGAiEOIARB1DY2AjAgGCAREFIaIBcgEBBSGiAWIA8QUhogBEEANgKgASAEQgA3A5gBIAEoAmwiBiABKAJoIgdHBEAgBiAHayIJQYgBbUHiw4cPTw0BIAQgCRDECCIFNgKcASAEIAU2ApgBIAQgBSAJajYCoAEgBCAHIAYgBRCJATYCnAELIAQgASsDICAAKAJQIApBA3RqIgUrAwCgOQNQIAQgASsDQCAFKwMAoDkDcAJAIAAoAlwgCkECdGooAgAiBSAEQTBqIA4gAyAFKAIAKAIYEQYARQ0AIAErAyAhGiAAKAJgIgsgACgCXCIMa0ECdSEGAkACQCALIAxGDQAgACgCRCEIIAQrA8gBIBqhIhlEje21oPfGsL5mBEBBACEFIAgrAwBEje21oPfGsD6gIBlmDQILIAZBAkkNACAIQQhrIQlBASEFA0AgGSAJIAVBA3QiB2orAwBEje21oPfGsL6gZgRAIAcgCGorAwBEje21oPfGsD6gIBlmDQMLIAYgBUEBaiIFRw0ACwsgBkEBayEFCyAFIApGBEAgBCAEKwOAAjkDACANIBUQUiIGQeAsNgIAIAQgBCgC0AE2AiggBAJ/IAQoArgCIgUgBCgCvAJJBEAgBSAEKwMAOQMAIAVBCGogBhBSQeAsNgIAIAUgBCgCKDYCKCAFQTBqDAELIARBtAJqIAQQigELNgK4AiABKwMgIRogACgCYCILIAAoAlwiDGtBAnUhBgsCQAJAIAsgDEYNACAAKAJEIQggBCsD8AEgGqEiGUSN7bWg98awvmYEQEEAIQUgCCsDAESN7bWg98awPqAgGWYNAgsgBkECSQ0AIAhBCGshCUEBIQUDQCAZIAkgBUEDdCIHaisDAESN7bWg98awvqBmBEAgByAIaisDAESN7bWg98awPqAgGWYNAwsgBiAFQQFqIgVHDQALCyAGQQFrIQULIAUgCkcNACAEIAQrA4gCOQMAIA0gFBBSIgZB4Cw2AgAgBCAEKAL4ATYCKCAEAn8gBCgCuAIiBSAEKAK8AkkEQCAFIAQrAwA5AwAgBUEIaiAGEFJB4Cw2AgAgBSAEKAIoNgIoIAVBMGoMAQsgBEG0AmogBBCKAQs2ArgCCyAEQdQ2NgIwIAQoApgBIgYEQCAGIQcgBiAEKAKcASIFRwRAA0AgBUGIAWsiBSAFKAIAKAIAEQAAGiAFIAZHDQALIAQoApgBIQcLIAQgBjYCnAEgBCgCoAEaIAcQ8QMLIA5B/DY2AgAgEyAEKAKkAhCLASASIAQoApgCEIwBIApBAWoiCiAAKAJgIAAoAlxrQQJ1SQ0BDAILCxBzAAtBACEFIAQoArQCIgYgBCgCuAJHIgAEQANAIAIgBiAFQTBsaiIGKwMAIAZBCGoQhwIgBUEBaiIFIAQoArgCIAQoArQCIgZrQTBtSQ0ACyAAIQULIAZFDQAgBCAGNgK4AiAEKAK8AhogBhDxAwsgBEHAAmokACAFC84BACAAIAFHBEADQCACQfw2NgIAIAJBCGogAEEIahBSQeAsNgIAIAIgACgCKDYCKCACQTBqIABBMGoQUkHgLDYCACACIAAoAlA2AlAgAiAAKQNYNwNYIAIgACkDYDcDYCACIAAtAGg6AGggAkIANwJwIAIgAkHwAGo2AmwgAkHsAGogACgCbCAAQfAAahCZASACIAJB/ABqNgJ4IAJCADcCfCACQfgAaiAAKAJ4IABB/ABqEJoBIAJBiAFqIQIgAEGIAWoiACABRw0ACwsgAgvAAgEGfwJAIAAoAgQgACgCACIDa0EwbSIFQQFqIgJB1qrVKkkEQEHVqtUqIAAoAgggA2tBMG0iA0EBdCIEIAIgAiAESRsgA0Gq1aoVTxsiAwR/IANB1qrVKk8NAiADQTBsEMQIBUEACyIEIAVBMGxqIgIgASsDADkDACACQQhqIAFBCGoQUkHgLDYCACACIAEoAig2AiggBCADQTBsaiEHIAJBMGohBgJAIAAoAgQiASAAKAIAIgVGBEAgAiEEDAELA0AgAkEwayIEIAFBMGsiAysDADkDACACQShrIAFBKGsQUkHgLDYCACACQQhrIAFBCGsoAgA2AgAgAyEBIAQhAiADIAVHDQALIAAoAgAhBQsgACAGNgIEIAAgBDYCACAAKAIIGiAAIAc2AgggBQRAIAUQ8QMLIAYPCxBzAAsQdAALIAAgAQRAIAAgASgCABCLASAAIAEoAgQQiwEgARDxAwsLIAAgAQRAIAAgASgCABCMASAAIAEoAgQQjAEgARDxAwsLYAEDfyAAQdQ2NgIAIAAoAmgiAQRAIAEhAyABIAAoAmwiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogASACRw0ACyAAKAJoIQMLIAAgATYCbCAAKAJwGiADEPEDCyAACygAIABB/DY2AgAgAEH4AGogACgCfBCLASAAQewAaiAAKAJwEIwBIAAL6gkCFX8CfCMAQcACayIEJAAgBEEANgK8AiAEQgA3ArQCAkAgACgCYCAAKAJcRg0AIAFByABqIQ8gAUEoaiEQIAFBCGohESAEQZQCaiESIARBoAJqIRMgBEEIaiENIARB2AFqIRQgBEGwAWohFSAEQfgAaiEWIARB2ABqIRcgBEE4aiEYAkADQAJAIARBqAFqEIYCIQ4gBEHUNjYCMCAYIBEQUhogFyAQEFIaIBYgDxBSGiAEQQA2AqABIARCADcDmAEgASgCbCIGIAEoAmgiB0cEQCAGIAdrIglBiAFtQeLDhw9PDQEgBCAJEMQIIgU2ApwBIAQgBTYCmAEgBCAFIAlqNgKgASAEIAcgBiAFEIkBNgKcAQsgBCABKwMgIAAoAlAgCkEDdGoiBSsDAKA5A1AgBCABKwNAIAUrAwCgOQNwAkAgACgCXCAKQQJ0aigCACIFIARBMGogDiADIAUoAgAoAhwRBgBFDQAgASsDICEaIAAoAmAiCyAAKAJcIgxrQQJ1IQYCQAJAIAsgDEYNACAAKAJEIQggBCsDyAEgGqEiGUSN7bWg98awvmYEQEEAIQUgCCsDAESN7bWg98awPqAgGWYNAgsgBkECSQ0AIAhBCGshCUEBIQUDQCAZIAkgBUEDdCIHaisDAESN7bWg98awvqBmBEAgByAIaisDAESN7bWg98awPqAgGWYNAwsgBiAFQQFqIgVHDQALCyAGQQFrIQULIAUgCkYEQCAEIAQrA4ACOQMAIA0gFRBSIgZB4Cw2AgAgBCAEKALQATYCKCAEAn8gBCgCuAIiBSAEKAK8AkkEQCAFIAQrAwA5AwAgBUEIaiAGEFJB4Cw2AgAgBSAEKAIoNgIoIAVBMGoMAQsgBEG0AmogBBCKAQs2ArgCIAErAyAhGiAAKAJgIgsgACgCXCIMa0ECdSEGCwJAAkAgCyAMRg0AIAAoAkQhCCAEKwPwASAaoSIZRI3ttaD3xrC+ZgRAQQAhBSAIKwMARI3ttaD3xrA+oCAZZg0CCyAGQQJJDQAgCEEIayEJQQEhBQNAIBkgCSAFQQN0IgdqKwMARI3ttaD3xrC+oGYEQCAHIAhqKwMARI3ttaD3xrA+oCAZZg0DCyAGIAVBAWoiBUcNAAsLIAZBAWshBQsgBSAKRw0AIAQgBCsDiAI5AwAgDSAUEFIiBkHgLDYCACAEIAQoAvgBNgIoIAQCfyAEKAK4AiIFIAQoArwCSQRAIAUgBCsDADkDACAFQQhqIAYQUkHgLDYCACAFIAQoAig2AiggBUEwagwBCyAEQbQCaiAEEIoBCzYCuAILIARB1DY2AjAgBCgCmAEiBgRAIAYhByAGIAQoApwBIgVHBEADQCAFQYgBayIFIAUoAgAoAgARAAAaIAUgBkcNAAsgBCgCmAEhBwsgBCAGNgKcASAEKAKgARogBxDxAwsgDkH8NjYCACATIAQoAqQCEIsBIBIgBCgCmAIQjAEgCkEBaiIKIAAoAmAgACgCXGtBAnVJDQEMAgsLEHMAC0EAIQUgBCgCtAIiBiAEKAK4AkciAARAA0AgAiAGIAVBMGxqIgYrAwAgBkEIahCHAiAFQQFqIgUgBCgCuAIgBCgCtAIiBmtBMG1JDQALIAAhBQsgBkUNACAEIAY2ArgCIAQoArwCGiAGEPEDCyAEQcACaiQAIAUL6gkCFX8CfCMAQcACayIEJAAgBEEANgK8AiAEQgA3ArQCAkAgACgCYCAAKAJcRg0AIAFByABqIQ8gAUEoaiEQIAFBCGohESAEQZQCaiESIARBoAJqIRMgBEEIaiENIARB2AFqIRQgBEGwAWohFSAEQfgAaiEWIARB2ABqIRcgBEE4aiEYAkADQAJAIARBqAFqEIYCIQ4gBEHUNjYCMCAYIBEQUhogFyAQEFIaIBYgDxBSGiAEQQA2AqABIARCADcDmAEgASgCbCIGIAEoAmgiB0cEQCAGIAdrIglBiAFtQeLDhw9PDQEgBCAJEMQIIgU2ApwBIAQgBTYCmAEgBCAFIAlqNgKgASAEIAcgBiAFEIkBNgKcAQsgBCABKwMgIAAoAlAgCkEDdGoiBSsDAKA5A1AgBCABKwNAIAUrAwCgOQNwAkAgACgCXCAKQQJ0aigCACIFIARBMGogDiADIAUoAgAoAiARBgBFDQAgASsDICEaIAAoAmAiCyAAKAJcIgxrQQJ1IQYCQAJAIAsgDEYNACAAKAJEIQggBCsDyAEgGqEiGUSN7bWg98awvmYEQEEAIQUgCCsDAESN7bWg98awPqAgGWYNAgsgBkECSQ0AIAhBCGshCUEBIQUDQCAZIAkgBUEDdCIHaisDAESN7bWg98awvqBmBEAgByAIaisDAESN7bWg98awPqAgGWYNAwsgBiAFQQFqIgVHDQALCyAGQQFrIQULIAUgCkYEQCAEIAQrA4ACOQMAIA0gFRBSIgZB4Cw2AgAgBCAEKALQATYCKCAEAn8gBCgCuAIiBSAEKAK8AkkEQCAFIAQrAwA5AwAgBUEIaiAGEFJB4Cw2AgAgBSAEKAIoNgIoIAVBMGoMAQsgBEG0AmogBBCKAQs2ArgCIAErAyAhGiAAKAJgIgsgACgCXCIMa0ECdSEGCwJAAkAgCyAMRg0AIAAoAkQhCCAEKwPwASAaoSIZRI3ttaD3xrC+ZgRAQQAhBSAIKwMARI3ttaD3xrA+oCAZZg0CCyAGQQJJDQAgCEEIayEJQQEhBQNAIBkgCSAFQQN0IgdqKwMARI3ttaD3xrC+oGYEQCAHIAhqKwMARI3ttaD3xrA+oCAZZg0DCyAGIAVBAWoiBUcNAAsLIAZBAWshBQsgBSAKRw0AIAQgBCsDiAI5AwAgDSAUEFIiBkHgLDYCACAEIAQoAvgBNgIoIAQCfyAEKAK4AiIFIAQoArwCSQRAIAUgBCsDADkDACAFQQhqIAYQUkHgLDYCACAFIAQoAig2AiggBUEwagwBCyAEQbQCaiAEEIoBCzYCuAILIARB1DY2AjAgBCgCmAEiBgRAIAYhByAGIAQoApwBIgVHBEADQCAFQYgBayIFIAUoAgAoAgARAAAaIAUgBkcNAAsgBCgCmAEhBwsgBCAGNgKcASAEKAKgARogBxDxAwsgDkH8NjYCACATIAQoAqQCEIsBIBIgBCgCmAIQjAEgCkEBaiIKIAAoAmAgACgCXGtBAnVJDQEMAgsLEHMAC0EAIQUgBCgCtAIiBiAEKAK4AkciAARAA0AgAiAGIAVBMGxqIgYrAwAgBkEIahCHAiAFQQFqIgUgBCgCuAIgBCgCtAIiBmtBMG1JDQALIAAhBQsgBkUNACAEIAY2ArgCIAQoArwCGiAGEPEDCyAEQcACaiQAIAULHQBBgKoCQY4nQRkQIhpBOBDECCIAQdw4NgIAIAAL4gQBBX8jAEGgAWsiAiQAIAJB9JYBNgJQIAJBgJcBKAIAIgM2AhggA0EMaygCACACQRhqakGElwEoAgA2AgAgAigCGEEMaygCACACQRhqaiIDIAJBHGoiBRC2BSADQoCAgIBwNwJIIAJB9JYBNgJQIAJB4JYBNgIYIAUQmAQiBkHkkAE2AgAgAkIANwJEIAJCADcCPCACQRA2AkwgAkEYakHuI0EVECIgASgCYCABKAJca0ECdRDFBEGDJ0EKECIaIAEoAmAgASgCXEcEQANAIAJBGGpBlSVBARAiIAQQxQRB9SFBARAiIQMgAkEMaiABKAJcIARBAnRqKAIAIgUgBSgCACgCFBECACADIAIoAgwgAkEMaiACLAAXIgVBAEgiAxsgAigCECAFIAMbECJBrixBARAiGiACLAAXQQBIBEAgAigCFBogAigCDBDxAwsgAkEYakH+FUEJECIgBBDFBEHOH0ECECIgBEEDdCIDIAEoAjhqKwMAEMYEQa4sQQEQIhogAkEYakHpFUEJECIgBBDFBEHOH0ECECIgASgCRCADaisDABDGBEGuLEEBECIaIAJBGGpB8xVBChAiIAQQxQRBzh9BAhAiIAEoAlAgA2orAwAQxgRBrixBARAiGiAEQQFqIgQgASgCYCABKAJca0ECdUkNAAsLIAJB0ABqIQQgACAGEOQEIAJB/JYBKAIAIgE2AhggAUEMaygCACACQRhqakGIlwEoAgA2AgAgBkHkkAE2AgAgAiwAR0EASARAIAIoAkQaIAIoAjwQ8QMLIAYQlgQaIAQQtAUaIAJBoAFqJAALnQICAXwDfyAAQgA3AyAgAEIANwM4IABBpDM2AgAgAEIANwMoIABBQGtCADcDACAAQgA3A0ggAEIANwNQIABCADcDWCAAQgA3A2AgAxDWAyEEQTgQxAggAUQAAAAAAADwPxB1IQVBwAAQxAggAiADRAAAAAAAACRAEJ0BIQZBOBDECCACRAAAAAAAADRAELkBIQcgACAFIAQgAUQAAAAAAADgP6IiAaIiBCABIAEgAaIgBCAEoqGfoSIBRAAAAAAAAAAAEIMBIAAgBiACRAAAAAAAAOA/oiICIAIgAxDfAyIDoyAEIAOjIAGhIgGhIgMgAZoQgwEgACAHIAIgA0QAAAAAAAA0QKAgAxCDASAAQoCAgICAgICfwAA3AzAgAAuBAQEBfyAAQbQxNgIAIAAoAlwiAQRAIAAgATYCYCAAKAJkGiABEPEDCyAAKAJQIgEEQCAAIAE2AlQgACgCWBogARDxAwsgACgCRCIBBEAgACABNgJIIAAoAkwaIAEQ8QMLIAAoAjgiAQRAIAAgATYCPCAAKAJAGiABEPEDCyAAEPEDCwQAQQALEAAgAEIANwMAIABCADcDCAt+AQF/IABBtDE2AgAgACgCXCIBBEAgACABNgJgIAAoAmQaIAEQ8QMLIAAoAlAiAQRAIAAgATYCVCAAKAJYGiABEPEDCyAAKAJEIgEEQCAAIAE2AkggACgCTBogARDxAwsgACgCOCIBBEAgACABNgI8IAAoAkAaIAEQ8QMLIAALYwEDfyAAQdQ2NgIAIAAoAmgiAQRAIAEhAyABIAAoAmwiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogASACRw0ACyAAKAJoIQMLIAAgATYCbCAAKAJwGiADEPEDCyAAEPEDC/gCAQV/IAEgAkcEQCAAQQRqIQcDQCAAKAIEIQYCQAJAAkAgByIDIAAoAgBGDQAgAyEFAkAgBiIEBEADQCAEIgMoAgQiBA0ADAILAAsDQCAFKAIIIgMoAgAgBUYhBCADIQUgBA0ACwsgASgCECIEIAMoAhBLDQAgByIFIQMgBkUNAQNAIAYiAygCECIFIARLBEAgAyEFIAMoAgAiBg0BDAMLIAQgBU0NAyADKAIEIgYNAAsgA0EEaiEFDAELIANBBGogByAGGyIFKAIADQEgAyAHIAYbIQMLQRQQxAghBCABKAIQIQYgBCADNgIIIARCADcCACAEIAY2AhAgBSAENgIAIAAoAgAoAgAiAwRAIAAgAzYCACAFKAIAIQQLIAAoAgQgBBCcASAAIAAoAghBAWo2AggLAkAgASgCBCIEBEADQCAEIgMoAgAiBA0ADAILAAsDQCABKAIIIgMoAgAgAUchBCADIQEgBA0ACwsgAyEBIAIgA0cNAAsLC4YDAgV/AnwgASACRwRAIABBBGohBwNAIAAoAgQhBgJAAkACQCAHIgMgACgCAEYNACAGIQQgAyEFAkAgBgRAA0AgBCIDKAIEIgQNAAwCCwALA0AgBSgCCCIDKAIAIAVGIQQgAyEFIAQNAAsLIAErAxgiCCADKwMYZA0AIAciBCEDIAZFDQEDQCAGIgMrAxgiCSAIZARAIAMhBCADKAIAIgYNAQwDCyAIIAlkRQ0DIAMoAgQiBg0ACyADQQRqIQQMAQsgA0EEaiAHIAYbIgQoAgANASADIAcgBhshAwtBIBDECCIFIAFBEGoiBikDCDcDGCAFIAYpAwA3AxAgBSADNgIIIAVCADcCACAEIAU2AgAgACgCACgCACIDBEAgACADNgIAIAQoAgAhBQsgACgCBCAFEJwBIAAgACgCCEEBajYCCAsCQCABKAIEIgQEQANAIAQiAygCACIEDQAMAgsACwNAIAEoAggiAygCACABRyEEIAMhASAEDQALCyADIQEgAiADRw0ACwsLKwAgAEH8NjYCACAAQfgAaiAAKAJ8EIsBIABB7ABqIAAoAnAQjAEgABDxAwudBAEEfyABIAAgAUYiAzoADAJAIAMNAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBUUNACAFLQAMQQFGDQAgBUEMaiEEDAILAkAgASACKAIARgRAIAIhAQwBCyACIAIoAgQiASgCACIENgIEIAIhACAEBEAgBCACNgIIIAIoAggiAygCACEACyABIAM2AgggAyAAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQQLIAFBAToADCADQQA6AAwgAyAEKAIEIgI2AgAgAgRAIAIgAzYCCAsgBCADKAIIIgI2AgggAiACKAIAIANHQQJ0aiAENgIAIAQgAzYCBCADIAQ2AggPCwJAIARFDQAgBC0ADEEBRg0AIARBDGohBAwBCwJAIAEgAigCACIERwRAIAIhBAwBCyACIAQoAgQiATYCACABBEAgASACNgIIIAIoAgghAwsgBCADNgIIIAMgAygCACACR0ECdGogBDYCACAEIAI2AgQgAiAENgIIIAQoAgghAwsgBEEBOgAMIANBADoADCADIAMoAgQiAigCACIENgIEIAQEQCAEIAM2AggLIAIgAygCCCIENgIIIAQgBCgCACADR0ECdGogAjYCACACIAM2AgAgAyACNgIIDAILIAJBAToADCADIAAgA0Y6AAwgBEEBOgAAIAMhASAAIANHDQALCwtUACAAIAI5AzggACABOQMgIABBpDc2AgAgAEIANwMQIAAgAUQAAAAAAADgP6IiATkDKCAAIAE5AwggACABIAIQ3wOjIgI5AxggACACIAOgOQMwIAALDQAgASAAKwM4EN8DowseACABIAArAxhjBEAgACsDOBDfAyABog8LIAArAygLHwBB6AAQxAggASABoCIBIAEgACsDIKAgACsDOBCTAQveAgICfwZ8IwBBkAFrIgMkACADQfAAaiACEHECf0EAIAMrA4gBELwCDQAaAkAgAysDeBC8AkUNACADKwOAARC8AkUNACABIANByABqIAErAwggASsDECACKwMgQQ8QMSIAKwMYIAAgAhA9DAELIAMrA4gBIQYgAysDgAEhBSADKwN4IQcgA0HwAGogAkEIahBVIQggA0HwAGoQWCADQShqIABBKGogA0HwAGoQYyADIAEgA0EoahBeIANByABqIAMQLiIERAAAAAAAAPA/IAajIgYgCCAHIAQrAwiioSAFIAQrAxCioaIiCTkDGCAAKwMwIQogBEEQNgIgIAMgASsDCCABKwMQRAAAAAAAAAAAEDAiAEEPNgIgIAAgBiAIIAcgACsDCKKhIAUgACsDEKKhoiIFOQMYQQEgASAFIAAgAhA9DQAaIAEgCSAKoSAEIAIQPQshACADQZABaiQAIAAL+QECBXwDfyMAQSBrIgkkACABKwMoIQQgASsDGCEGIAIrAxAhBSADKwMYIAIrAxihIAMrAwggAisDCKGjIgcQuwIhCCAJAnwgB5kgBiAEoyAEIASiIAUgBaIiBqGfIgSiIAYgBCAEoqCfo5llIgoEQCAIIAYgByAHoiABKwMoIgQgBKKiIgSiIAErAzAiByAHoiAEoaOfogwBCyAEIAiiCyIEIAVEAAAAAAAAAAAQUCILIAIgAxBqIAsrAxggASsDGKEhBSAAIAoEfCAFIAErAyggBiAEIASioJ+hIAErAzgQ3wOjoAUgBQs5AwggACAEOQMAIAlBIGokAAtDAEQAAAAAAAAAAEQAAAAAAAAAAEQAAAAAAAAAACABIAIgAxCvAUQAAAAAAAAAACAAKwMYIAArAwggASACIAMQrwFyC6sKAgN/CXwjAEGgAmsiBSQAAkAgBCsDGCADKwMYoRC8Ag0AIAUgASsDICADKwMYIgqhIAQrAxggCqGjOQOIASAFQdABaiAEIAMQXiAFQfABaiAFQYgBaiAFQdABahBjIAVB6ABqIAMgBUHwAWoQYiAFIAErAyAgACsDGKAgAysDGCIKoSAEKwMYIAqhozkDYCAFQdABaiAEIAMQXiAFQfABaiAFQeAAaiAFQdABahBjIAVBQGsgAyAFQfABahBiIAUgASsDIDkDWCAFQfABaiAFQUBrIAVB6ABqEF4gBUHwAWoQVyEKAkAgBUFAayABQQhqIAFBKGoQXyAAKwMoIghlRQ0AIAggCKIgASsDMCIJIAErAxAiDaEiDCAMoiABKwM4Ig4gASsDGCIPoSIIIAiioJ8iCyALoiILoiANIAUrA0giEKEgDiAFKwNQIg2hoiAPIA2hIAkgEKGioSIJIAmioSIORAAAAAAAAAAAZkUNACAJmiEPIA5EAAAAAAAAAABhBEAgASAFQSBqIBAgCCAJoiALo6AgDSAMIA+iIAujoBBREJMCIQggBSABKwMgIAArAxigIAMrAxgiCaEgBCsDGCAJoaM5AwAgBUGQAWogBCADEF4gBUGwAWogBSAFQZABahBjIAVB0AFqIAMgBUGwAWoQYiAFQfABaiAFQdABahAuIgZBDTYCICACIAggBiADIARBARCKAiEGDAELIAgQuwIhECABIAVBIGogBSsDSCAJIAiiIg0gDp8iCSAMIBCioqAgC6OgIA8gDKIiECAImSAJoiIOoCALoyAFKwNQoBBREJMCIQ8gCBC7AiEIIAEgBSAFKwNIIA0gCSAMIAiioqEgC6OgIBAgDqEgC6MgBSsDUKAQURCTAiEIIAUgASsDICAAKwMYoCADKwMYIgmhIAQrAxggCaGjOQOYAiAFQZABaiAEIAMQXiAFQbABaiAFQZgCaiAFQZABahBjIAVB0AFqIAMgBUGwAWoQYiAFQfABaiAFQdABahAuIgZBDTYCICACIA8gBiADIARBARCKAiEGIAUgASsDICAAKwMYoCADKwMYIgmhIAQrAxggCaGjOQOYAiAFQZABaiAEIAMQXiAFQbABaiAFQZgCaiAFQZABahBjIAVB0AFqIAMgBUGwAWoQYiAFQfABaiAFQdABahAuIgdBDTYCICACIAggByADIARBARCKAiAGciEGCyAKIAArAyhkRQ0AIAVCgICAgICAgPA/NwOwASAFQdABaiAFQUBrIAVB6ABqEGIgBUHwAWogBUGwAWogBUHQAWoQYyAFIAErAyA5A4gCIAVB0AFqIAVB8AFqIAVBQGsQXiAFQgA3A+gBIApEAAAAAAAA4D+iIQhBACEHIAVB0AFqEFciChC8AgRAIAArAyggCKGZELwCIQcLIAogCCAAKwMoIgygIgmhELwCDQAgBw0AIAkgCmMNACAKIAwgCKGZYw0AIAUgCiAKoiAAKwMoIgkgCaIgCCAIoqGgIAogCqCjIgggCqM5AyAgBUGQAWogBUEgaiAFQdABahBjIAVBsAFqIAVBQGsgBUGQAWoQYiAFQSBqIAVBsAFqIAVBkAFqIAArAygiCSAJoiAIIAiioZ8gCqMiCiAFKwPgAZqiIAUrA9gBIAqiEFEiABBiIAUgBUGwAWogABBeIAYgBUEgaiAFQegAaiAFQUBrIAMgBCABIAIQpQEgBSAFQegAaiAFQUBrIAMgBCABIAIQpQFyciEGCyAFQaACaiQAIAYLvwECAn8BfCMAQaABayIHJAACQCAFQQhqIAVBKGogB0GYAWogACABIAdBkAFqEL4CRQ0AIAcrA5ABIglEAAAAAAAAAABmRQ0AIAlEAAAAAAAA8D9lRQ0AIAdBCGogASACEF4gB0EoaiAHQZABaiAHQQhqEGMgB0HIAGogAiAHQShqEGIgB0HoAGogB0HIAGoQLiIFIAMgBBBqIAVBDDYCICAGIAcrA5gBIAUgAyAEQQEQigIhCAsgB0GgAWokACAIC8wCAgN/A3wjAEGQAWsiAiQAIAJB9JYBNgJAIAJBgJcBKAIAIgM2AgggA0EMaygCACACQQhqakGElwEoAgA2AgAgAigCCEEMaygCACACQQhqaiIDIAJBDGoiBBC2BSADQoCAgIBwNwJIIAJB9JYBNgJAIAJB4JYBNgIIIAQQmAQiA0HkkAE2AgAgAkIANwI0IAJCADcCLCACQRA2AjwgASsDMCEFIAErAzghBiABKwMgIQcgAkEIakGxH0EOECIgBxDGBEH6HkEIECIgBhDGBEHRH0EEECIgBRDGBEHjIkEBECIaIAAgAxDkBCACQfyWASgCACIBNgIIIAFBDGsoAgAgAkEIampBiJcBKAIANgIAIANB5JABNgIAIAJBQGshASACLAA3QQBIBEAgAigCNBogAigCLBDxAwsgAxCWBBogARC0BRogAkGQAWokAAsEAEEAC98BAgN/AXwjAEEwayIFJAAgASACQQhqIgQQXSIGIAArAyhlBEAgBUEIaiAEQQEQLyEDIAEgAisDICAAIAYgACgCACgCLBEKAKEgAxA8IQMLIAEgAkEoaiIEEF0iBiAAKwMoZQRAIAVBCGogBEEBEC8hBCABIAIrA0AgACAGIAAoAgAoAiwRCgChIAQQPCADciEDCyABIAJByABqIgQQXSIGIAArAyhlBEAgBUEIaiAEQQEQLyEEIAEgAisDYCAAIAYgACgCACgCLBEKAKEgBBA8IANyIQMLIAVBMGokACADC98CAgJ/BHwjAEGwAWsiAyQAIANBkAFqIAIQcQJ/QQAgAysDqAEQvAINABoCQCADKwOYARC8AkUNACADKwOgARC8AkUNACABIANB6ABqIAErAwggASsDECACKwMgQQ4QMSIEKwMYIAQgAhA9DAELIANBkAFqIAJBCGoQVSEFIANBkAFqEFYgA0HIAGogAysDmAEgAysDoAFEAAAAAAAAAAAQUCIEEFggA0HoAGogAEEIaiAEEGMgA0EIaiAAQRBqIANBkAFqEGMgA0EoaiADQegAaiADQQhqEGIgA0EIaiABIANBKGoQXiADQegAaiADQQhqEC4hBCADKwOoASEGIAMrA6ABIQcgAysDmAEhCCAEQQ42AiAgBEQAAAAAAADwPyAGoyAFIAggBCsDCKKhIAcgBCsDEKKhoiIFOQMYIAEgBSADKwNAoCAAKwMYoSAEIAIQPQshBCADQbABaiQAIAQLvgICBn8BfCMAQUBqIgMkACADQSBqIAJBCGoiCBBSIQQgAyACQShqIgYQUiEHAn8CQCADKwMoIAMrAwihELwCRQ0AIAMrAzAgAysDEKEQvAJFDQBBAAwBC0EAIAEgBCAHEF8iCSAAKwMoZUUNABogACABIAQgByAJEKsBCyEFIAQgBhBSIQQgByACQcgAaiIGEFIhAgJAIAMrAyggAysDCKEQvAIEQCADKwMwIAMrAxChELwCDQELIAEgBCACEF8iCSAAKwMoZUUNACAAIAEgBCACIAkQqwEgBXIhBQsgBCAGEFIhBCACIAgQUiECAkAgAysDKCADKwMIoRC8AgRAIAMrAzAgAysDEKEQvAINAQsgASAEIAIQXyIJIAArAyhlRQ0AIAAgASAEIAIgCRCrASAFciEFCyADQUBrJAAgBQvkAgEDfyMAQaACayIFJAAgBUGAAmogAyACEF4gBUHgAWogBSsDiAIgBSsDkAJEAAAAAAAAAAAQUCIGEFggBUHAAWogASACIAMQZCAFQcgAaiACIAVBwAFqEF4gBUGgAWogBUHIAGogBhBVIAQgAisDGBBQIQcgBUHIAGogAyAFQcABahBeIAVB8ABqIAAgByAFQYABaiAFQcgAaiAGEFUgBCADKwMYEFAgACgCACgCKBEIACAFQQhqIAVB8ABqIAYQYyAFQShqIAVBwAFqIAVBCGoQYiAFQcgAaiAFQShqQQMQLyIGIAIgAxBqIAUrA3ghBEEAIQcCQCAGIAIgAxBnRQ0AIAErAxggBGNFDQAgASAEOQMYQSgQxAggBhBSIgNB4Cw2AgAgAyAGKAIgNgIgIAEoAiAhACABIAM2AiBBASEHIAAiA0UNACADIAMoAgAoAgQRAQALIAchAiAFQaACaiQAIAILPwECfyAAIAEgAiADQQhqQQEQrQEhBCAAIAEgAiADQShqQQEQrQEhBSAAIAEgAiADQcgAakEBEK0BIAQgBXJyC/4BAgJ/AnwjAEGQAWsiBSQAAkAgAysDGCIHIAErAyAiCGZFDQAgByAIIAArAzCgZUUNACAFQfAAaiADIAFBCGogAUEoahBkIAUgAyAFQfAAahBeIAUQVyIHIAAgAysDGCABKwMgoSAAKAIAKAIwEQoAIghlIgZFDQAgBSAIIAiiIAcgB6KhnzkDaCAFIAVB6ABqIAFByABqIgAQYyAFQcgAaiAFQfAAaiAFEF4gBSAFQegAaiAAEGMgBUEoaiAFQfAAaiAFEGIgBSADIAQQLyEDIAIgASAFQShqEJMCIAMQiAIgAiABIAVByABqEJMCIAMQiQILIAVBkAFqJAAgBgsaACAAKwMQIAArAxggACsDCCABIAIgAxCvAQvNCQIGfwJ8IwBBwARrIgYkACAGQaAEaiAFEHECQCAGQaAEaiIHKwMIRAAAAAAAAAAAYSAHKwMQRAAAAAAAAAAAYXENACAGQaAEahBWIAZBgARqIAZBoARqEFIiCEIANwMYIAgQWCAGIAUrA0AgBSsDICIMoTkD6AMgBiAFKwNgIAyhOQPgAyAGIACaIg0gBisDuASiIAyhIAMrAyCgIAGgOQPQAyAFQcgAaiEJIAVBKGohCiAFQQhqIQcCQCADKwMYIgwgAysDOGEEQCAGIAUrAzggBSsDGCIBoTkD+AMgBiAFKwNYIAGhOQPwAyAGIAwgDSAGKwOwBKIgAaEgAiAIKwMQoqGgOQPYAyAGQfgDaiAGQfADaiAGQegDaiAGQeADaiAGQdgDaiAGQdADaiAGQcgDaiAGQcADahC9AkUNAiAGQZgCaiAKIAcQXiAGQbgCaiAGQcgDaiAGQZgCahBjIAZB2AJqIAcgBkG4AmoQYiAGQdgBaiAJIAcQXiAGQfgBaiAGQcADaiAGQdgBahBjIAZB+AJqIAZB2AJqIAZB+AFqEGIgBkGYA2ogBkH4AmoQLiIHQQ42AiAgByAFEGZFDQJEAAAAAAAA8D8gAysDMCADKwMQIgyhoyAGKwPAAyAFKwNQIAUrAxAiAaGiIAYrA8gDIAUrAzAgAaGiIAIgCCsDCKIgACAGKwOoBKIgAaCgIAyhoKCiIgBEAAAAAAAAAABjIABEAAAAAAAA8D9kcgRAQYCqAkGKJEEhECIgABDGBEHZJkEJECIaQYCqAkH0JEELECIhCCAGIAUQcCEFIAhBgCVBAxAiIAVBCGoQYEGVJUEBECIgBUEoahBgQZUlQQEQIiAFQcgAahBgQdweQQIQIiAFQegAahBgGiAIQa4sQQEQIhpBgKoCQd8kQQgQIiIFQcAeQQsQIiADQcgAahBgQYQkQQUQIiADKAJsIAMoAmhrQYgBbRDFBEGXJUELECIaIAVBryBBChAiIANBCGoQYEGEJUEKECIgA0EoahBgGiAFQa4sQQEQIhoLIAQgACAHEIcCDAELIAMrAxAiDCADKwMwYg0BIAYgBSsDMCAFKwMQIgGhOQP4AyAGIAUrA1AgAaE5A/ADIAYgDCANIAYrA6gEoiABoSACIAgrAwiioaA5A9gDIAZB+ANqIAZB8ANqIAZB6ANqIAZB4ANqIAZB2ANqIAZB0ANqIAZByANqIAZBwANqEL0CRQ0BIAZBmAJqIAogBxBeIAZBuAJqIAZByANqIAZBmAJqEGMgBkHYAmogByAGQbgCahBiIAZB2AFqIAkgBxBeIAZB+AFqIAZBwANqIAZB2AFqEGMgBkH4AmogBkHYAmogBkH4AWoQYiAGQZgDaiAGQfgCahAuIgdBDjYCICAHIAUQZkUNAUQAAAAAAADwPyADKwM4IAMrAxgiDKGjIAYrA8ADIAUrA1ggBSsDGCIBoaIgBisDyAMgBSsDOCABoaIgAiAIKwMQoiAAIAYrA7AEoiABoKAgDKGgoKIiAEQAAAAAAAAAAGMgAEQAAAAAAADwP2RyBEBBgKoCQYokQSEQIiAAEMYEQdkmQQkQIhpBgKoCQagnQdEAECIaCyAEIAAgBxCHAgtBASELCyAGQcAEaiQAIAsLgQIBB38jAEFAaiIGJABBASEHQQEhCCAAIAEgAiAGQSBqIANBCGoiChBSIgQgBiADQShqIgkQUiIFELEBRQRAIAAgASACIAQgBRCyASAAIAEgAiAEIAUgACgCACgCJBEHAHIhCAsgACABIAIgBCAJEFIiBCAFIANByABqIgkQUiIDELEBRQRAIAAgASACIAQgAxCyASAAIAEgAiAEIAMgACgCACgCJBEHAHIhBwtBASEFIAAgASACIAQgCRBSIgQgAyAKEFIiAxCxAUUEQCAAIAEgAiAEIAMQsgEgACABIAIgBCADIAAoAgAoAiQRBwByIQULIAZBQGskACAFIAcgCHJyC78EAgN/A3wjAEHgAmsiBSQAAkAgAysDGCIIIAErAyChIglEAAAAAAAAAABkRQ0AIAQrAxggCKEQvAJFDQAgBSAAIAkgACgCACgCMBEKADkDyAEgAyAEIAVBuAFqIAFBCGoiACABQShqIgcgBUHAAWoQvgJFDQAgBUGQAmogBCADEF4gBUGwAmogBUG4AWogBUGQAmoQYyAFQZgBaiADIAVBsAJqEGIgBUHoAGogBCADEF4gBUIANwOAASAFQegAahBYIAVByABqIAVB6ABqEFkgBUGwAmogBUHIAWogBUHIAGoQYyAFQShqIAVBmAFqIAVBsAJqEGIgBUGwAmogBCADEF4gBUEIaiAFQShqIAVBsAJqEGIgBUEoaiAFQQhqIAVBkAFqIAAgByAFQYgBahC+AkUNACABKwMgIQogBSsDwAEhCCAFKwOIASEJIAUgBSsDkAE5A9gCIAVB0AFqIAQgAxBeIAVB8AFqIAVB2AJqIAVB0AFqEGMgBUGQAmogBUGYAWogBUHwAWoQYiAFQbACaiAFQZACahAuIgZBBDYCICACIAkgBiADIAQgBisDGCAKZhCKAiEGIAErAyAhCiAFIAUrA5ABmjkD2AIgBUHQAWogBCADEF4gBUHwAWogBUHYAmogBUHQAWoQYyAFQZACaiAFQZgBaiAFQfABahBiIAVBsAJqIAVBkAJqEC4iAUEENgIgIAIgCCAIIAmhoCABIAMgBCABKwMYIApmEIoCIAZyIQYLIAVB4AJqJAAgBguRBAIDfwR8IwBB0AJrIgUkAAJ/QQAgAyAEIAVBuAFqIAFBCGoiBiABQShqIgcgBUGwAWoQvgJFDQAaIAVBgAJqIAQgAxBeIAVBoAJqIAVBuAFqIAVBgAJqEGMgBUGQAWogAyAFQaACahBiIAVB8ABqIAQgAxBeIAVCADcDiAEgBUHwAGoQWCAFQdAAaiAFQfAAahBZIAVBoAJqIABBKGogBUHQAGoQYyAFQTBqIAVBkAFqIAVBoAJqEGIgBUGgAmogBCADEF4gBUEQaiAFQTBqIAVBoAJqEGJBACAFQTBqIAVBEGogBUEIaiAGIAcgBRC+AkUNABogACsDGCEIIAErAyAhCSAFKwOwASEKIAUrAwAhCyAFIAUrAwg5A8gCIAVBwAFqIAQgAxBeIAVB4AFqIAVByAJqIAVBwAFqEGMgBUGAAmogBUGQAWogBUHgAWoQYiAFQaACaiAFQYACahAuIgZBBTYCICACIAsgBiADIAQgBisDGCAJIAigZhCKAiEGIAArAxghCCABKwMgIQkgBSAFKwMImjkDyAIgBUHAAWogBCADEF4gBUHgAWogBUHIAmogBUHAAWoQYyAFQYACaiAFQZABaiAFQeABahBiIAVBoAJqIAVBgAJqEC4iAUEFNgIgIAIgCiAKIAuhoCABIAMgBCABKwMYIAkgCKBmEIoCIAZyCyEGIAVB0AJqJAAgBgs9ACAAIAEgAiADIAAoAgAoAhgRBgAgACABIAIgAyAAKAIAKAIcEQYAIAAgASACIAMgACgCACgCIBEGAHJyC1gBAn8CfwJAIAEgAhA6RQRADAELQQEgACABIAIgACgCACgCDBEEAA0BGiAAIAEgAhCoASEEIAEgAhA6RQ0AIAAgASACIAAoAgAoAhARBAAhAwsgAyAEcgsLkAEBBX8gAigCCCIFIAJBBGoiB0cEQANAQQAhBgJ/AkAgASAFQQhqIgMQOkUEQEEAIQIMAQtBASAAIAEgAyAAKAIAKAIMEQQADQEaIAAgASADEKgBIQIgASADEDpFDQAgACABIAMgACgCACgCEBEEACEGCyACIAZyCyAEciEEIAUoAgQiBSAHRw0ACwsgBEEBcQtTAgJ8AX8CQCACKwOYASABKwMIIgMgACsDKCIEoWMNACACKwO4ASADIASgZA0AIAIrA6ABIAErAxAiAyAEoWMNACACKwPAASAEIAOgZEUhBQsgBQtzACAAQcAAEMQIIgE2AgAgAEK4gICAgIiAgIB/NwIEIAFB1SIpAAA3ADAgAUHNIikAADcAKCABQcUiKQAANwAgIAFBvSIpAAA3ABggAUG1IikAADcAECABQa0iKQAANwAIIAFBpSIpAAA3AAAgAUEAOgA4CwsARAAAAAAAAPC/C0IAIAAgAjkDMCAAIAE5AyAgAEHcODYCACAAQgA3AxAgACABRAAAAAAAAOA/oiIBOQMoIAAgATkDCCAAQgA3AxggAAudAQIDfAJ/IwBBQGoiByQAIAdBIGogASsDKCIEIASiIAIrAxAiBCAEoqGfIgUgBEQAAAAAAAAAABBQIQEgByAFmiACKwMQRAAAAAAAAAAAEFAhCCABIAIgAxBqIAggAiADEGogAUEIaiAIQQhqIAErAxgiBCAIKwMYIgVkIgIbKwMAIQYgACAEIAUgAhs5AwggACAGOQMAIAdBQGskAAuiCwIIfwN8IwBBQGoiCyQAIAAgASACIANBCGpBARCtASEJIAAgASACIANBKGpBARCtASEKIAAgASACIANByABqQQEQrQEgCSAKcnIhCSADIQYgC0EgahBPIQogCxBPIQMgASsDICEMIwBB4AJrIgQkAAJAIAYrA8gBIAxmDQAgBisDqAEgDGUNACAEQQA2AtwCIARCADcC1AIgBEEANgLQAiAEQgA3AsgCIARB1AJqIARByAJqIAYrAyAgDGUbIgUgBSAGQQhqEHI2AgQgBkEoaiEFAkAgDCAGKwNAZgRAIAQoAtgCIgcgBCgC3AJPBEAgBCAEQdQCaiAFEHI2AtgCDAILIAQgByAFEFJBIGo2AtgCDAELIAQCfyAEKALMAiIHIAQoAtACTwRAIARByAJqIAUQcgwBCyAHIAUQUkEgags2AswCCyAGQcgAaiEFAkAgDCAGKwNgZgRAIAQoAtgCIgcgBCgC3AJPBEAgBCAEQdQCaiAFEHIiCDYC2AIMAgsgBCAHIAUQUkEgaiIINgLYAgwBCyAEAn8gBCgCzAIiByAEKALQAk8EQCAEQcgCaiAFEHIMAQsgByAFEFJBIGoLNgLMAiAEKALYAiEICwJAIAggBCgC1AIiBWtBBXVBAWtBAkkNAEGAqgJBnSZBOxAiGkGAqgJB3x5BChAiIQcgBEHwAGogBhBwIQUgB0GAJUEDECIgBUEIahBgQZUlQQEQIiAFQShqEGBBlSVBARAiIAVByABqEGBB3B5BAhAiIAVB6ABqEGAaIAdBrixBARAiGkGAqgJBrh5BBhAiIAwQxgRBrixBARAiGkGAqgIgBCgCzAIgBCgCyAJrQQV1EMUEQfMmQQ8QIhogBCgCyAIiBSAEKALMAiIHRwRAA0AgBEHQAGogBRBSIQZBgKoCQZMlQQMQIiAGEGBBrixBARAiGiAFQSBqIgUgB0cNAAsLQYCqAiAEKALYAiAEKALUAmtBBXUQxQRB4yZBDxAiGiAEKALUAiIFIAQoAtgCIgdGBEAgBSEIDAELA0AgBEHQAGogBRBSIQZBgKoCQZMlQQMQIiAGEGBBrixBARAiGiAFQSBqIgUgB0cNAAsgBCgC1AIhBSAEKALYAiEIC0EAIQcCQAJAAkACQCAIIAVrQQV1QQFrDgIBAAMLIAQgDCAEKALIAiIGKwMYIg2hIgwgBSsDGCANoaM5A0ggBCAMIAUrAzggDaGjOQNAIAQgBSAGEF4gBEEgaiAEQcgAaiAEEGMgBEHQAGogBiAEQSBqEGIgCiAEQdAAahBoIAQgBCgC1AJBIGogBCgCyAIiBRBeIARBIGogBEFAayAEEGMgBEHQAGogBSAEQSBqEGIgAyAEQdAAahBoDAELIAQgDCAEKALIAiIGKwMYIg2hIAUrAxgiDiANoaM5A0ggBCAMIAYrAzgiDaEgDiANoaM5A0AgBCAFIAYQXiAEQSBqIARByABqIAQQYyAEQdAAaiAGIARBIGoQYiAKIARB0ABqEGggBCAEKALUAiAEKALIAkEgaiIFEF4gBEEgaiAEQUBrIAQQYyAEQdAAaiAFIARBIGoQYiADIARB0ABqEGgLQQEhBwsgBCgCyAIiBgRAIAYhCCAGIAQoAswCIgVHBEADQCAFQSBrIgUgBSgCACgCABEAABogBSAGRw0ACyAEKALIAiEICyAEIAY2AswCIAQoAtACGiAIEPEDCyAEKALUAiIGRQ0AIAYhCCAGIAQoAtgCIgVHBEADQCAFQSBrIgUgBSgCACgCABEAABogBSAGRw0ACyAEKALUAiEICyAEIAY2AtgCIAQoAtwCGiAIEPEDCyAEQeACaiQAIAcEQCAKIAErAyAiDDkDGCADIAw5AxggACABIAIgCkECEK0BIAAgASACIANBAhCtAXIgCXIhCQsgC0FAayQAIAkLuQICA38CfCMAQZABayICJAAgAkH0lgE2AkAgAkGAlwEoAgAiAzYCCCADQQxrKAIAIAJBCGpqQYSXASgCADYCACACKAIIQQxrKAIAIAJBCGpqIgMgAkEMaiIEELYFIANCgICAgHA3AkggAkH0lgE2AkAgAkHglgE2AgggBBCYBCIDQeSQATYCACACQgA3AjQgAkIANwIsIAJBEDYCPCABKwMwIQUgASsDICEGIAJBCGpBox9BDRAiIAYQxgRB0R9BBBAiIAUQxgRB4yJBARAiGiAAIAMQ5AQgAkH8lgEoAgAiATYCCCABQQxrKAIAIAJBCGpqQYiXASgCADYCACADQeSQATYCACACQUBrIQEgAiwAN0EASARAIAIoAjQaIAIoAiwQ8QMLIAMQlgQaIAEQtAUaIAJBkAFqJAALHwBByAAQxAggASABoCAAKwMgoCABIAArAzAgAaAQfAsdAEQAAAAAAAAAAEQAAAAAAADwvyAAKwMoIAFmGwsHACAAKwMoCzkAIAAgAUHYAGoQUiIAIAErA3ggAisDAKIgACsDCKA5AwggACABKwOAASACKwMIoiAAKwMQoDkDEAt6AQF/IwBB8ABrIgMkACADIAErA3ggAisDAKI5AyggA0EwaiADQShqIAFBsAFqEGMgA0HQAGogAUHYAGogA0EwahBiIAMgASsDgAEgAisDCKI5AwAgA0EIaiADIAFB0AFqEGMgACADQdAAaiADQQhqEGIgA0HwAGokAAtYAQF/IwBB4ABrIgMkACADQUBrIAEgAiABKAIAKAIAEQUAIAMgASACIAEoAgAoAggRBQAgA0EgaiABQYgBaiADEGMgACADQUBrIANBIGoQYiADQeAAaiQACygAIAAgASsDgAEgAisDAKIgASsDeCACKwMIokQAAAAAAAAAABBQEFYLagEBfyMAQdAAayIDJAAgAyACKwMAIAErA4ABojkDKCADQTBqIANBKGogAUGwAWoQYyADIAIrAwggASsDeKI5AwAgA0EIaiADIAFB0AFqEGMgACADQTBqIANBCGoQYiAAEFYgA0HQAGokAAuqBAIMfAF/IAIgACACKAIAKAIMEQoAIgYgAiABIAIoAgAoAgwRCgAiA6JEAAAAAAAAAABmBEBBgKoCQeUoQTMQIhoLIAEgAKEiCyEKIAYhByAAIQUDQAJAIAeZIAOZY0UEQCAGIQQgAyEGIAEhAyAFIQEMAQsgAyEEIAchBiADIQcgACEDIAEhAAsCfAJAAkAgACADIgWhRAAAAAAAAOA/oiIDmSIMIAWZRE1n4vEFnsU8okS7vdfZ33zbPaAiCWUNACAGRAAAAAAAAAAAYQ0AIAqZIAljDQEgBJkgBpllDQEgBiAEoyEIAnwgACABYQRAIAMgA6AhBEQAAAAAAADwPyAIoQwBCyABIAMgA6CiIAQgB6MiDSAGIAejIgShoiAERAAAAAAAAPC/oCIOIAUgAaGioSEEIAhEAAAAAAAA8L+gIA1EAAAAAAAA8L+gIA6iogshASAIIASiIgQgBJogBEQAAAAAAAAAAGQiDxsiCCAIoCADRAAAAAAAAAhAoiABmiABIA8bIgGiIAkgAaKZoWNFDQEgAyEEIAMgCCAKRAAAAAAAAOA/oiABopljRQ0CGiAIIAGjIgSZIQwgCwwCCyAFDwsgAyEEIAMLIQogBCELIAICfCAFIASgIAkgDGMNABogBSAJoCADRAAAAAAAAAAAZA0AGiAFIAmhCyIBIAIoAgAoAgwRCgAiA70gB72FQgBTDQAgASAFoSILIQogBiEHIAUhAAwACwALXQECfyMAQeAAayICJAAgAkHIAGoQyAEiAyABEMkBIAJBKGogACADIAAoAgAoAgQRBQAgAkEIaiAAQZABaiACQShqEF4gAkEIaiAAQfABahBVIQEgAkHgAGokACABC0ABAn8jAEFAaiICJAAgAkEIahDIASIDIAEQyQEgAkEgaiAAIAMgACgCACgCBBEFACACKwMwIQEgAkFAayQAIAELSwECfyMAQSBrIgEkACAAQgA3AxAgAUQAAAAAAADwP0QAAAAAAAAAABBRIgIQViAAIAIrAwg5AwAgACACKwMQOQMIIAFBIGokACAAC+gBAQJ/IwBBIGsiAiQAIAAgATkDECABRAAAAAAAABBAZARAA0AgAUQAAAAAAAAQwKAiAUQAAAAAAAAQQGQNAAsLIAFEAAAAAAAAAABjBEADQCABRAAAAAAAABBAoCIBRAAAAAAAAAAAYw0ACwsgAkQAAAAAAADwPyABoSABRAAAAAAAAAjAoCABRAAAAAAAAABAYxtEAAAAAAAAAEAgAaEgASABRAAAAAAAAPA/ZBsgAUQAAAAAAAAQwKAgAUQAAAAAAAAIQGMbEFEiAxBWIAAgAysDCDkDACAAIAMrAxA5AwggAkEgaiQACywAIABBlyNBARAiIAErAwAQxgRBmSJBAhAiIAErAwgQxgRB4yJBARAiGiAACyAAIAAgASsDADkDACAAIAErAwg5AwggACABKwMQOQMQC7kCAgN/AnwjAEGQAWsiAiQAIAJB9JYBNgJAIAJBgJcBKAIAIgM2AgggA0EMaygCACACQQhqakGElwEoAgA2AgAgAigCCEEMaygCACACQQhqaiIDIAJBDGoiBBC2BSADQoCAgIBwNwJIIAJB9JYBNgJAIAJB4JYBNgIIIAQQmAQiA0HkkAE2AgAgAkIANwI0IAJCADcCLCACQRA2AjwgASsDCCEFIAErAwAhBiACQQhqQZcjQQEQIiAGEMYEQZkiQQIQIiAFEMYEQeMiQQEQIhogACADEOQEIAJB/JYBKAIAIgE2AgggAUEMaygCACACQQhqakGIlwEoAgA2AgAgA0HkkAE2AgAgAkFAayEBIAIsADdBAEgEQCACKAI0GiACKAIsEPEDCyADEJYEGiABELQFGiACQZABaiQAC2oBAX8gAEEANgIwIABCADcDKCAAQaQ6NgIAQQwQxAgiAUEANgIIIAFCADcCACAAQQA2AhggACABNgI0IABCgICAgBA3AxBBGBDECCIBQgA3AgggAUH8OzYCACABQgA3AhAgACABNgIgIAAL9AEBBH8gAEGkOjYCAAJAAkAgACgCNCIEKAIEIgEgBCgCACICRgRAIAQhAwwBCwNAIAFBKGsiASABKAIAKAIAEQAAGiABIAJHDQALIAAoAjQhAyAEIAI2AgQgA0UNASADKAIAIQILIAIEQCACIQQgAiADKAIEIgFHBEADQCABQShrIgEgASgCACgCABEAABogASACRw0ACyADKAIAIQQLIAMgAjYCBCADKAIIGiAEEPEDCyADEPEDCyAAKAIgIgEEQCABIAEoAgAoAgQRAQALIABBsDs2AgAgACgCKCIBBEAgACABNgIsIAAoAjAaIAEQ8QMLIAALCgAgABDOARDxAwu7BwEIfyAAIAE2AhwgACgCICIFIAUoAgwiAzYCEAJAAkACQAJAIAUoAhQiBCADSwRAIANBADYCACADQQRqIQIMAQtB/////wNBASAEIANrIgdBAXUiAiACQQFNGyAHQfz///8HTxsiAkGAgICABE8NASACQQJ0IgIQxAgiBkEANgIAIAUgAiAGaiIENgIUIAUgBkEEaiICNgIQIAUgBjYCDCADRQ0AIAMQ8QMgBSgCFCEECyAFQQxqIQggBSACNgIQAkAgAiAESQRAIAJBATYCACACQQRqIQMMAQsgAiAIKAIAIgdrQQJ1IgZBAWoiA0GAgICABE8NAkH/////AyAEIAdrIglBAXUiBCADIAMgBEkbIAlB/P///wdPGyIDBH8gA0GAgICABE8NAiADQQJ0EMQIBUEACyIEIAZBAnRqIgZBATYCACAEIANBAnRqIQQgBkEEaiEDIAIgB0cEQANAIAZBBGsiBiACQQRrIgIoAgA2AgAgAiAHRw0ACwsgBSAENgIUIAUgAzYCECAFIAY2AgwgB0UNACAHEPEDIAUoAhQhBAsgBSADNgIQAkAgAyAESQRAIANBAjYCACADQQRqIQIMAQsgAyAIKAIAIgdrQQJ1IgZBAWoiAkGAgICABE8NAkH/////AyAEIAdrIglBAXUiBCACIAIgBEkbIAlB/P///wdPGyICBH8gAkGAgICABE8NAiACQQJ0EMQIBUEACyIEIAZBAnRqIgZBAjYCACAEIAJBAnRqIQQgBkEEaiECIAMgB0cEQANAIAZBBGsiBiADQQRrIgMoAgA2AgAgAyAHRw0ACwsgBSAENgIUIAUgAjYCECAFIAY2AgwgB0UNACAHEPEDIAUoAhQhBAsgBSACNgIQIAIgBEkEQCACQQM2AgAgBSACQQRqNgIQDAMLIAIgCCgCACIGa0ECdSIJQQFqIgNBgICAgARPDQFB/////wMgBCAGayIIQQF1IgcgAyADIAdJGyAIQfz///8HTxsiBwR/IAdBgICAgARPDQEgB0ECdBDECAVBAAsiBCAJQQJ0aiIDQQM2AgAgBCAHQQJ0aiEEIANBBGohByACIAZHBEADQCADQQRrIgMgAkEEayICKAIANgIAIAIgBkcNAAsLIAUgBDYCFCAFIAc2AhAgBSADNgIMIAYEQCAGEPEDCyAFIAc2AhAMAgsQdAALEHMACyAAKAIgIgIgACgCFDYCBCACKAIIIgAEQCAAIAAoAgAoAgQRAQALIAIgAiABQQRqQQBBABDRATYCCAvoDgIMfwR8IwBB4AFrIg8kAAJAIAEoAghFBEBBgKoCQbYrQTsQIhoMAQsgACEFIwBB4AFrIgQkAEEwEMQIIgdCADcDACAHQgA3AyggB0IANwMgIAdCADcDGCAHQgA3AxAgB0IANwMIQTAQxAgiBkIANwMAIAZCADcDKCAGQgA3AyAgBkIANwMYIAZCADcDECAGQgA3AwgCQCABKAIIRQRAQYCqAkHyK0E9ECIaDAELAkAgASABKAIEIghGBEAgBSgCDCELIAUoAhAhDAwBCyAEQZABaiEKQQEhDQNAIARBCGogCEEIahBwGkEAIQkgBSgCECIMIAUoAgwiC0cEQANAIAcgCyAJQQJ0aigCACIMQQN0Ig5qIQsgCiAMECwhEAJAIA1BAXEEQCALIBA5AwAgBiAOaiAQOQMAIAkgBSgCECAFKAIMa0ECdUEBa0chDQwBCyAQIAsrAwBkBEAgCyAQOQMAC0EAIQ0gBiAOaiILKwMAIBBkRQ0AIAsgEDkDAAsgCUEBaiIJIAUoAhAiDCAFKAIMIgtrQQJ1SQ0ACwsgCCgCBCIIIAFHDQALCwJ/AkAgCyAMRg0AQQEgDCALa0ECdSIJIAlBAU0bIgVBAXEhCAJAIAlBAkkEQEEAIQlEAAAAAAAAAAAhEAwBCyAFQX5xIQpBACEJRAAAAAAAAAAAIRBBACEFA0AgByALIAlBAXIiDUECdGooAgBBA3QiDGorAwAgBiAMaisDAKEiEiAHIAsgCUECdGooAgBBA3QiDGorAwAgBiAMaisDAKEiEyAQIBAgE2MiDBsiECAQIBJjIg4bIRAgDbggCbggESAMGyAOGyERIAlBAmohCSAFQQJqIgUgCkcNAAsLIAgEQCAJuCARIAcgCyAJQQJ0aigCAEEDdCIJaisDACAGIAlqKwMAoSAQZBshEQsgEUQAAAAAAADwQWMgEUQAAAAAAAAAAGZxRQ0AIBGrDAELQQALIQVBGBDECCEJIAcgCyAFQQJ0aigCACIFQQN0IgtqKwMAIRAgCSAGIAtqKwMAIhE5AxAgCSAFNgIAIAkgECARoTkDCAsgBhDxAyAHEPEDIARB4AFqJAAgCSINKwMQIAkrAwgiEkQAAAAAAADgP6KgIRMCQCABKAIIIAAoAgRLBEAgEhC8AkUNAQtBMBDECCEKIA0oAgAhBSMAQeABayIAJAAgCkEANgIgIApBADYCHCAKIAM2AhggCiATOQMQIAogBTYCCCAKQbQ8NgIAQQwQxAgiBEEANgIIIAQgBDYCBCAEIAQ2AgAgCkEAOgAoIAogAjYCBCAKIAQ2AiQCQCABRQ0AIApBAToAKCABKAIEIgMgAUYNAANAIABBCGogA0EIahBwIQUgCigCJCEEQeABEMQIIgJCADcCACACQQhqIAUQcBogAiAENgIEIAIgBCgCACIFNgIAIAUgAjYCBCAEIAI2AgAgBCAEKAIIQQFqNgIIIAMoAgQiAyABRw0ACwsgAEHgAWokACAKIQggDRDxAwwBC0EMEMQIIgZBADYCCCAGIAY2AgQgBiAGNgIAQQwQxAgiB0EANgIIIAcgBzYCBCAHIAc2AgAgASABKAIEIghHBEAgD0GQAWohDgNAIA9BCGogCEEIahBwIQUgDiANKAIAECwhEkHgARDECCIEQgA3AgAgBEEIaiAFEHAaIAQgByAGIBIgE2QbIgU2AgQgBCAFKAIAIgo2AgAgCiAENgIEIAUgBDYCACAFIAUoAghBAWo2AgggCCgCBCIIIAFHDQALC0EwEMQIIQggDSgCACEEIAhCADcCHCAIIAM2AhggCCATOQMQIAggBDYCCCAIQbQ8NgIAQQwQxAgiBEEANgIIIAQgBDYCBCAEIAQ2AgAgCEEAOgAoIAggAjYCBCAIIAQ2AiQgBygCCARAIAggACAHIAJBAWogCBDRATYCHAsCQCAGKAIIRQ0AIAggACAGIAJBAWogCBDRATYCICAGKAIIRQ0AIAYoAgQiBCgCACIFIAYoAgAoAgQiATYCBCABIAU2AgAgBkEANgIIIAQgBkYNAANAIAQoAgQhBSAEQQhqIAQoAggoAgARAAAaIAQQ8QMgBSIEIAZHDQALCwJAIAcoAghFDQAgBygCBCIEKAIAIgUgBygCACgCBCIBNgIEIAEgBTYCACAHQQA2AgggBCAHRg0AA0AgBCgCBCEFIARBCGogBCgCCCgCABEAABogBBDxAyAFIgQgB0cNAAsLIA0Q8QMCQCAGKAIIRQ0AIAYoAgQiBCgCACIFIAYoAgAoAgQiATYCBCABIAU2AgAgBkEANgIIIAQgBkYNAANAIAQoAgQhBSAEQQhqIAQoAggoAgARAAAaIAQQ8QMgBSIEIAZHDQALCyAGEPEDAkAgBygCCEUNACAHKAIEIgQoAgAiBSAHKAIAKAIEIgY2AgQgBiAFNgIAIAdBADYCCCAEIAdGDQADQCAEKAIEIQUgBEEIaiAEKAIIKAIAEQAAGiAEEPEDIAUiBCAHRw0ACwsgBxDxAwsgD0HgAWokACAICzQBAX8gACgCNCIAKAIEIgIgACgCCEkEQCAAIAIgARA2QShqNgIEDwsgACAAIAEQ0wE2AgQLlQIBBH8CQCAAKAIEIAAoAgAiA2tBKG0iBEEBaiICQefMmTNJBEBB5syZMyAAKAIIIANrQShtIgNBAXQiBSACIAIgBUkbIANBs+bMGU8bIgIEfyACQefMmTNPDQIgAkEobBDECAVBAAshAyADIAJBKGxqIQUgAyAEQShsaiABEDYiAUEoaiEEIAAoAgQiAiAAKAIAIgNHBEADQCABQShrIAJBKGsiAhA2IQEgAiADRw0ACyAAKAIAIQMgACgCBCECCyAAIAQ2AgQgACABNgIAIAAoAggaIAAgBTYCCCACIANHBEADQCACQShrIgIgAigCACgCABEAABogAiADRw0ACwsgAwRAIAMQ8QMLIAQPCxBzAAsQdAALqAICAn8CfCMAQeABayIFJAACQCADLQAoQQFHBEADQCADKwMQIQYCQAJAIAMoAggiBEEBcUUEQCACIARBAXIQLCAGYwRAIAMoAiAhAwwDCyADKAIcIgRFDQEgACABIAIgBBDUAQwBCyACIARBAWsQLCEHIAMoAhwhBCAGIAdjBEAgBCEDDAILIARFDQAgACABIAIgBBDUAQsgAygCICIDRQ0DCyADLQAoRQ0ACwsgAygCJCIAKAIEIgQgAEYNAANAIAVBCGogBEEIahBwIQJB4AEQxAgiA0IANwIAIANBCGogAhBwGiADIAE2AgQgAyABKAIAIgI2AgAgAiADNgIEIAEgAzYCACABIAEoAghBAWo2AgggBCgCBCIEIABHDQALCyAFQeABaiQAC0MBAn8gACABNgIYIAAoAigiASAAKAIsIgJHBEADQCABKAIAIgMgACgCGCADKAIAKAIMEQIAIAFBBGoiASACRw0ACwsLQwEDfyAAIAE5AwggACgCKCICIAAoAiwiA0cEQANAIAIoAgAiBCAAKwMIIAQoAgAoAhAREAAgAkEEaiICIANHDQALCwsHACAAKwMIC6IDAgl/AnwjAEHQAGsiCCQAIABBADYCECAAKAI0IgUoAgQiAiAFKAIAIgFHBEBBASACIAFrQShtIgIgAkEBTRshCQNAIAAoAiAhAiAIIAZBKGwiBCAFKAIAaiIBKwMIIgsgACgCGCIDKwMoIgqhIAogC6AgASsDECILIAqhIAogC6AgASsDGCIKIAogAysDMKAQKCEDQQwQxAgiAUEANgIIIAEgATYCBCABIAE2AgAgAiABIAMgAigCCBDUASABKAIEIgIgAUcEQANAAkAgACgCGCAFKAIAIARqIAJBCGoiAxC2AUUNACAFKAIAIARqIAMQOkUNACAAKAIYIAUoAgAgBGogAxC0ARogB0EBaiEHCyACKAIEIgIgAUcNAAsLAkAgASgCCEUNACABKAIEIgIoAgAiBCABKAIAKAIEIgM2AgQgAyAENgIAIAFBADYCCCABIAJGDQADQCACKAIEIQQgAkEIaiACKAIIKAIAEQAAGiACEPEDIAQiAiABRw0ACwsgARDxAyAGQQFqIgYgCUcNAAsLIAAgBzYCECAIQdAAaiQACwIACwIAC3sBA38gASgCNCEBIABBADYCCCAAQgA3AgACQCABKAIEIgMgASgCACIBRwRAIAMgAWsiBEEobUHnzJkzTw0BIAAgBBDECCICNgIAIAAgAiAEajYCCANAIAIgARA2QShqIQIgAUEoaiIBIANHDQALIAAgAjYCBAsPCxBzAAs/AQJ/IAAoAjQiASgCBCIAIAEoAgAiAkcEQANAIABBKGsiACAAKAIAKAIAEQAAGiAAIAJHDQALCyABIAI2AgQLKgEBfyAAQbA7NgIAIAAoAigiAQRAIAAgATYCLCAAKAIwGiABEPEDCyAACwMAAAtAAQJ/IAAgATYCHCAAKAIoIgIgACgCLCIDRwRAA0AgAigCACIAIAEgACgCACgCCBECACACQQRqIgIgA0cNAAsLCxAAIABBADYCCCAAQgA3AgALQQEBfyAAQfw7NgIAIAAoAggiAQRAIAEgASgCACgCBBEBAAsgACgCDCIBBEAgACABNgIQIAAoAhQaIAEQ8QMLIAALRAEBfyAAQfw7NgIAIAAoAggiAQRAIAEgASgCACgCBBEBAAsgACgCDCIBBEAgACABNgIQIAAoAhQaIAEQ8QMLIAAQ8QMLrQEBBH8gAEG0PDYCACAAKAIcIgEEQCABIAEoAgAoAgQRAQALIAAoAiAiAQRAIAEgASgCACgCBBEBAAsgACgCJCICBEACQCACKAIIRQ0AIAIoAgQiASgCACIDIAIoAgAoAgQiBDYCBCAEIAM2AgAgAkEANgIIIAEgAkYNAANAIAEoAgQhAyABQQhqIAEoAggoAgARAAAaIAEQ8QMgAyIBIAJHDQALCyACEPEDCyAACwoAIAAQ4wEQ8QMLyQICBX8CfCMAQdAAayIFJAAgAEEANgIQIAAoAiAhAyAFIAErAwgiCCAAKAIYIgIrAygiB6EgByAIoCABKwMQIgggB6EgByAIoCABKwMYIgcgByACKwMwoBAoIQRBDBDECCICQQA2AgggAiACNgIEIAIgAjYCACADIAIgBCADKAIIENQBIAIoAgQiAyACRwRAA0ACQCAAKAIYIAEgA0EIaiIEELYBRQ0AIAEgBBA6RQ0AIAAoAhggASAEELQBGiAGQQFqIQYLIAMoAgQiAyACRw0ACwsCQCACKAIIRQ0AIAIoAgQiAygCACIBIAIoAgAoAgQiBDYCBCAEIAE2AgAgAkEANgIIIAIgA0YNAANAIAMoAgQhASADQQhqIAMoAggoAgARAAAaIAMQ8QMgAiABIgNHDQALCyACEPEDIAAgBjYCECAFQdAAaiQAC0kBAX8gAEHsPDYCACAAKAIgIgEEQCABIAEoAgAoAgQRAQALIABBsDs2AgAgACgCKCIBBEAgACABNgIsIAAoAjAaIAEQ8QMLIAALTAEBfyAAQew8NgIAIAAoAiAiAQRAIAEgASgCACgCBBEBAAsgAEGwOzYCACAAKAIoIgEEQCAAIAE2AiwgACgCMBogARDxAwsgABDxAwsOAEGAqgJB+idBLRAiGguvAQEDfyAAQdw9NgIAIAAoAigiASgCACICBEAgAiACKAIAKAIEEQEAIAAoAighAQsgACABNgIsIAAoAkAiAgRAIAIhAyACIAAoAkQiAUcEQANAIAFBKGsiASABKAIAKAIAEQAAGiABIAJHDQALIAAoAkAhAwsgACACNgJEIAAoAkgaIAMQ8QMgACgCKCEBCyAAQbA7NgIAIAEEQCAAIAE2AiwgACgCMBogARDxAwsgAAuyAQEDfyAAQdw9NgIAIAAoAigiASgCACICBEAgAiACKAIAKAIEEQEAIAAoAighAQsgACABNgIsIAAoAkAiAgRAIAIhAyACIAAoAkQiAUcEQANAIAFBKGsiASABKAIAKAIAEQAAGiABIAJHDQALIAAoAkAhAwsgACACNgJEIAAoAkgaIAMQ8QMgACgCKCEBCyAAQbA7NgIAIAEEQCAAIAE2AiwgACgCMBogARDxAwsgABDxAwseACAAIAE2AjQgACgCKCgCACIAIAAoAgAoAiwRAQAL2wMCCX8BfCMAQRBrIgQkACAAKAJEIgEgACgCQCICRwRAA0AgAUEoayIBIAEoAgAoAgARAAAaIAEgAkcNAAsLIAAgAjYCRCAAKAI0IgIoAggiASACQQRqIgJHBEADQCABKAIIIQVBACEGIwBBIGsiAyQAAn8gBSAFKAIAKAIEERIAIAArAwijRAAAAAAAAPA/oCIKRAAAAAAAAPBBYyAKRAAAAAAAAAAAZnEEQCAKqwwBC0EACyIIuCEKA0AgAyAFIAa4IAqjIAUoAgAoAggRDABBKBDECCADKwMIIAMrAxAgAysDGBA1IgcgACsDODkDGCAAKAIoKAIAIgkgByAJKAIAKAIwEQIAIAcgBygCACgCBBEBACAGQQFqIgYgCE0NAAsgA0EgaiQAIAEoAgQiASACRw0ACwsgACgCKCgCACIBIAEoAgAoAhgRAQAgBEEEaiAAKAIoKAIAIgEgASgCACgCKBECACAAKAJAIgIEQCACIQMgAiAAKAJEIgFHBEADQCABQShrIgEgASgCACgCABEAABogASACRw0ACyAAKAJAIQMLIAAgAjYCRCAAKAJIGiADEPEDCyAAIAQoAgQ2AkAgACAEKAIINgJEIAAgBCgCDDYCSCAEQRBqJAALrwEBA38gAEHMPjYCACAAKAIoIgEoAgAiAgRAIAIgAigCACgCBBEBACAAKAIoIQELIAAgATYCLCAAKAJYIgIEQCACIQMgAiAAKAJcIgFHBEADQCABQShrIgEgASgCACgCABEAABogASACRw0ACyAAKAJYIQMLIAAgAjYCXCAAKAJgGiADEPEDIAAoAighAQsgAEGwOzYCACABBEAgACABNgIsIAAoAjAaIAEQ8QMLIAALsgEBA38gAEHMPjYCACAAKAIoIgEoAgAiAgRAIAIgAigCACgCBBEBACAAKAIoIQELIAAgATYCLCAAKAJYIgIEQCACIQMgAiAAKAJcIgFHBEADQCABQShrIgEgASgCACgCABEAABogASACRw0ACyAAKAJYIQMLIAAgAjYCXCAAKAJgGiADEPEDIAAoAighAQsgAEGwOzYCACABBEAgACABNgIsIAAoAjAaIAEQ8QMLIAAQ8QML7wIBCH8jAEHAAWsiAiQAIAAoAlwiASAAKAJYIgNHBEADQCABQShrIgEgASgCACgCABEAABogASADRw0ACwsgACADNgJcIAAoAkgiASgCCCIFIAFBBGoiB0cEQCAAQdgAaiEIA0AgAkHwAGogBSgCCCIBRAAAAAAAAAAAIAEoAgAoAggRDAAgAkGYAWogAkHwAGoQNyEDIAJB0ABqIAFEAAAAAAAA8D8gASgCACgCCBEMACACQfAAaiACQdAAahA3IQYgACgCKCgCACIEIAMgBCgCACgCHBECACAAKAIoKAIAIgQgBiAEKAIAKAIcEQIAIAACfyAAKAJcIgQgACgCYEkEQCAEIAMQNkEoagwBCyAIIAMQ0wELNgJcIAAgAUQAAAAAAAAAAEQAAAAAAADwPyACQShqIAMQNiIEIAIgBhA2IgEQ8AEgARA4GiAEEDgaIAYQOBogAxA4GiAFKAIEIgUgB0cNAAsLIAJBwAFqJAALhAMCBH8EfCMAQcACayIGJAAgBkGYAmogASADIAKhRAAAAAAAAOA/oiACoCIKIAEoAgAoAggRDAAgBkGoAWogBkGYAmoQNyEIIAAoAigoAgAiByAIIAcoAgAoAhwRAgAgBkGYAmogBSAEEF4CQAJAIAZBmAJqEFciCyAAKwMIZEUEQCAGQfABaiAIIAQQXiAGQZgCaiAGQfABahA3IQcgBkHQAWogBSAIEF4gBkHwAWogBkHQAWoQNyEJIAcQViAJEFYgByAJEFUhDCAAKwNAIQ0gCRA4GiAHEDgaIAwgDWQNASALIAArAzhkRQ0BCyAAIAEgAiAKIAZBgAFqIAQQNiIEIAZB2ABqIAgQNiIHEPABIAcQOBogBBA4GiAAIAEgCiADIAZBMGogCBA2IgQgBkEIaiAFEDYiBRDwASAFEDgaIAQQOBoMAQsgAAJ/IAAoAlwiASAAKAJgSQRAIAEgBRA2QShqDAELIABB2ABqIAUQ0wELNgJcCyAIEDgaIAZBwAJqJAALbQEBfyAAQQA2AjAgAEIANwMoIABBxD82AgBBDBDECCIBQQA2AgggAUIANwIAIABBATYCJCAAQQA2AhAgACABNgI0IABCATcCFEEYEMQIIgFCADcCCCABQfw7NgIAIAFCADcCECAAIAE2AiAgAAuqAQEEfyAAQcQ/NgIAIAAoAjQiAgRAIAIoAgAiAwRAIAMhBCADIAIoAgQiAUcEQANAIAFB+ABrIgEgASgCACgCABEAABogASADRw0ACyACKAIAIQQLIAIgAzYCBCACKAIIGiAEEPEDCyACEPEDCyAAKAIgIgEEQCABIAEoAgAoAgQRAQALIABBsDs2AgAgACgCKCIBBEAgACABNgIsIAAoAjAaIAEQ8QMLIAALCgAgABDyARDxAwt9AQF/IAAgATYCHCAAKAIgIgIgACgCFDYCBAJAIAAtADhBAUYEQCACEPUBDAELIAAtADlBAUYEQCACEPYBDAELQairAkGsKkHKABAiGgsgACgCICIAKAIIIgIEQCACIAIoAgAoAgQRAQALIAAgACABQQRqQQBBABDRATYCCAvxBgEHfyAAIAAoAgwiAjYCEAJAAkACQCAAKAIUIgMgAksEQCACQQI2AgAgAkEEaiEBDAELQf////8DQQEgAyACayIFQQF1IgEgAUEBTRsgBUH8////B08bIgFBgICAgARPDQEgAUECdCIBEMQIIgRBAjYCACAAIAEgBGoiAzYCFCAAIARBBGoiATYCECAAIAQ2AgwgAkUNACACEPEDIAAoAhQhAwsgAEEMaiEGIAAgATYCEAJAIAEgA0kEQCABQQM2AgAgAUEEaiECDAELIAEgBigCACIFa0ECdSIEQQFqIgJBgICAgARPDQJB/////wMgAyAFayIHQQF1IgMgAiACIANJGyAHQfz///8HTxsiAgR/IAJBgICAgARPDQIgAkECdBDECAVBAAsiAyAEQQJ0aiIEQQM2AgAgAyACQQJ0aiEDIARBBGohAiABIAVHBEADQCAEQQRrIgQgAUEEayIBKAIANgIAIAEgBUcNAAsLIAAgAzYCFCAAIAI2AhAgACAENgIMIAVFDQAgBRDxAyAAKAIUIQMLIAAgAjYCEAJAIAIgA0kEQCACQQQ2AgAgAkEEaiEBDAELIAIgBigCACIFa0ECdSIEQQFqIgFBgICAgARPDQJB/////wMgAyAFayIHQQF1IgMgASABIANJGyAHQfz///8HTxsiAQR/IAFBgICAgARPDQIgAUECdBDECAVBAAsiAyAEQQJ0aiIEQQQ2AgAgAyABQQJ0aiEDIARBBGohASACIAVHBEADQCAEQQRrIgQgAkEEayICKAIANgIAIAIgBUcNAAsLIAAgAzYCFCAAIAE2AhAgACAENgIMIAVFDQAgBRDxAyAAKAIUIQMLIAAgATYCECABIANJBEAgAUEFNgIAIAAgAUEEajYCEA8LIAEgBigCACIEa0ECdSIHQQFqIgJBgICAgARPDQFB/////wMgAyAEayIGQQF1IgUgAiACIAVJGyAGQfz///8HTxsiBQR/IAVBgICAgARPDQEgBUECdBDECAVBAAsiAyAHQQJ0aiICQQU2AgAgAyAFQQJ0aiEDIAJBBGohBSABIARHBEADQCACQQRrIgIgAUEEayIBKAIANgIAIAEgBEcNAAsLIAAgAzYCFCAAIAU2AhAgACACNgIMIAQEQCAEEPEDCyAAIAU2AhAPCxB0AAsQcwAL8QYBB38gACAAKAIMIgI2AhACQAJAAkAgACgCFCIDIAJLBEAgAkEANgIAIAJBBGohAQwBC0H/////A0EBIAMgAmsiBUEBdSIBIAFBAU0bIAVB/P///wdPGyIBQYCAgIAETw0BIAFBAnQiARDECCIEQQA2AgAgACABIARqIgM2AhQgACAEQQRqIgE2AhAgACAENgIMIAJFDQAgAhDxAyAAKAIUIQMLIABBDGohBiAAIAE2AhACQCABIANJBEAgAUEBNgIAIAFBBGohAgwBCyABIAYoAgAiBWtBAnUiBEEBaiICQYCAgIAETw0CQf////8DIAMgBWsiB0EBdSIDIAIgAiADSRsgB0H8////B08bIgIEfyACQYCAgIAETw0CIAJBAnQQxAgFQQALIgMgBEECdGoiBEEBNgIAIAMgAkECdGohAyAEQQRqIQIgASAFRwRAA0AgBEEEayIEIAFBBGsiASgCADYCACABIAVHDQALCyAAIAM2AhQgACACNgIQIAAgBDYCDCAFRQ0AIAUQ8QMgACgCFCEDCyAAIAI2AhACQCACIANJBEAgAkEENgIAIAJBBGohAQwBCyACIAYoAgAiBWtBAnUiBEEBaiIBQYCAgIAETw0CQf////8DIAMgBWsiB0EBdSIDIAEgASADSRsgB0H8////B08bIgEEfyABQYCAgIAETw0CIAFBAnQQxAgFQQALIgMgBEECdGoiBEEENgIAIAMgAUECdGohAyAEQQRqIQEgAiAFRwRAA0AgBEEEayIEIAJBBGsiAigCADYCACACIAVHDQALCyAAIAM2AhQgACABNgIQIAAgBDYCDCAFRQ0AIAUQ8QMgACgCFCEDCyAAIAE2AhAgASADSQRAIAFBBTYCACAAIAFBBGo2AhAPCyABIAYoAgAiBGtBAnUiB0EBaiICQYCAgIAETw0BQf////8DIAMgBGsiBkEBdSIFIAIgAiAFSRsgBkH8////B08bIgUEfyAFQYCAgIAETw0BIAVBAnQQxAgFQQALIgMgB0ECdGoiAkEFNgIAIAMgBUECdGohAyACQQRqIQUgASAERwRAA0AgAkEEayICIAFBBGsiASgCADYCACABIARHDQALCyAAIAM2AhQgACAFNgIQIAAgAjYCDCAEBEAgBBDxAwsgACAFNgIQDwsQdAALEHMACzgBAX8gACgCNCIAKAIEIgIgACgCCEkEQCACIAEQ+AEgACACQfgAajYCBA8LIAAgACABEPkBNgIEC5oBAQN/IABB1DY2AgAgAEEIaiABQQhqEFIaIABBKGogAUEoahBSGiAAQcgAaiABQcgAahBSGiAAQQA2AnAgAEIANwJoAkAgASgCbCICIAEoAmgiA0cEQCACIANrIgRBiAFtQeLDhw9PDQEgACAEEMQIIgE2AmwgACABNgJoIAAgASAEajYCcCAAIAMgAiABEIkBNgJsCw8LEHMAC6ACAQR/AkAgACgCBCAAKAIAIgNrQfgAbSIEQQFqIgJBo8SIEUkEQEGixIgRIAAoAgggA2tB+ABtIgNBAXQiBSACIAIgBUkbIANBkaLECE8bIgIEfyACQaPEiBFPDQIgAkH4AGwQxAgFQQALIgMgBEH4AGxqIgQgARD4ASADIAJB+ABsaiEFIARB+ABqIQEgACgCBCICIAAoAgAiA0cEQANAIARB+ABrIgQgAkH4AGsiAhD4ASACIANHDQALIAAoAgAhAyAAKAIEIQILIAAgATYCBCAAIAQ2AgAgACgCCBogACAFNgIIIAIgA0cEQANAIAJB+ABrIgIgAigCACgCABEAABogAiADRw0ACwsgAwRAIAMQ8QMLIAEPCxBzAAsQdAALQAECfyAAKAI0IgEoAgQiACABKAIAIgJHBEADQCAAQfgAayIAIAAoAgAoAgARAAAaIAAgAkcNAAsLIAEgAjYCBAu6BAIKfwR8IwBBgAFrIgQkACAAQQA2AhAgACgCNCIGKAIEIgEgBigCACIDRwRAQQEgASADa0H4AG0iASABQQFNGyEJA0AgBEEIahA0IQoCQCAALQA4QQFGBEAgBEIANwMQIAQgBigCACAFQfgAbGoiASsDGCIMOQMYIAQgASsDICINOQMgRAAAAAAAAAAAIQsMAQsgAC0AOUUEQCAEKwMgIQ0gBCsDGCEMIAQrAxAhCwwBCyAGKAIAIAVB+ABsaiIBKwMQIQsgBEIANwMYIAQgCzkDECAEIAErAyAiDTkDIEQAAAAAAAAAACEMCyAAKAIgIQEgBEEwaiALIAAoAhgiAysDKCIOoSAOIAugIAwgDqEgDiAMoCANIA0gAysDMKAQKCEDQQwQxAgiAkEANgIIIAIgAjYCBCACIAI2AgAgASACIAMgASgCCBDUASACKAIEIgMgAkcEQANAQYgBEMQIEIYCIQEgACgCGCAFQfgAbCIIIAYoAgBqIAEgA0EIahCzARogBigCACAIaiABEI8CIAEgASgCACgCBBEBACAHQQFqIQcgAygCBCIDIAJHDQALCwJAIAIoAghFDQAgAigCBCIBKAIAIgMgAigCACgCBCIINgIEIAggAzYCACACQQA2AgggASACRg0AA0AgASgCBCEDIAFBCGogASgCCCgCABEAABogARDxAyACIAMiAUcNAAsLIAIQ8QMgChA4GiAFQQFqIgUgCUcNAAsLIAAgBzYCECAEQYABaiQACwkAIABBATsBOAsKACAAQYACOwE4CwcAIAAoAjQLUQEBfyAAQQA2AjAgAEIANwMoIABBADYCGCAAQbTAADYCACAAQoCAgIAQNwMQQRgQxAgiAUIANwIIIAFB/Ds2AgAgAUIANwIQIAAgATYCICAAC0oBAX8gAEG0wAA2AgAgACgCICIBBEAgASABKAIAKAIEEQEACyAAQbA7NgIAIAAoAigiAQRAIAAgATYCLCAAKAIwGiABEPEDCyAAC00BAX8gAEG0wAA2AgAgACgCICIBBEAgASABKAIAKAIEEQEACyAAQbA7NgIAIAAoAigiAQRAIAAgATYCLCAAKAIwGiABEPEDCyAAEPEDC30BAX8gACABNgIcIAAoAiAiAiAAKAIUNgIEAkAgAC0ANEEBRgRAIAIQ9QEMAQsgAC0ANUEBRgRAIAIQ9gEMAQtBgKoCQasqQcsAECIaCyAAKAIgIgAoAggiAgRAIAIgAigCACgCBBEBAAsgACAAIAFBBGpBAEEAENEBNgIIC7cDAgV/BHwjAEGAAWsiBiQAIAZBCGoQNCEEAkAgAC0ANEEBRgRAIARCADcDCCAEIAErAxgiCDkDECAEIAErAyAiCTkDGAwBCyAALQA1RQRAIAQrAxghCSAEKwMQIQggBCsDCCEHDAELIAErAxAhByAEQgA3AxAgBCAHOQMIIAQgASsDICIJOQMYCyAAKAIgIQMgBkEwaiAHIAAoAhgiBSsDKCIKoSAKIAegIAggCqEgCiAIoCAJIAkgBSsDMKAQKCEFQQwQxAgiAkEANgIIIAIgAjYCBCACIAI2AgAgAyACIAUgAygCCBDUASACKAIEIgUgAkcEQANAQYgBEMQIEIYCIQMgACgCGCABIAMgBUEIahCzARogASADEI8CIAAgACgCEEEBajYCECADIAMoAgAoAgQRAQAgBSgCBCIFIAJHDQALCwJAIAIoAghFDQAgAigCBCIDKAIAIgAgAigCACgCBCIFNgIEIAUgADYCACACQQA2AgggAiADRg0AA0AgAygCBCEAIANBCGogAygCCCgCABEAABogAxDxAyACIAAiA0cNAAsLIAIQ8QMgBBA4GiAGQYABaiQACwkAIABBATsBNAsKACAAQYACOwE0C5cBAQN/IwBBMGsiAiQAIABB/DY2AgAgAEEIahAtIQMgAEEwahAtIQEgAEIANwJ8IAAgAEHwAGo2AmwgAEIANwNwIAAgAEH8AGo2AnggAEIANwNYIABCADcDYCABIAJBCGoQLSIBEGggACABKAIgNgJQIAMgAkEIahAtIgEQaCAAIAEoAiA2AiggAEEAOgBoIAJBMGokACAACxQAIAAgASACEIgCIAAgASACEIkCC7cBAQJ/IABBCGohBCAAKAIoRQRAIAAgATkDYCAAIAE5A1hBKBDECCACEFIiA0HgLDYCACADIAIoAiA2AiAgBCADEGggACADKAIgNgIoIABBMGogAxBoIAAgAygCIDYCUCADIAMoAgAoAgQRAQALIAEgACsDWGQEQCAAIAE5A1hBKBDECCACEFIiA0HgLDYCACADIAIoAiA2AiAgBCADEGggACADKAIgNgIoIAMgAygCACgCBBEBAAsLtwEBAn8gAEEwaiEEIAAoAlBFBEAgACABOQNYIAAgATkDYEEoEMQIIAIQUiIDQeAsNgIAIAMgAigCIDYCICAEIAMQaCAAIAMoAiA2AlAgAEEIaiADEGggACADKAIgNgIoIAMgAygCACgCBBEBAAsgASAAKwNgYwRAIAAgATkDYEEoEMQIIAIQUiIDQeAsNgIAIAMgAigCIDYCICAEIAMQaCAAIAMoAiA2AlAgAyADKAIAKAIEEQEACwspACACIAMgBBBnIAVxIgVBAUYEQCAAIAEgAhCIAiAAIAEgAhCJAgsgBQsZACAAKwNYIAErA2BjIAArA2AgASsDWGRyCyEAIAArA2BEAAAAAAAAAABhIAArA1hEAAAAAAAAAABhcQuvAgEDfyMAQZABayICJAAgAkH0lgE2AkAgAkGAlwEoAgAiAzYCCCADQQxrKAIAIAJBCGpqQYSXASgCADYCACACKAIIQQxrKAIAIAJBCGpqIgMgAkEMaiIEELYFIANCgICAgHA3AkggAkH0lgE2AkAgAkHglgE2AgggBBCYBCIDQeSQATYCACACQgA3AjQgAkIANwIsIAJBEDYCPCACQQhqQYgWQQMQIiABKwNgEMYEQY8lQQMQIiABKwNYEMYEQeYVQQIQIhogACADEOQEIAJB/JYBKAIAIgE2AgggAUEMaygCACACQQhqakGIlwEoAgA2AgAgA0HkkAE2AgAgAkFAayEBIAIsADdBAEgEQCACKAI0GiACKAIsEPEDCyADEJYEGiABELQFGiACQZABaiQAC2YBBH8jAEEgayIDJAAgAEHUNjYCACAAQQhqEE8hBCAAQShqEE8hBSAAQcgAahBPIQYgAEEANgJwIABCADcDaCAEIAEQaCAFIAIQaCADIAUgBBBeIAYgAxBoIAYQViADQSBqJAAgAAv1EwEPfyMAQaACayIGJAACQCABEIwCDQAgAEHoAGohDyAAKAJoIgQgACgCbCICRgRAIAAoAnAgBEsEQCACQfw2NgIAIAJBCGogAUEIahBSQeAsNgIAIAIgASgCKDYCKCACQTBqIAFBMGoQUkHgLDYCACACIAEoAlA2AlAgAiABKQNYNwNYIAIgASkDYDcDYCACIAEtAGg6AGggAkIANwJwIAIgAkHwAGo2AmwgAkHsAGogASgCbCABQfAAahCZASACIAJB/ABqNgJ4IAJCADcCfCACQfgAaiABKAJ4IAFB/ABqEJoBIAAgAkGIAWo2AmwMAgsgACAPIAEQkAI2AmwMAQsjAEGQAWsiAyQAAkAgACgCaCIFIAAoAmwiEEYNACADQYQBaiEJIANBgAFqIQIgA0H4AGohCiADQfQAaiEHIANBOGohCyADQRBqIQwgA0HgAGoiBEEQaiENA0AgA0H8NjYCCCAMIAVBCGoQUkHgLDYCACADIAUoAig2AjAgCyAFQTBqEFJB4Cw2AgAgAyAFKAJQNgJYIA0gBS0AaDoAACAEIAUpA2A3AwggBCAFKQNYNwMAIAMgCjYCdCADQgA3A3ggByAFKAJsIAVB8ABqEJkBIAMgCTYCgAEgA0IANwKEASACIAUoAnggBUH8AGoQmgECfyABKwNgIANBCGoiDisDYGQEQEEBIAErA1ggDisDWGMNARoLQQALBEAgA0H8NjYCCCACIAMoAoQBEIsBIAcgAygCeBCMAUEBIQgMAgsgA0H8NjYCCCACIAMoAoQBEIsBIAcgAygCeBCMASAFQYgBaiIFIBBHDQALCyADQZABaiQAIAgNACMAQZABayIDJAACQCAAKAJoIgUgACgCbCIQRgRAQQEhBAwBCyADQYQBaiEKIANBgAFqIQIgA0H4AGohCyADQfQAaiEHIANBOGohDCADQRBqIQ1BASEEIANB4ABqIglBEGohDgNAIANB/DY2AgggDSAFQQhqEFJB4Cw2AgAgAyAFKAIoNgIwIAwgBUEwahBSQeAsNgIAIAMgBSgCUDYCWCAOIAUtAGg6AAAgCSAFKQNgNwMIIAkgBSkDWDcDACADIAs2AnQgA0IANwN4IAcgBSgCbCAFQfAAahCZASADIAo2AoABIANCADcChAEgAiAFKAJ4IAVB/ABqEJoBIAEgA0EIahCLAiEIIANB/DY2AgggAiADKAKEARCLASAHIAMoAngQjAEgBCAIcSEEIAVBiAFqIgUgEEcNAAsLIANBkAFqJAAgBARAIAAoAmwiAiAAKAJwSQRAIAJB/DY2AgAgAkEIaiABQQhqEFJB4Cw2AgAgAiABKAIoNgIoIAJBMGogAUEwahBSQeAsNgIAIAIgASgCUDYCUCACIAEpA1g3A1ggAiABKQNgNwNgIAIgAS0AaDoAaCACQgA3AnAgAiACQfAAajYCbCACQewAaiABKAJsIAFB8ABqEJkBIAIgAkH8AGo2AnggAkIANwJ8IAJB+ABqIAEoAnggAUH8AGoQmgEgACACQYgBajYCbAwCCyAAIA8gARCQAjYCbAwBCyAAKAJoIQMgBkEANgKcAiAGQgA3ApQCIAYCfwJAIAMgACgCbEYNAANAAkAgAyABEIsCRQRAIAYCfyAGKAKYAiICIAYoApwCSQRAIAJB/DY2AgAgAkEIaiADQQhqEFJB4Cw2AgAgAiADKAIoNgIoIAJBMGogA0EwahBSQeAsNgIAIAIgAygCUDYCUCACIAMpA1g3A1ggAiADKQNgNwNgIAIgAy0AaDoAaCACQgA3AnAgAiACQfAAajYCbCACQewAaiADKAJsIANB8ABqEJkBIAIgAkH8AGo2AnggAkIANwJ8IAJB+ABqIAMoAnggA0H8AGoQmgEgAkGIAWoMAQsgBkGUAmogAxCQAgs2ApgCIAMiBEGIAWoiAiAAKAJsIgVHBEADQCAEQQhqIAJBCGoQaCAEIAIoAig2AiggBEEwaiACQTBqEGggBCACKAJQNgJQIAQgAikDWDcDWCAEIAIpA2A3A2AgBCACLQBoOgBoIARB7ABqIAIoAmwgAkHwAGoQkQIgBEH4AGogAigCeCACQfwAahCSAiAEQYgBaiEEIAJBiAFqIgIgBUcNAAsgACgCbCEFCyADIAQgA2tqIgIgBUcEQANAIAVBiAFrIgUgBSgCACgCABEAABogAiAFRw0ACwsgACACNgJsDAELIANBiAFqIQMgACgCbCECCyACIANHDQALIAYoApgCIgIgBigCnAJPDQAgAkH8NjYCACACQQhqIAFBCGoQUkHgLDYCACACIAEoAig2AiggAkEwaiABQTBqEFJB4Cw2AgAgAiABKAJQNgJQIAIgASkDWDcDWCACIAEpA2A3A2AgAiABLQBoOgBoIAJCADcCcCACIAJB8ABqNgJsIAJB7ABqIAEoAmwgAUHwAGoQmQEgAiACQfwAajYCeCACQgA3AnwgAkH4AGogASgCeCABQfwAahCaASACQYgBagwBCyAGQZQCaiABEJACCzYCmAIgBkGIAWoQhgIhBCAGKAKUAiICIAYoApgCIgdHBEAgBkH8AGohCSAGQfgAaiEFIAZB8ABqIQogBkHsAGohAyAGQTBqIQsgBkEIaiEMIAZB2ABqIgFBEGohDQNAIAZB/DY2AgAgDCACQQhqEFIiDkHgLDYCACAGIAIoAig2AiggCyACQTBqEFIiCEHgLDYCACAGIAIoAlA2AlAgDSACLQBoOgAAIAEgAikDYDcDCCABIAIpA1g3AwAgBiAKNgJsIAZCADcDcCADIAIoAmwgAkHwAGoQmQEgBiAJNgJ4IAZCADcCfCAFIAIoAnggAkH8AGoQmgEgBCAGKwNgIAgQiQIgBCAGKwNYIA4QiAIgBkH8NjYCACAFIAYoAnwQiwEgAyAGKAJwEIwBIAJBiAFqIgIgB0cNAAsLIAACfyAAKAJsIgIgACgCcEkEQCACQfw2NgIAIAJBCGogBEEIahBSQeAsNgIAIAIgBCgCKDYCKCACQTBqIARBMGoQUkHgLDYCACACIAQoAlA2AlAgAiAEKQNYNwNYIAIgBCkDYDcDYCACIAQtAGg6AGggAkIANwJwIAIgAkHwAGo2AmwgAkHsAGogBCgCbCAEQfAAahCZASACIAJB/ABqNgJ4IAJCADcCfCACQfgAaiAEKAJ4IARB/ABqEJoBIAJBiAFqDAELIA8gBBCQAgs2AmwgBEH8NjYCACAEQfgAaiAEKAJ8EIsBIARB7ABqIAQoAnAQjAEgBigClAIiBEUNACAEIQUgBCAGKAKYAiICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiACIARHDQALIAYoApQCIQULIAYgBDYCmAIgBigCnAIaIAUQ8QMLIAZBoAJqJAALqgYBB38jAEEgayIEJAACQCAAKAIEIAAoAgAiA2tBiAFtIgZBAWoiAkHiw4cPSQRAIAAoAgghBSAEIABBCGo2AhwgBEHhw4cPIAUgA2tBiAFtIgNBAXQiBSACIAIgBUkbIANB8OHDB08bIgMEfyADQeLDhw9PDQIgA0GIAWwQxAgFQQALIgI2AgwgBCACIANBiAFsajYCGCAEIAIgBkGIAWxqIgI2AhAgAkH8NjYCACACQQhqIAFBCGoQUkHgLDYCACACIAEoAig2AiggAkEwaiABQTBqEFJB4Cw2AgAgAiABKAJQNgJQIAIgASkDWDcDWCACIAEpA2A3A2AgAiABLQBoOgBoIAJCADcCcCACIAJB8ABqNgJsIAJB7ABqIAEoAmwgAUHwAGoQmQEgAiACQfwAajYCeCACQgA3AnwgAkH4AGogASgCeCABQfwAahCaASAEIAJBiAFqNgIUIARBDGoiBSgCBCEBAkAgACgCBCIDIAAoAgAiCEYEQCABIQIMAQsDQCABQYgBayICQfw2NgIAIAFBgAFrIANBgAFrEFJB4Cw2AgAgAUHgAGsgA0HgAGsoAgA2AgAgAUHYAGsgA0HYAGsQUkHgLDYCACABQThrIANBOGsoAgA2AgAgAUEwayIGIANBMGsiBykDADcDACAGIAcpAwg3AwggBiAHLQAQOgAQIAFBGGsiBkIANwIAIAFBHGsiByAGNgIAIAcgA0EcaygCACADQRhrEJkBIAFBEGsiBiABQQxrIgE2AgAgAUIANwIAIAYgA0EQaygCACADQQxrEJoBIAIhASADQYgBayIDIAhHDQALCyAFIAI2AgQgACgCACEBIAAgAjYCACAFIAE2AgQgACgCBCEBIAAgBSgCCDYCBCAFIAE2AgggACgCCCEBIAAgBSgCDDYCCCAFIAE2AgwgBSAFKAIENgIAIAAoAgQhACAEKAIUIgIgBCgCECIBRwRAA0AgBCACQYgBayICNgIUIAIgAigCACgCABEAABogBCgCFCICIAFHDQALCyAEKAIMIgIEQCAEKAIYGiACEPEDCyAEQSBqJAAgAA8LEHMACxB0AAvHBgEHfwJAIAAoAghFDQAgACgCACEDIAAgAEEEaiIJNgIAIAAoAgRBADYCCCAAQgA3AgQgAygCBCIEIAMgBBsiBkUEQCAAIAYQjAEMAQsCQCAGKAIIIgRFDQAgBiAEKAIAIgNGBEAgBEEANgIAIAQhBSAEKAIEIgNFDQEDQCADIgUoAgAiAw0AIAUoAgQiAw0ACwwBCyAEQQA2AgQgBCEFIANFDQADQCADIgUoAgAiAw0AIAUoAgQiAw0ACwsCQCABIAJGBEAgBiEHDAELIAEhBANAIAUhByAGIAQoAhAiBTYCECAJIgEhCAJAIAEoAgAiA0UNAANAIAUgAyIBKAIQSQRAIAMhCCADKAIAIgMNAQwCCyABKAIEIgMNAAsgAUEEaiEICyAGIAE2AgggBkIANwIAIAggBjYCACAAKAIAKAIAIgEEQCAAIAE2AgAgCCgCACEGCyAAKAIEIAYQnAEgACAAKAIIQQFqNgIIQQAhBQJAIAdFDQAgBygCCCIDRQ0AIAcgAygCACIBRgRAIANBADYCACADIQUgAygCBCIBRQ0BA0AgASIFKAIAIgENACAFKAIEIgENAAsMAQsgA0EANgIEIAMhBSABRQ0AA0AgASIFKAIAIgENACAFKAIEIgENAAsLAkAgBCgCBCIDBEADQCADIgEoAgAiAw0ADAILAAsDQCAEKAIIIgEoAgAgBEchAyABIQQgAw0ACwsgB0UNASABIQQgByEGIAEgAkcNAAsLIAAgBxCMASAFRQ0AA0AgBSgCCCIDBEAgAyEFDAELCyAAIAUQjAELIAEgAkcEQCAAQQRqIQcDQEEUEMQIIgYgASgCECIFNgIQIAciAyEIAkAgAygCACIERQ0AA0AgBSAEIgMoAhBJBEAgAyEIIAMoAgAiBA0BDAILIAMoAgQiBA0ACyADQQRqIQgLIAYgAzYCCCAGQgA3AgAgCCAGNgIAIAAoAgAoAgAiAwRAIAAgAzYCACAIKAIAIQYLIAAoAgQgBhCcASAAIAAoAghBAWo2AggCQCABKAIEIgQEQANAIAQiAygCACIEDQAMAgsACwNAIAEoAggiAygCACABRyEEIAMhASAEDQALCyADIQEgAiADRw0ACwsL4gYCBn8BfAJAIAAoAghFDQAgACgCACEDIAAgAEEEaiIINgIAIAAoAgRBADYCCCAAQgA3AgQgAygCBCIFIAMgBRsiBkUEQCAAIAYQiwEMAQsCQCAGKAIIIgVFDQAgBiAFKAIAIgNGBEAgBUEANgIAIAUhBCAFKAIEIgNFDQEDQCADIgQoAgAiAw0AIAQoAgQiAw0ACwwBCyAFQQA2AgQgBSEEIANFDQADQCADIgQoAgAiAw0AIAQoAgQiAw0ACwsCQCABIAJGBEAgBiEHDAELIAEhBQNAIAQhByAGIAUoAhA2AhAgBiAFKwMYIgk5AxggCCIBIQQCQCABKAIAIgNFDQADQCADIgErAxggCWQEQCADIQQgAygCACIDDQEMAgsgASgCBCIDDQALIAFBBGohBAsgBiABNgIIIAZCADcCACAEIAY2AgAgACgCACgCACIBBEAgACABNgIAIAQoAgAhBgsgACgCBCAGEJwBIAAgACgCCEEBajYCCEEAIQQCQCAHRQ0AIAcoAggiA0UNACAHIAMoAgAiAUYEQCADQQA2AgAgAyEEIAMoAgQiAUUNAQNAIAEiBCgCACIBDQAgBCgCBCIBDQALDAELIANBADYCBCADIQQgAUUNAANAIAEiBCgCACIBDQAgBCgCBCIBDQALCwJAIAUoAgQiAwRAA0AgAyIBKAIAIgMNAAwCCwALA0AgBSgCCCIBKAIAIAVHIQMgASEFIAMNAAsLIAdFDQEgASEFIAchBiABIAJHDQALCyAAIAcQiwEgBEUNAANAIAQoAggiAwRAIAMhBAwBCwsgACAEEIsBCyABIAJHBEAgAEEEaiEHA0BBIBDECCIGIAEpAxg3AxggBiABKQMQNwMQIAciAyEEAkAgAygCACIFRQ0AIAYrAxghCQNAIAUiAysDGCAJZARAIAMhBCADKAIAIgUNAQwCCyADKAIEIgUNAAsgA0EEaiEECyAGIAM2AgggBkIANwIAIAQgBjYCACAAKAIAKAIAIgMEQCAAIAM2AgAgBCgCACEGCyAAKAIEIAYQnAEgACAAKAIIQQFqNgIIAkAgASgCBCIFBEADQCAFIgMoAgAiBQ0ADAILAAsDQCABKAIIIgMoAgAgAUchBSADIQEgBQ0ACwsgAyEBIAIgA0cNAAsLC08CAX8CfCMAQUBqIgIkACACQSBqIABBKGogAEEIaiIAEF4gAiABIAAQXiACIAJBIGoQVSEDIAJBIGogAkEgahBVIQQgAkFAayQAIAMgBKMLTQEBfyMAQdAAayIDJAAgAyACOQNIIANBCGogAUEoaiABQQhqIgEQXiADQShqIANByABqIANBCGoQYyAAIAEgA0EoahBiIANB0ABqJAALjwUBCH8gAEEANgIwIABCADcDKCAAQgA3A0AgAEGkwQA2AgAgAEIANwNIIABCADcDUCAAQgA3A1ggAEEANgJgIABBKGohBkHAABDECBDxASEEAkACQAJAIAAoAiwiASAAKAIwIghJBEAgASAENgIAIAFBBGohBAwBCyABIAYoAgAiAmtBAnUiBUEBaiIDQYCAgIAETw0BIAVBAnRB/////wMgCCACayIFQQF1IgcgAyADIAdJGyAFQfz///8HTxsiBQR/IAVBgICAgARPDQMgBUECdBDECAVBAAsiB2oiAyAENgIAIAcgBUECdGohBSADQQRqIQQgASACRwRAA0AgA0EEayIDIAFBBGsiASgCADYCACABIAJHDQALIAAoAjAaIAAoAighAgsgACAFNgIwIAAgBDYCLCAAIAM2AiggAkUNACACEPEDCyAAIAQ2AixBwAAQxAgQ8QEhBAJAIAAoAiwiASAAKAIwIghJBEAgASAENgIAIAFBBGohBAwBCyABIAYoAgAiAmtBAnUiB0EBaiIDQYCAgIAETw0BQf////8DIAggAmsiBkEBdSIFIAMgAyAFSRsgBkH8////B08bIgYEfyAGQYCAgIAETw0DIAZBAnQQxAgFQQALIgUgB0ECdGoiAyAENgIAIAUgBkECdGohBiADQQRqIQQgASACRwRAA0AgA0EEayIDIAFBBGsiASgCADYCACABIAJHDQALIAAoAjAaIAAoAighAgsgACAGNgIwIAAgBDYCLCAAIAM2AiggAkUNACACEPEDCyAAIAQ2AiwgACgCKCgCACIBIAEoAgAoAjQRAQAgACgCKCgCBCIBIAEoAgAoAjgRAQAgAEEBNgIkIAAPCxBzAAsQdAALvAMBB38gAEGkwQA2AgAgACgCKCIBKAIEIgIEQCACIAIoAgAoAgQRAQAgACgCKCEBCyAAIAEoAgAiAgR/IAIgAigCACgCBBEBACAAKAIoBSABCzYCLCAAKAJYIgIEQCACIQMgAiAAKAJcIgFHBEADQCABQfgAayIBIAEoAgAoAgARAAAaIAEgAkcNAAsgACgCWCEDCyAAIAI2AlwgACgCYBogAxDxAwsgACgCTCICBEAgAiEDIAIgACgCUCIBRwRAA0AgAUH4AGsiASABKAIAKAIAEQAAGiABIAJHDQALIAAoAkwhAwsgACACNgJQIAAoAlQaIAMQ8QMLIAAoAkAiBQRAIAAoAkQiBCAFIgFHBEADQCAEQQxrIgMoAgAiAgRAIAIhBiACIARBCGsiBygCACIBRwRAA0AgAUEgayIBIAEoAgAoAgARAAAaIAEgAkcNAAsgAygCACEGCyAHIAI2AgAgBEEEaygCABogBhDxAwsgAyEEIAMgBUcNAAsgACgCQCEBCyAAIAU2AkQgACgCSBogARDxAwsgAEGwOzYCACAAKAIoIgEEQCAAIAE2AiwgACgCMBogARDxAwsgAAsKACAAEJYCEPEDC7YBAQJ/IAAQmQIgACgCKCgCACIBIAEoAgAoAhgRAQAgACgCKCgCBCIBIAEoAgAoAhgRAQAgAEHMAGoiAiAAKAIoKAIAIgEgASgCACgCQBEAACIBRwRAIAIgASgCACICIAEoAgQiASABIAJrQfgAbRCaAgsgAEHYAGoiAiAAKAIoKAIEIgEgASgCACgCQBEAACIBRwRAIAIgASgCACICIAEoAgQiASABIAJrQfgAbRCaAgsgABCbAguTBQIGfwd8IwBB0AFrIgEkAAJ/IAAoAhgrAygiByAHoCIJIAAoAhwiAisDIKAiCiAHRAAAAAAAAADAoiIHIAIrA0CgIguhIAArAwgiDKMiCJlEAAAAAAAA4EFjBEAgCKoMAQtBgICAgHgLIQMgAisDKCEIIAIrA0ghDSABQcQBaiALIAogAxCcAgJ/IAkgCKAiCSAHIA2gIgihIAyjIgeZRAAAAAAAAOBBYwRAIAeqDAELQYCAgIB4CyECIAFBuAFqIAggCSACEJwCIAEoArgBIgQgASgCvAEiBkcEQANAIAEgAUGYAWogCyAEKwMAIgcgACsDOBBQIAFB+ABqIAogByAAKwM4EFAQjgIhAiAAKAIoKAIAIgMgAiADKAIAKAI8EQIAIAJB1DY2AgAgASgCaCIDBEAgAyEFIAMgASgCbCICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiACIANHDQALIAEoAmghBQsgASADNgJsIAEoAnAaIAUQ8QMLIARBCGoiBCAGRw0ACwsgASgCxAEiBCABKALIASIGRwRAA0AgASABQZgBaiAEKwMAIgcgCCAAKwM4EFAgAUH4AGogByAJIAArAzgQUBCOAiECIAAoAigoAgQiAyACIAMoAgAoAjwRAgAgAkHUNjYCACABKAJoIgMEQCADIQUgAyABKAJsIgJHBEADQCACQYgBayICIAIoAgAoAgARAAAaIAIgA0cNAAsgASgCaCEFCyABIAM2AmwgASgCcBogBRDxAwsgBEEIaiIEIAZHDQALCyABKAK4ASICBEAgASACNgK8ASABKALAARogAhDxAwsgASgCxAEiAgRAIAEgAjYCyAEgASgCzAEaIAIQ8QMLIAFB0AFqJAAL+QQBA38gAyAAKAIIIgUgACgCACIEa0H4AG1NBEAgAyAAKAIEIgUgBGsiBkH4AG1LBEAgASAGaiEDIAQgBUcEQANAIARBCGogAUEIahBoIARBKGogAUEoahBoIARByABqIAFByABqEGggASAERwRAIARB6ABqIAEoAmgiBSABKAJsIgYgBiAFa0GIAW0QogILIARB+ABqIQQgAUH4AGoiASADRw0ACyAAKAIEIQULIAUhASACIANHBEADQCABIAMQ+AEgAUH4AGohASADQfgAaiIDIAJHDQALCyAAIAUgASAFa2o2AgQPCyABIAJHBEADQCAEQQhqIAFBCGoQaCAEQShqIAFBKGoQaCAEQcgAaiABQcgAahBoIAEgBEcEQCAEQegAaiABKAJoIgUgASgCbCIDIAMgBWtBiAFtEKICCyAEQfgAaiEEIAFB+ABqIgEgAkcNAAsgACgCBCEFCyAEIAVHBEADQCAFQfgAayIFIAUoAgAoAgARAAAaIAQgBUcNAAsLIAAgBDYCBA8LIAQEQCAEIQYgBCAAKAIEIgVHBEADQCAFQfgAayIFIAUoAgAoAgARAAAaIAQgBUcNAAsgACgCCBogACgCACEGCyAAIAQ2AgQgBhDxAyAAQQA2AgggAEIANwIAQQAhBQsCQCADQaPEiBFPDQBBosSIESAFQfgAbSIEQQF0IgUgAyADIAVJGyAEQZGixAhPGyIEQaPEiBFPDQAgACAEQfgAbCIFEMQIIgQ2AgQgACAENgIAIAAgBCAFajYCCCABIAJHBEADQCAEIAEQ+AEgBEH4AGohBCABQfgAaiIBIAJHDQALCyAAIAQ2AgQPCxBzAAv0BwEKfyMAQeABayIBJAAgAUEANgKoASABQQA2ApwBIAFBADYCkAEgAUIANwKIASABIAFBoAFqIgI2AqQBIAEgAjYCoAEgASABQZQBaiICNgKYASABIAI2ApQBQQEQxAghAiABQgA3ArgBIAFCADcCwAEgAUIANwLIASABQQA2AtABIAFCADcC2AEgASACNgKsASABQgA3ArABIAEgAUHYAWo2AtQBIAFB+MMANgKEAQJAAkAgACgCTCIEIAAoAlAiCEcEQCABQdAAaiEHIAFBMGohCSABQRBqIQoDQCABQdQ2NgIIIAogBEEIahBSGiAJIARBKGoQUhogByAEQcgAahBSGiABQQA2AnggAUIANwNwIAQoAmwiAyAEKAJoIgVHBEAgAyAFayIGQYgBbUHiw4cPTw0DIAEgBhDECCICNgJ0IAEgAjYCcCABIAIgBmo2AnggASAFIAMgAhCJATYCdAsgAUGEAWogAUEIahCrAiABQdQ2NgIIIAEoAnAiAwRAIAMhBSADIAEoAnQiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogAiADRw0ACyABKAJwIQULIAEgAzYCdCABKAJ4GiAFEPEDCyAEQfgAaiIEIAhHDQALCyAAKAJYIgQgACgCXCIIRwRAIAFB0ABqIQcgAUEwaiEJIAFBEGohCgNAIAFB1DY2AgggCiAEQQhqEFIaIAkgBEEoahBSGiAHIARByABqEFIaIAFBADYCeCABQgA3A3AgBCgCbCIDIAQoAmgiBUcEQCADIAVrIgZBiAFtQeLDhw9PDQQgASAGEMQIIgI2AnQgASACNgJwIAEgAiAGajYCeCABIAUgAyACEIkBNgJ0CyABQYQBaiABQQhqEKsCIAFB1DY2AgggASgCcCIDBEAgAyEFIAMgASgCdCICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiACIANHDQALIAEoAnAhBQsgASADNgJ0IAEoAngaIAUQ8QMLIARB+ABqIgQgCEcNAAsLIAFBhAFqELYCIAFBhAFqEKwCIAFBCGogAUGEAWoQrgIgACgCQCIHBEAgACgCRCIFIAciAkcEQANAIAVBDGsiBCgCACIDBEAgAyEGIAMgBUEIayIIKAIAIgJHBEADQCACQSBrIgIgAigCACgCABEAABogAiADRw0ACyAEKAIAIQYLIAggAzYCACAFQQRrKAIAGiAGEPEDCyAEIQUgBCAHRw0ACyAAKAJAIQILIAAgBzYCRCAAKAJIGiACEPEDCyAAIAEoAgg2AkAgACABKAIMNgJEIAAgASgCEDYCSCABQYQBahCdAhogAUHgAWokAA8LEHMACxBzAAuwAgEGfyAAQQA2AgggAEIANwIAAkACQCADQQBOBEAgAiABoSADt6MhAgNAIAQhCSAAAn8gBSAGSwRAIAYgATkDACAGQQhqDAELIAYgCGtBA3UiB0EBaiIEQYCAgIACTw0DIAdBA3RB/////wEgBSAIayIHQQJ1IgUgBCAEIAVJGyAHQfj///8HTxsiBQR/IAVBgICAgAJPDQUgBUEDdBDECAVBAAsiB2oiBCABOQMAIAcgBUEDdGohBSAEQQhqIQcgBiAIRwRAA0AgBEEIayIEIAZBCGsiBisDADkDACAGIAhHDQALCyAAIAU2AgggACAHNgIEIAAgBDYCACAIBEAgCBDxAwsgBCEIIAcLIgY2AgQgCUEBaiEEIAIgAaAhASADIAlHDQALCw8LEHMACxB0AAvTBQEHfyAAQZTCADYCACAAQdAAaiAAKAJUEKECIAAoAkQiAQRAIAEhAyABIAAoAkgiAkcEQANAIAJB+ABrIgIgAigCACgCABEAABogASACRw0ACyAAKAJEIQMLIAAgATYCSCAAKAJMGiADEPEDCyAAKAI4IgEEQCABIQMgASAAKAI8IgJHBEADQCACQfgAayICIAIoAgAoAgARAAAaIAEgAkcNAAsgACgCOCEDCyAAIAE2AjwgACgCQBogAxDxAwsgACgCLCIEBEAgACgCMCICIAQiAUcEQANAIAJBDGsiASgCACIDBEAgAkEIayADNgIAIAJBBGsoAgAaIAMQ8QMLIAQgASICRw0ACyAAKAIsIQELIAAgBDYCMCAAKAI0GiABEPEDCyAAQRBqIQIgACgCKCIBBEAgARDxAwsgAiIDKAIQIgYgAkEMaiIHRwRAA0AgBigCCCIEBEACQCAEKAIURQ0AIAQoAhAiASgCACICIAQoAgwoAgQiBTYCBCAFIAI2AgAgBEEANgIUIAEgBEEMaiIFRg0AA0AgASgCBCECIAEQ8QMgBSACIgFHDQALCwJAIAQoAghFDQAgBCgCBCIBKAIAIgIgBCgCACgCBCIFNgIEIAUgAjYCACAEQQA2AgggASAERg0AA0AgASgCBCECIAEQ8QMgAiIBIARHDQALCyAEEPEDCyAGKAIEIgYgB0cNAAsLAkAgAygCFEUNACADKAIQIgEoAgAiAiADKAIMKAIEIgQ2AgQgBCACNgIAIANBADYCFCABIAdGDQADQCABKAIEIQIgARDxAyACIgEgB0cNAAsLAkAgAygCCEUNACADKAIEIgEoAgAiAiADKAIAKAIEIgQ2AgQgBCACNgIAIANBADYCCCABIANGDQADQCABKAIEIQIgARDxAyACIgEgA0cNAAsLIAAoAgQiAgRAIAAgAjYCCCAAKAIMGiACEPEDCyAAC7YBAQJ/IAAQmQIgACgCKCgCACIBIAEoAgAoAhgRAQAgACgCKCgCBCIBIAEoAgAoAhgRAQAgAEHMAGoiAiAAKAIoKAIAIgEgASgCACgCQBEAACIBRwRAIAIgASgCACICIAEoAgQiASABIAJrQfgAbRCaAgsgAEHYAGoiAiAAKAIoKAIEIgEgASgCACgCQBEAACIBRwRAIAIgASgCACICIAEoAgQiASABIAJrQfgAbRCaAgsgABCfAgv0BwEKfyMAQeABayIBJAAgAUEANgKoASABQQA2ApwBIAFBADYCkAEgAUIANwKIASABIAFBoAFqIgI2AqQBIAEgAjYCoAEgASABQZQBaiICNgKYASABIAI2ApQBQQEQxAghAiABQgA3ArgBIAFCADcCwAEgAUIANwLIASABQQA2AtABIAFCADcC2AEgASACNgKsASABQgA3ArABIAEgAUHYAWo2AtQBIAFBvMMANgKEAQJAAkAgACgCTCIEIAAoAlAiCEcEQCABQdAAaiEHIAFBMGohCSABQRBqIQoDQCABQdQ2NgIIIAogBEEIahBSGiAJIARBKGoQUhogByAEQcgAahBSGiABQQA2AnggAUIANwNwIAQoAmwiAyAEKAJoIgVHBEAgAyAFayIGQYgBbUHiw4cPTw0DIAEgBhDECCICNgJ0IAEgAjYCcCABIAIgBmo2AnggASAFIAMgAhCJATYCdAsgAUGEAWogAUEIahCrAiABQdQ2NgIIIAEoAnAiAwRAIAMhBSADIAEoAnQiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogAiADRw0ACyABKAJwIQULIAEgAzYCdCABKAJ4GiAFEPEDCyAEQfgAaiIEIAhHDQALCyAAKAJYIgQgACgCXCIIRwRAIAFB0ABqIQcgAUEwaiEJIAFBEGohCgNAIAFB1DY2AgggCiAEQQhqEFIaIAkgBEEoahBSGiAHIARByABqEFIaIAFBADYCeCABQgA3A3AgBCgCbCIDIAQoAmgiBUcEQCADIAVrIgZBiAFtQeLDhw9PDQQgASAGEMQIIgI2AnQgASACNgJwIAEgAiAGajYCeCABIAUgAyACEIkBNgJ0CyABQYQBaiABQQhqEKsCIAFB1DY2AgggASgCcCIDBEAgAyEFIAMgASgCdCICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiACIANHDQALIAEoAnAhBQsgASADNgJ0IAEoAngaIAUQ8QMLIARB+ABqIgQgCEcNAAsLIAFBhAFqELACIAFBhAFqEKwCIAFBCGogAUGEAWoQrgIgACgCQCIHBEAgACgCRCIFIAciAkcEQANAIAVBDGsiBCgCACIDBEAgAyEGIAMgBUEIayIIKAIAIgJHBEADQCACQSBrIgIgAigCACgCABEAABogAiADRw0ACyAEKAIAIQYLIAggAzYCACAFQQRrKAIAGiAGEPEDCyAEIQUgBCAHRw0ACyAAKAJAIQILIAAgBzYCRCAAKAJIGiACEPEDCyAAIAEoAgg2AkAgACABKAIMNgJEIAAgASgCEDYCSCABQYQBahCdAhogAUHgAWokAA8LEHMACxBzAAucAQECfyAAKAJQIgEgACgCTCICRwRAA0AgAUH4AGsiASABKAIAKAIAEQAAGiABIAJHDQALCyAAIAI2AlAgACgCXCIBIAAoAlgiAkcEQANAIAFB+ABrIgEgASgCACgCABEAABogASACRw0ACwsgACACNgJcIAAoAigoAgAiASABKAIAKAIkEQEAIAAoAigoAgQiASABKAIAKAIkEQEACyAAIAEEQCAAIAEoAgAQoQIgACABKAIEEKECIAEQ8QMLC4QFAQN/IAMgACgCCCIFIAAoAgAiBGtBiAFtTQRAIAMgACgCBCIFIARrIgZBiAFtSwRAIAAgASAGaiIDIAIgBCAFRwR/A0AgBEEIaiABQQhqEGggBCABKAIoNgIoIARBMGogAUEwahBoIAQgASgCUDYCUCAEIAEpA1g3A1ggBCABKQNgNwNgIAQgAS0AaDoAaCABIARHBEAgBEHsAGogASgCbCABQfAAahCRAiAEQfgAaiABKAJ4IAFB/ABqEJICCyAEQYgBaiEEIAFBiAFqIgEgA0cNAAsgACgCBAUgBQsQiQE2AgQPCyABIAJHBEADQCAEQQhqIAFBCGoQaCAEIAEoAig2AiggBEEwaiABQTBqEGggBCABKAJQNgJQIAQgASkDWDcDWCAEIAEpA2A3A2AgBCABLQBoOgBoIAEgBEcEQCAEQewAaiABKAJsIAFB8ABqEJECIARB+ABqIAEoAnggAUH8AGoQkgILIARBiAFqIQQgAUGIAWoiASACRw0ACyAAKAIEIQULIAQgBUcEQANAIAVBiAFrIgUgBSgCACgCABEAABogBCAFRw0ACwsgACAENgIEDwsgBARAIAQhBiAEIAAoAgQiBUcEQANAIAVBiAFrIgUgBSgCACgCABEAABogBCAFRw0ACyAAKAIIGiAAKAIAIQYLIAAgBDYCBCAGEPEDIABBADYCCCAAQgA3AgBBACEFCwJAIANB4sOHD08NAEHhw4cPIAVBiAFtIgRBAXQiBSADIAMgBUkbIARB8OHDB08bIgRB4sOHD08NACAAIARBiAFsIgUQxAgiBDYCBCAAIAQ2AgAgACAEIAVqNgIIIAAgASACIAQQiQE2AgQPCxBzAAsHACAAEJYCCwwAIAAQpQIgABCfAguWEwIJfwN8IwBB0AZrIgEkACAAIAAoAhgrAygiCkQAAAAAAAAAwKIiCyAAKAIcIgIrA0CgIgw5A2ggACAKIAqgIgogAisDIKA5A3AgACALIAIrA0igIgs5A3ggACAKIAIrAyigOQOAAUHIABDECCABQdgEaiAMIAsgACsDOBBQIAFB4ANqIAArA3AgACsDgAEgACsDOBBQEEIhCUHQABDECCIHQZQuNgIAIAdBCGogCRBDGiAAKAJQIgIgACgCTCIDRwRAA0AgAkH4AGsiAiACKAIAKAIAEQAAGiACIANHDQALCyAAIAM2AlAgACsDaCEKIAFB2ARqIAdEAAAAAAAAAAAgBygCACgCCBEMACABQbAGaiAKIAErA+gEIAArAzgQUCECIAArA3AhCiABQdgEaiAHRAAAAAAAAAAAIAcoAgAoAggRDAAgAUGQBmogCiABKwPoBCAAKwM4EFAhAyAAKwNoIQogAUHYBGogB0QAAAAAAADwPyAHKAIAKAIIEQwAIAFB8AVqIAogASsD6AQgACsDOBBQIQQgACsDcCEKIAFB2ARqIAdEAAAAAAAA8D8gBygCACgCCBEMACABQdAFaiAKIAErA+gEIAArAzgQUCEGIAFB2ARqIAIgAxCOAiEFIAFB4ANqIAQgBhCOAiEEIAAoAigoAgAiAiAFIAIoAgAoAiARAgAgACgCKCgCACICIAQgAigCACgCIBECACAAAn8gACgCUCICIAAoAlRJBEAgAiAFEPgBIAJB+ABqDAELIABBzABqIAUQ+QELNgJQIAFB1DY2AugCIAFB8AJqIAVBCGoQUhogAUGQA2ogBUEoahBSGiABQbADaiAFQcgAahBSGiABQQA2AtgDIAFCADcD0AMCQAJAAkACQCAFKAJsIgMgBSgCaCIGRwRAIAMgBmsiCEGIAW1B4sOHD08NASABIAgQxAgiAjYC1AMgASACNgLQAyABIAIgCGo2AtgDIAEgBiADIAIQiQE2AtQDCyABQdQ2NgLwASABQfgBaiAEQQhqEFIaIAFBmAJqIARBKGoQUhogAUG4AmogBEHIAGoQUhogAUEANgLgAiABQgA3A9gCIAQoAmwiAyAEKAJoIgZHBEAgAyAGayIIQYgBbUHiw4cPTw0CIAEgCBDECCICNgLcAiABIAI2AtgCIAEgAiAIajYC4AIgASAGIAMgAhCJATYC3AILIAAgB0QAAAAAAAAAAEQAAAAAAADwPyABQegCaiABQfABahCmAiABQdQ2NgLwASABKALYAiIDBEAgAyEGIAMgASgC3AIiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogAiADRw0ACyABKALYAiEGCyABIAM2AtwCIAEoAuACGiAGEPEDCyABQdQ2NgLoAiABKALQAyIDBEAgAyEGIAMgASgC1AMiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogAiADRw0ACyABKALQAyEGCyABIAM2AtQDIAEoAtgDGiAGEPEDCyAEQdQ2NgIAIAQoAmgiAwRAIAMhBiADIAQoAmwiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogAiADRw0ACyAEKAJoIQYLIAQgAzYCbCAEKAJwGiAGEPEDCyAFQdQ2NgIAIAUoAmgiAwRAIAMhBCADIAUoAmwiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogAiADRw0ACyAFKAJoIQQLIAUgAzYCbCAFKAJwGiAEEPEDCyAAKAJcIgIgACgCWCIDRwRAA0AgAkH4AGsiAiACKAIAKAIAEQAAGiACIANHDQALCyAAIAM2AlwgAUHYBGogB0QAAAAAAAAAACAHKAIAKAIIEQwAIAFBsAZqIAErA+AEIAArA3ggACsDOBBQIQIgAUHYBGogB0QAAAAAAAAAACAHKAIAKAIIEQwAIAFBkAZqIAErA+AEIAArA4ABIAArAzgQUCEDIAFB2ARqIAdEAAAAAAAA8D8gBygCACgCCBEMACABQfAFaiABKwPgBCAAKwN4IAArAzgQUCEFIAFB2ARqIAdEAAAAAAAA8D8gBygCACgCCBEMACABQdAFaiABKwPgBCAAKwOAASAAKwM4EFAhBCABQdgEaiACIAMQjgIhAyABQeADaiAFIAQQjgIhBSAAKAIoKAIEIgIgAyACKAIAKAIgEQIAIAAoAigoAgQiAiAFIAIoAgAoAiARAgAgAAJ/IAAoAlwiAiAAKAJgSQRAIAIgAxD4ASACQfgAagwBCyAAQdgAaiADEPkBCzYCXCABQdQ2NgJ4IAFBgAFqIANBCGoQUhogAUGgAWogA0EoahBSGiABQcABaiADQcgAahBSGiABQQA2AugBIAFCADcD4AEgAygCbCIEIAMoAmgiBkcEQCAEIAZrIghBiAFtQeLDhw9PDQMgASAIEMQIIgI2AuQBIAEgAjYC4AEgASACIAhqNgLoASABIAYgBCACEIkBNgLkAQsgAUHUNjYCACABQQhqIAVBCGoQUhogAUEoaiAFQShqEFIaIAFByABqIAVByABqEFIaIAFBADYCcCABQgA3A2ggBSgCbCIEIAUoAmgiBkcEQCAEIAZrIghBiAFtQeLDhw9PDQQgASAIEMQIIgI2AmwgASACNgJoIAEgAiAIajYCcCABIAYgBCACEIkBNgJsCyAAIAdEAAAAAAAAAABEAAAAAAAA8D8gAUH4AGogARCnAiABQdQ2NgIAIAEoAmgiAARAIAAhBCAAIAEoAmwiAkcEQANAIAJBiAFrIgIgAigCACgCABEAABogACACRw0ACyABKAJoIQQLIAEgADYCbCABKAJwGiAEEPEDCyABQdQ2NgJ4IAEoAuABIgAEQCAAIQQgACABKALkASICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiAAIAJHDQALIAEoAuABIQQLIAEgADYC5AEgASgC6AEaIAQQ8QMLIAVB1DY2AgAgBSgCaCIABEAgACEEIAAgBSgCbCICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiAAIAJHDQALIAUoAmghBAsgBSAANgJsIAUoAnAaIAQQ8QMLIANB1DY2AgAgAygCaCIABEAgACEFIAAgAygCbCICRwRAA0AgAkGIAWsiAiACKAIAKAIAEQAAGiAAIAJHDQALIAMoAmghBQsgAyAANgJsIAMoAnAaIAUQ8QMLIAkgCSgCACgCBBEBACAHIAcoAgAoAhARAQAgAUHQBmokAA8LEHMACxBzAAsQcwALEHMAC/8SAgh/AnwjAEGACWsiBiQAIAZByAdqIAEgAyACoUQAAAAAAADgP6IgAqAiDiABKAIAKAIIEQwAIAZByAdqIAZB4AhqIAArA2ggBisD2AciDyAAKwM4EFAgBkHACGogACsDcCAPIAArAzgQUBCOAiEJIAAoAigoAgAiByAJIAcoAgAoAiARAgACQAJAAkACQAJAAkACQAJAAkAgBCsDGCAFKwMYoZkiDyAAKwMIZARAIAZB1DY2AtAGIAZB2AZqIARBCGoQUhogBkH4BmogBEEoahBSGiAGQZgHaiAEQcgAahBSGiAGQQA2AsAHIAZCADcDuAcgBCgCbCIHIAQoAmgiCEcEQCAHIAhrIgpBiAFtQeLDhw9PDQMgBiAKEMQIIgQ2ArwHIAYgBDYCuAcgBiAEIApqNgLAByAGIAggByAEEIkBNgK8BwsgBkHUNjYC2AUgBkHgBWogCUEIaiIKEFIaIAZBgAZqIAlBKGoiDBBSGiAGQaAGaiAJQcgAaiINEFIaIAZBADYCyAYgBkIANwPABiAJKAJsIgcgCSgCaCIIRwRAIAcgCGsiC0GIAW1B4sOHD08NBCAGIAsQxAgiBDYCxAYgBiAENgLABiAGIAQgC2o2AsgGIAYgCCAHIAQQiQE2AsQGCyAAIAEgAiAOIAZB0AZqIAZB2AVqEKYCIAZB1DY2AtgFIAYoAsAGIgcEQCAHIQggByAGKALEBiIERwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAEIAdHDQALIAYoAsAGIQgLIAYgBzYCxAYgBigCyAYaIAgQ8QMLIAZB1DY2AtAGIAYoArgHIgcEQCAHIQggByAGKAK8ByIERwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAEIAdHDQALIAYoArgHIQgLIAYgBzYCvAcgBigCwAcaIAgQ8QMLIAZB1DY2AuAEIAZB6ARqIAoQUhogBkGIBWogDBBSGiAGQagFaiANEFIaIAZBADYC0AUgBkIANwPIBSAJKAJsIgcgCSgCaCIIRwRAIAcgCGsiCkGIAW1B4sOHD08NBSAGIAoQxAgiBDYCzAUgBiAENgLIBSAGIAQgCmo2AtAFIAYgCCAHIAQQiQE2AswFCyAGQdQ2NgLoAyAGQfADaiAFQQhqEFIaIAZBkARqIAVBKGoQUhogBkGwBGogBUHIAGoQUhogBkEANgLYBCAGQgA3A9AEIAUoAmwiByAFKAJoIgVHBEAgByAFayIIQYgBbUHiw4cPTw0GIAYgCBDECCIENgLUBCAGIAQ2AtAEIAYgBCAIajYC2AQgBiAFIAcgBBCJATYC1AQLIAAgASAOIAMgBkHgBGogBkHoA2oQpgIgBkHUNjYC6AMgBigC0AQiAARAIAYoAtQEIgQgACIHRwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAAIARHDQALIAYoAtAEIQcLIAYgADYC1AQgBigC2AQaIAcQ8QMLIAZB1DY2AuAEIAYoAsgFIgBFDQEgBigCzAUiBCAAIgdHBEADQCAEQYgBayIEIAQoAgAoAgARAAAaIAAgBEcNAAsgBigCyAUhBwsgBiAANgLMBSAGKALQBRogBxDxAwwBCyAAIAQgCSAFEKkCRQRAIA8gACsDiAFkRQ0BIAZB1DY2AvACIAZB+AJqIARBCGoQUhogBkGYA2ogBEEoahBSGiAGQbgDaiAEQcgAahBSGiAGQQA2AuADIAZCADcD2AMgBCgCbCIHIAQoAmgiCEcEQCAHIAhrIgpBiAFtQeLDhw9PDQcgBiAKEMQIIgQ2AtwDIAYgBDYC2AMgBiAEIApqNgLgAyAGIAggByAEEIkBNgLcAwsgBkHUNjYC+AEgBkGAAmogCUEIaiIKEFIaIAZBoAJqIAlBKGoiDBBSGiAGQcACaiAJQcgAaiINEFIaIAZBADYC6AIgBkIANwPgAiAJKAJsIgcgCSgCaCIIRwRAIAcgCGsiC0GIAW1B4sOHD08NCCAGIAsQxAgiBDYC5AIgBiAENgLgAiAGIAQgC2o2AugCIAYgCCAHIAQQiQE2AuQCCyAAIAEgAiAOIAZB8AJqIAZB+AFqEKYCIAZB1DY2AvgBIAYoAuACIgcEQCAHIQggByAGKALkAiIERwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAEIAdHDQALIAYoAuACIQgLIAYgBzYC5AIgBigC6AIaIAgQ8QMLIAZB1DY2AvACIAYoAtgDIgcEQCAHIQggByAGKALcAyIERwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAEIAdHDQALIAYoAtgDIQgLIAYgBzYC3AMgBigC4AMaIAgQ8QMLIAZB1DY2AoABIAZBiAFqIAoQUhogBkGoAWogDBBSGiAGQcgBaiANEFIaIAZBADYC8AEgBkIANwPoASAJKAJsIgcgCSgCaCIIRwRAIAcgCGsiCkGIAW1B4sOHD08NCSAGIAoQxAgiBDYC7AEgBiAENgLoASAGIAQgCmo2AvABIAYgCCAHIAQQiQE2AuwBCyAGQdQ2NgIIIAZBEGogBUEIahBSGiAGQTBqIAVBKGoQUhogBkHQAGogBUHIAGoQUhogBkEANgJ4IAZCADcDcCAFKAJsIgcgBSgCaCIFRwRAIAcgBWsiCEGIAW1B4sOHD08NCiAGIAgQxAgiBDYCdCAGIAQ2AnAgBiAEIAhqNgJ4IAYgBSAHIAQQiQE2AnQLIAAgASAOIAMgBkGAAWogBkEIahCmAiAGQdQ2NgIIIAYoAnAiAARAIAYoAnQiBCAAIgdHBEADQCAEQYgBayIEIAQoAgAoAgARAAAaIAAgBEcNAAsgBigCcCEHCyAGIAA2AnQgBigCeBogBxDxAwsgBkHUNjYCgAEgBigC6AEiAEUNASAGKALsASIEIAAiB0cEQANAIARBiAFrIgQgBCgCACgCABEAABogACAERw0ACyAGKALoASEHCyAGIAA2AuwBIAYoAvABGiAHEPEDDAELIAACfyAAKAJQIgQgACgCVEkEQCAEIAUQ+AEgBEH4AGoMAQsgAEHMAGogBRD5AQs2AlALIAlB1DY2AgAgCSgCaCIABEAgCSgCbCIEIAAiB0cEQANAIARBiAFrIgQgBCgCACgCABEAABogACAERw0ACyAJKAJoIQcLIAkgADYCbCAJKAJwGiAHEPEDCyAGQYAJaiQADwsQcwALEHMACxBzAAsQcwALEHMACxBzAAsQcwALEHMAC4ATAgh/AnwjAEGACWsiBiQAIAZByAdqIAEgAyACoUQAAAAAAADgP6IgAqAiDiABKAIAKAIIEQwAIAZByAdqIAZB4AhqIAYrA9AHIg8gACsDeCAAKwM4EFAgBkHACGogDyAAKwOAASAAKwM4EFAQjgIhCSAAKAIoKAIEIgcgCSAHKAIAKAIgEQIAAkACQAJAAkACQAJAAkACQAJAIAQrAxAgBSsDEKGZIg8gACsDCGQEQCAGQdQ2NgLQBiAGQdgGaiAEQQhqEFIaIAZB+AZqIARBKGoQUhogBkGYB2ogBEHIAGoQUhogBkEANgLAByAGQgA3A7gHIAQoAmwiByAEKAJoIghHBEAgByAIayIKQYgBbUHiw4cPTw0DIAYgChDECCIENgK8ByAGIAQ2ArgHIAYgBCAKajYCwAcgBiAIIAcgBBCJATYCvAcLIAZB1DY2AtgFIAZB4AVqIAlBCGoiChBSGiAGQYAGaiAJQShqIgwQUhogBkGgBmogCUHIAGoiDRBSGiAGQQA2AsgGIAZCADcDwAYgCSgCbCIHIAkoAmgiCEcEQCAHIAhrIgtBiAFtQeLDhw9PDQQgBiALEMQIIgQ2AsQGIAYgBDYCwAYgBiAEIAtqNgLIBiAGIAggByAEEIkBNgLEBgsgACABIAIgDiAGQdAGaiAGQdgFahCnAiAGQdQ2NgLYBSAGKALABiIHBEAgByEIIAcgBigCxAYiBEcEQANAIARBiAFrIgQgBCgCACgCABEAABogBCAHRw0ACyAGKALABiEICyAGIAc2AsQGIAYoAsgGGiAIEPEDCyAGQdQ2NgLQBiAGKAK4ByIHBEAgByEIIAcgBigCvAciBEcEQANAIARBiAFrIgQgBCgCACgCABEAABogBCAHRw0ACyAGKAK4ByEICyAGIAc2ArwHIAYoAsAHGiAIEPEDCyAGQdQ2NgLgBCAGQegEaiAKEFIaIAZBiAVqIAwQUhogBkGoBWogDRBSGiAGQQA2AtAFIAZCADcDyAUgCSgCbCIHIAkoAmgiCEcEQCAHIAhrIgpBiAFtQeLDhw9PDQUgBiAKEMQIIgQ2AswFIAYgBDYCyAUgBiAEIApqNgLQBSAGIAggByAEEIkBNgLMBQsgBkHUNjYC6AMgBkHwA2ogBUEIahBSGiAGQZAEaiAFQShqEFIaIAZBsARqIAVByABqEFIaIAZBADYC2AQgBkIANwPQBCAFKAJsIgcgBSgCaCIFRwRAIAcgBWsiCEGIAW1B4sOHD08NBiAGIAgQxAgiBDYC1AQgBiAENgLQBCAGIAQgCGo2AtgEIAYgBSAHIAQQiQE2AtQECyAAIAEgDiADIAZB4ARqIAZB6ANqEKcCIAZB1DY2AugDIAYoAtAEIgAEQCAGKALUBCIEIAAiB0cEQANAIARBiAFrIgQgBCgCACgCABEAABogACAERw0ACyAGKALQBCEHCyAGIAA2AtQEIAYoAtgEGiAHEPEDCyAGQdQ2NgLgBCAGKALIBSIARQ0BIAYoAswFIgQgACIHRwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAAIARHDQALIAYoAsgFIQcLIAYgADYCzAUgBigC0AUaIAcQ8QMMAQsgACAEIAkgBRCpAkUEQCAPIAArA4gBZEUNASAGQdQ2NgLwAiAGQfgCaiAEQQhqEFIaIAZBmANqIARBKGoQUhogBkG4A2ogBEHIAGoQUhogBkEANgLgAyAGQgA3A9gDIAQoAmwiByAEKAJoIghHBEAgByAIayIKQYgBbUHiw4cPTw0HIAYgChDECCIENgLcAyAGIAQ2AtgDIAYgBCAKajYC4AMgBiAIIAcgBBCJATYC3AMLIAZB1DY2AvgBIAZBgAJqIAlBCGoiChBSGiAGQaACaiAJQShqIgwQUhogBkHAAmogCUHIAGoiDRBSGiAGQQA2AugCIAZCADcD4AIgCSgCbCIHIAkoAmgiCEcEQCAHIAhrIgtBiAFtQeLDhw9PDQggBiALEMQIIgQ2AuQCIAYgBDYC4AIgBiAEIAtqNgLoAiAGIAggByAEEIkBNgLkAgsgACABIAIgDiAGQfACaiAGQfgBahCnAiAGQdQ2NgL4ASAGKALgAiIHBEAgByEIIAcgBigC5AIiBEcEQANAIARBiAFrIgQgBCgCACgCABEAABogBCAHRw0ACyAGKALgAiEICyAGIAc2AuQCIAYoAugCGiAIEPEDCyAGQdQ2NgLwAiAGKALYAyIHBEAgByEIIAcgBigC3AMiBEcEQANAIARBiAFrIgQgBCgCACgCABEAABogBCAHRw0ACyAGKALYAyEICyAGIAc2AtwDIAYoAuADGiAIEPEDCyAGQdQ2NgKAASAGQYgBaiAKEFIaIAZBqAFqIAwQUhogBkHIAWogDRBSGiAGQQA2AvABIAZCADcD6AEgCSgCbCIHIAkoAmgiCEcEQCAHIAhrIgpBiAFtQeLDhw9PDQkgBiAKEMQIIgQ2AuwBIAYgBDYC6AEgBiAEIApqNgLwASAGIAggByAEEIkBNgLsAQsgBkHUNjYCCCAGQRBqIAVBCGoQUhogBkEwaiAFQShqEFIaIAZB0ABqIAVByABqEFIaIAZBADYCeCAGQgA3A3AgBSgCbCIHIAUoAmgiBUcEQCAHIAVrIghBiAFtQeLDhw9PDQogBiAIEMQIIgQ2AnQgBiAENgJwIAYgBCAIajYCeCAGIAUgByAEEIkBNgJ0CyAAIAEgDiADIAZBgAFqIAZBCGoQpwIgBkHUNjYCCCAGKAJwIgAEQCAGKAJ0IgQgACIHRwRAA0AgBEGIAWsiBCAEKAIAKAIAEQAAGiAAIARHDQALIAYoAnAhBwsgBiAANgJ0IAYoAngaIAcQ8QMLIAZB1DY2AoABIAYoAugBIgBFDQEgBigC7AEiBCAAIgdHBEADQCAEQYgBayIEIAQoAgAoAgARAAAaIAAgBEcNAAsgBigC6AEhBwsgBiAANgLsASAGKALwARogBxDxAwwBCyAAAn8gACgCXCIEIAAoAmBJBEAgBCAFEPgBIARB+ABqDAELIABB2ABqIAUQ+QELNgJcCyAJQdQ2NgIAIAkoAmgiAARAIAkoAmwiBCAAIgdHBEADQCAEQYgBayIEIAQoAgAoAgARAAAaIAAgBEcNAAsgCSgCaCEHCyAJIAA2AmwgCSgCcBogBxDxAwsgBkGACWokAA8LEHMACxBzAAsQcwALEHMACxBzAAsQcwALEHMACxBzAAsMACAAEKUCIAAQmwILoQMBBX8jAEGAAmsiBCQAAkAgASgCbCIIIAEoAmgiB2siBiADKAJsIAMoAmhrRw0AIAYgAigCbCACKAJoa0cNACAHIAhGBEBBASEFDAELQQAhBgNAAkAgBEGgAWogASAHIAZBiAFsIgVqKwNYEJQCIARBgAFqIAIgAigCaCAFaisDWBCUAiAEQeAAaiADIAMoAmggBWorA1gQlAIgBEHgAWogBEGAAWogBEGgAWoQXiAEQcABaiAEQeAAaiAEQYABahBeIARB4AFqEFYgBEHAAWoQViAEQeABaiAEQcABahBVIAArA5ABZEUNACAEQUBrIAEgASgCaCAFaisDYBCUAiAEQSBqIAIgAigCaCAFaisDYBCUAiAEIAMgAygCaCAFaisDYBCUAiAEQeABaiAEQSBqIARBQGsQXiAEQcABaiAEIARBIGoQXiAEQeABahBWIARBwAFqEFYgBEHgAWogBEHAAWoQVSAAKwOQAWRFDQBBASEFIAZBAWoiBiABKAJsIAEoAmgiB2tBiAFtSQ0BDAILC0EAIQULIARBgAJqJAAgBQsbACAAIAE5AwggACABRAAAAAAAACRAozkDiAELzwEBAX8CQAJ/IAFByABqIgIrAxAQvAIEQEEBIAIrAxgQvAINARoLQQALRQ0AIAEoAmggASgCbEYNACAAKAI8IgIgACgCQEkEQCACIAEQ+AEgACACQfgAajYCPA8LIAAgAEE4aiABEPkBNgI8DwsCQAJ/IAIrAwgQvAIEQEEBIAIrAxgQvAINARoLQQALRQ0AIAEoAmggASgCbEYNACAAAn8gACgCSCICIAAoAkxJBEAgAiABEPgBIAJB+ABqDAELIABBxABqIAEQ+QELNgJICwukDAEOfyMAQSBrIgckAAJAAkACQCAAKAJYBEAgAEEsaiENIABB1ABqIQwDQCAHQQA2AhwgB0IANwIUIAAoAlAoAhAiDiEGA0ACQCAHKAIYIgEgBygCHCIFSQRAIAEgBjYCACABQQRqIQMMAQsgASAHKAIUIgRrQQJ1IgNBAWoiAkGAgICABE8NBCADQQJ0Qf////8DIAUgBGsiA0EBdSIFIAIgAiAFSRsgA0H8////B08bIgMEfyADQYCAgIAETw0GIANBAnQQxAgFQQALIgVqIgIgBjYCACAFIANBAnRqIQUgAkEEaiEDIAEgBEcEQANAIAJBBGsiAiABQQRrIgEoAgA2AgAgASAERw0ACyAHKAIcGiAHKAIUIQQLIAcgBTYCHCAHIAM2AhggByACNgIUIARFDQAgBBDxAwsgByADNgIYIAwiAigCACIFIQECQCAFRQ0AA0AgAiABIAEoAhAgBkkiBBshAiABIARBAnRqKAIAIgENAAsgAiAMRg0AIAYgAigCEEkNACACIQMCQCACKAIEIgQEQANAIAQiASgCACIEDQAMAgsACwNAIAMoAggiASgCACADRyEEIAEhAyAEDQALCyACIAAoAlBGBEAgACABNgJQCyAAIAAoAlhBAWs2AlggBSACEK0CIAIQ8QMLQQAhAyAHQQhqIgVBADYCCCAFQgA3AgACQAJAAkAgBiAGKAIEIgtHBEADQCALKAIMQRBqIQEgCygCCCEJAkAgBSgCCCIKIANLBEAgAyABNgIIIAMgCTYCBCADIAY2AgAgA0EMaiEDDAELIAMgBSgCACIIa0EMbSIEQQFqIgJB1qrVqgFPDQMgBEEMbEHVqtWqASAKIAhrQQxtIgRBAXQiCiACIAIgCkkbIARBqtWq1QBPGyIEBH8gBEHWqtWqAU8NBSAEQQxsEMQIBUEACyIKaiICIAE2AgggAiAJNgIEIAIgBjYCACAKIARBDGxqIQkgAiEBIAMgCEcEQANAIAFBDGsiASADQQxrIgMpAgA3AgAgASADKAIINgIIIAMgCEcNAAsgBSgCCBogBSgCACEICyACQQxqIQMgBSAJNgIIIAUgATYCACAIRQ0AIAgQ8QMLIAUgAzYCBCALKAIEIgsgBkcNAAsLDAILEHMACxB0AAsgBygCCCICIQEDQCABKAIEIQYgASgCCCEBIAYoAhgNAAsgByACNgIMIAcoAhAaIAIQ8QMgBiAORw0ACyAAAn8gACgCMCIBIAAoAjRJBEAgAUEANgIIIAFCADcCACAHKAIYIgYgBygCFCIERwRAIAYgBGsiBkEASA0HIAEgBhDECCICNgIEIAEgAjYCACABIAIgBmoiAzYCCCACIAQgBhDXAxogASADNgIECyABQQxqDAELAn8gB0EUaiEIQQAhBAJAAkAgDSIGKAIEIgIgBigCACIJa0EMbSIKQQFqIgFB1qrVqgFJBEBB1arVqgEgBigCCCAJa0EMbSIDQQF0IgUgASABIAVJGyADQarVqtUATxsiAwRAIANB1qrVqgFPDQIgA0EMbBDECCEECyAEIApBDGxqIgFBADYCCCABQgA3AgAgCCgCBCIFIAgoAgAiCkcEQCAFIAprIghBAEgNAyABIAgQxAgiBTYCACABIAUgCGoiCzYCCCAFIAogCBDXAxogASALNgIECyAEIANBDGxqIQUgAUEMaiEKAkAgAiAJRgRAIAEhAwwBCwNAIAFBBGsiCEEANgIAIAFBDGsiAyACQQxrIgQoAgA2AgAgAUEIayACQQhrKAIANgIAIAggAkEEayICKAIANgIAIAJBADYCACAEQgA3AgAgAyEBIAQiAiAJRw0ACyAGKAIIGiAGKAIEIQIgBigCACEJCyAGIAU2AgggBiAKNgIEIAYgAzYCACACIAlHBEADQCACQQxrIgEoAgAiBARAIAJBCGsgBDYCACACQQRrKAIAGiAEEPEDCyABIQIgASAJRw0ACwsgCQRAIAkQ8QMLIAoMAwsQcwALEHQACxBzAAsLNgIwIAcoAhQiAQRAIAcgATYCGCAHKAIcGiABEPEDCyAAKAJYDQALCyAHQSBqJAAPCxBzAAsQdAALEHMAC7MJAQZ/An8CQCABIgIoAgAiBARAIAIoAgQiA0UNAQNAIAMiAigCACIDDQALCyACKAIEIgQNACACKAIIIQVBACEEQQEMAQsgBCACKAIIIgU2AghBAAshBgJAIAIgBSgCACIDRgRAIAUgBDYCACAAIAJGBEBBACEDIAQhAAwCCyAFKAIEIQMMAQsgBSAENgIECyACLQAMIQcgASACRwRAIAIgASgCCCIFNgIIIAUgBSgCACABR0ECdGogAjYCACACIAEoAgAiBTYCACAFIAI2AgggAiABKAIEIgU2AgQgBQRAIAUgAjYCCAsgAiABLQAMOgAMIAIgACAAIAFGGyEACwJAIABFDQAgB0EBcUUNACAGBEADQCADLQAMIQECQCADIAMoAggiAigCACIERwRAIAFBAXFFBEAgA0EBOgAMIAJBADoADCACIAIoAgQiASgCACIENgIEIAQEQCAEIAI2AggLIAEgAigCCCIENgIIIAQgBCgCACACR0ECdGogATYCACABIAI2AgAgAiABNgIIIAMgACAAIAMoAgAiAkYbIQAgAigCBCEDCwJAAkACQAJAIAMoAgAiAgRAIAItAAxBAUcNAQsgAygCBCIBBEAgAS0ADEEBRw0CCyADQQA6AAwgACADKAIIIgNHBEAgAy0ADA0GCyADQQE6AAwPCyADKAIEIgFFDQELIAEtAAxBAUYNACADIQIMAQsgAkEBOgAMIANBADoADCADIAIoAgQiADYCACAABEAgACADNgIICyACIAMoAggiADYCCCAAIAAoAgAgA0dBAnRqIAI2AgAgAiADNgIEIAMgAjYCCCADIQELIAIgAigCCCIDLQAMOgAMIANBAToADCABQQE6AAwgAyADKAIEIgIoAgAiADYCBCAABEAgACADNgIICyACIAMoAggiADYCCCAAIAAoAgAgA0dBAnRqIAI2AgAgAiADNgIAIAMgAjYCCA8LIAFBAXFFBEAgA0EBOgAMIAJBADoADCACIAQoAgQiATYCACABBEAgASACNgIICyAEIAIoAggiATYCCCABIAEoAgAgAkdBAnRqIAQ2AgAgBCACNgIEIAIgBDYCCCADIAAgACADKAIEIgJGGyEAIAIoAgAhAwsCQAJAAkACQCADKAIAIgEEQCABLQAMIgJBAUcNAQsCQCADKAIEIgIEQCACLQAMQQFHDQELIANBADoADCADKAIIIgMtAAxBAUYgACADR3ENBSADQQE6AAwPCyABRQ0CIAEtAAxBAXENASADIQIMAwsgAg0AIAMhAgwCCyADKAIEIQILIAJBAToADCADQQA6AAwgAyACKAIAIgA2AgQgAARAIAAgAzYCCAsgAiADKAIIIgA2AgggACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCACADIAI2AgggAyEBCyACIAIoAggiAy0ADDoADCADQQE6AAwgAUEBOgAMIAMgAygCACICKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIIIgA2AgggACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCyADKAIIIgIgAigCACADRkECdGooAgAhAwwACwALIARBAToADAsLlwQBB38jAEEgayICJAAgAEEANgIIIABCADcCACABKAIsIgcgASgCMCIIRwRAA0AgAkEANgIcIAJCADcCFAJAIAcoAgQiBiAHKAIAIgRGBEAgAkEANgIQIAJCADcCCAwBCyAGIARrIgFBAEgEQBBzAAsgAiABEMQIIgM2AhQgAiABIANqIgU2AhwgAyAEIAEQ1wMaIAIgBTYCGEEAIQEgAkEANgIQIAJCADcCCCAEIAZGDQADQCADKAIAQSBqIQQgAgJ/IAIoAhAgAUsEQCABIAQQUkEgagwBCyACQQhqIAQQcgsiATYCDCADQQRqIgMgBUcNAAsLAkACQAJAIAACfyAAKAIEIgUgACgCCEkEQCAFQQA2AgggBUIANwIAIAIoAgwiBCACKAIIIgFHBEAgBCABayIGQQBIDQMgBSAGEMQIIgM2AgQgBSADNgIAIAUgAyAGajYCCANAIAMgARBSQSBqIQMgAUEgaiIBIARHDQALIAUgAzYCBAsgBUEMagwBCyAAIAJBCGoQrwILNgIEIAIoAggiAwRAIAMhBCADIAIoAgwiAUcEQANAIAFBIGsiASABKAIAKAIAEQAAGiABIANHDQALIAIoAgghBAsgAiADNgIMIAIoAhAaIAQQ8QMLIAIoAhQiAQ0BDAILEHMACyACIAE2AhggAigCHBogARDxAwsgB0EMaiIHIAhHDQALCyACQSBqJAALqAQBB38CQAJAIAAoAgQiAyAAKAIAIgRrQQxtIgVBAWoiAkHWqtWqAUkEQEHVqtWqASAAKAIIIARrQQxtIgZBAXQiCCACIAIgCEkbIAZBqtWq1QBPGyIGBEAgBkHWqtWqAU8NAiAGQQxsEMQIIQcLIAcgBUEMbGoiAkEANgIIIAJCADcCACABKAIEIgUgASgCACIBRwRAIAUgAWsiBEEASA0DIAIgBBDECCIDNgIEIAIgAzYCACACIAMgBGo2AggDQCADIAEQUkEgaiEDIAFBIGoiASAFRw0ACyACIAM2AgQgACgCACEEIAAoAgQhAwsgByAGQQxsaiEIIAJBDGohBgJAIAMgBEYEQCACIQUMAQsDQCACQQRrIgdBADYCACACQQxrIgVCADcCACAFIANBDGsiASgCADYCACACQQhrIANBCGsoAgA2AgAgByADQQRrIgIoAgA2AgAgAkEANgIAIAFCADcCACAFIQIgBCABIgNHDQALIAAoAgQhAyAAKAIAIQQLIAAgBjYCBCAAIAU2AgAgACgCCBogACAINgIIIAMgBEcEQANAIANBDGsiBSgCACIBBEAgASEHIAEgA0EIayIAKAIAIgJHBEADQCACQSBrIgIgAigCACgCABEAABogASACRw0ACyAFKAIAIQcLIAAgATYCACADQQRrKAIAGiAHEPEDCyAFIgMgBEcNAAsLIAQEQCAEEPEDCyAGDwsQcwALEHQACxBzAAuCKwJVfwR8IwBBkAFrIgskACAAKAI4IhYgACgCPCJJRwRAIABB1ABqISkgAEEQaiEqIABBBGohOANAIBYoAmgiFCAWKAJsIkpHBEADQCALQfAAaiAWIBQrA2AQlAIgCysDeCFYIAtB8ABqIBYgFCsDWBCUAgJAIAsrA3giWSBYZEUNACAUQQE6AGggC0HwAGogFiAUKwNgEJQCIAAgC0HwAGogFCALKwN4ELECIQ8gC0HQAGogFiAUKwNYEJQCIAAgC0HQAGogFCALKwNYELECIRBBNBDECCICQQA2AjAgAkEANgIkIAJBADYCGCACIBA2AgwgAiAPNgIIIAIgKjYCBCACIAAoAhAiATYCACABIAI2AgQgACACNgIQIAAgACgCGEEBajYCGEEQEMQIIgEgAjYCDCABIBA2AgggASAPNgIEIAEgDygCACIDNgIAIAMgATYCBCAPIAE2AgAgDyAPKAIIQQFqNgIIQRAQxAgiASACNgIMIAEgDzYCCCABIBBBDGo2AgQgASAQKAIMIgM2AgAgAyABNgIEIBAgATYCDCAQIBAoAhRBAWo2AhRBNBDECCIBQQA2AjAgAUEANgIkIAFBADYCGCABIA82AgwgASAQNgIIIAEgKjYCBCABIAI2AgAgAiABNgIEIAAgATYCECAAIAAoAhhBAWo2AhhBEBDECCIDIAE2AgwgAyAPNgIIIAMgEDYCBCADIBAoAgAiETYCACARIAM2AgQgECADNgIAIBAgECgCCEEBajYCCEEQEMQIIgMgATYCDCADIBA2AgggAyAPQQxqNgIEIAMgDygCDCIRNgIAIBEgAzYCBCAPIAM2AgwgDyAPKAIUQQFqNgIUIAIgAUEQaiIDNgIYIAIgDzYCFCACIBA2AhAgASACQRBqIhE2AhggASAQNgIUIAEgDzYCECACIAM2AiQgAiAPNgIgIAIgEDYCHCABIBE2AiQgASAQNgIgIAEgDzYCHCAAKAJEIhsgACgCSCJLRwRAIBRB/ABqIUwDQAJAIFggGysDECJWY0UNACBWIFljRQ0AIBsoAmgiDiAbKAJsIk1GDQADQCALQTBqIBsgDisDYBCUAiALKwNAIVcgC0EwaiAbIA4rA1gQlAICQCBXIBYrAxgiVmNFDQAgViALKwNAY0UNACAOLQBoRQRAIAtBMGogGyAOKwNgEJQCIAAgC0EwaiAOIAsrA0AQsQIaIAtBEGogGyAOKwNYEJQCIAAgC0EQaiAOIAsrAyAQsQIaIA5BAToAaCAWKwMYIVYLIAtBMGogGysDECBWIBYrAyAQUCEwAkACQCBMIgMoAgAiAgRAIAsrAzghVgNAIAMgAiACKwMYIFZjIgEbIQMgAiABQQJ0aigCACICDQALIAMoAgAiAg0BCyADIQIDQCACKAIIIgEoAgAgAkYhESABIQIgEQ0ACwwBCwNAIAIiASgCBCICDQALCyADKAIQIQIgCyABKAIQNgIMIAsgAjYCEAJAAkAgDkH8AGoiAygCACICBEAgCysDQCFWA0AgAyACIAIrAxggVmMiARshAyACIAFBAnRqKAIAIgINAAsgAygCACICDQELIAMhAgNAIAIoAggiASgCACACRiERIAEhAiARDQALDAELA0AgAiIBKAIEIgINAAsLIAMoAhAhAiALIAEoAhA2AgQgCyACNgIIQQAhDEEAIR5BACExQQAhMkEAITNBACE0QQAhNUEAITlBACE6QQAhO0EAITxBACE9QQAhPkEAIT9BACFAQdgAEMQIIgFBADYCFCABQQA2AgggASABQQxqIg02AhAgASANNgIMIAEgATYCBCABIAE2AgAgAUEgahBPIQMgAUIANwJEIAFB3JICKAIAIgU2AkBB3JICIAVBAWo2AgAgAUEANgJQQQwQxAgiBSAAIgJBHGo2AgQgBSABNgIIIAUgAigCHCIENgIAIAQgBTYCBCACIAU2AhwgAiACKAIkQQFqNgIkIAEgBTYCUCADIDAQaCABQQQ2AhggC0EQaiIrKAIAIQQCQCALQQxqIjYoAgAiBSgCBCIDIAVGDQADQCADKAIIIARGDQEgAygCBCIDIAVHDQALCyADIAVHBEAgAygCDEEQaiEMCyALQQRqISMgC0EIaiEkAkAgBCgCBCIDIARGDQADQCADKAIIIAVGDQEgAygCBCIDIARHDQALCyADKAIMIgNBEGohFyAMKAIUIR8gDCgCECElIAwoAgwhJiAMKAIIISAgDCgCBCEnIAwoAgAhKCADKAIkISEgAygCICEsIAMoAhwhLSADKAIYISIgAygCFCE3IAMoAhAhEQJ/AkAgIygCACIEKAIEIgYgBEYNACAkKAIAIQcgBiEDA0AgByADKAIIRwRAIAQgAygCBCIDRw0BDAILCyADIARGDQADQCAHIAYoAghHBEAgBigCBCIGIARHDQELCyAEIAZGBH9BAAUgBigCDEEQagshHgJAIAcoAgQiAyAHRg0AA0AgAygCCCAERg0BIAMoAgQiAyAHRw0ACwsgAygCDCIDQRBqITEgHigCFCEyIB4oAhAhOSAeKAIMITogHigCCCEzIB4oAgQhOyAeKAIAITwgAygCJCE0IAMoAiAhPSADKAIcIT4gAygCFCE/IAMoAhAhQEEBITUgAygCGAwBC0EACyFBIAJBBGohLkE0EMQIIgNBADYCMCADQQA2AiQgA0EANgIYIAMgATYCDCADIAU2AgggAyACQRBqIhM2AgQgAyACKAIQIgQ2AgAgBCADNgIEIAIgAzYCECACIAIoAhhBAWo2AhhBEBDECCIEIAM2AgwgBCABNgIIIAQgBTYCBCAEIAUoAgAiBzYCACAHIAQ2AgQgBSAENgIAIAUgBSgCCEEBajYCCEEQEMQIIgQgAzYCDCAEIAU2AgggBCANNgIEIAQgASgCDCIHNgIAIAcgBDYCBCABIAQ2AgwgASABKAIUQQFqNgIUICMoAgAhGEE0EMQIIgRBADYCMCAEQQA2AiQgBEEANgIYIAQgGDYCDCAEIAE2AgggBCATNgIEIAQgAzYCACADIAQ2AgQgAiAENgIQIAIgAigCGEEBajYCGEEQEMQIIgcgBDYCDCAHIBg2AgggByABNgIEIAcgASgCACIGNgIAIAYgBzYCBCABIAc2AgAgASABKAIIQQFqNgIIQRAQxAgiByAENgIMIAcgATYCCCAHIBhBDGo2AgQgByAYKAIMIgY2AgAgBiAHNgIEIBggBzYCDCAYIBgoAhRBAWo2AhQgIygCACEZQTQQxAgiB0EANgIwIAdBADYCJCAHQQA2AhggByABNgIMIAcgGTYCCCAHIBM2AgQgByAENgIAIAQgBzYCBCACIAc2AhAgAiACKAIYQQFqNgIYQRAQxAgiBiAHNgIMIAYgATYCCCAGIBk2AgQgBiAZKAIAIgg2AgAgCCAGNgIEIBkgBjYCACAZIBkoAghBAWo2AghBEBDECCIGIAc2AgwgBiAZNgIIIAYgDTYCBCAGIAEoAgwiCDYCACAIIAY2AgQgASAGNgIMIAEgASgCFEEBajYCFCArKAIAIRxBNBDECCIGQQA2AjAgBkEANgIkIAZBADYCGCAGIBw2AgwgBiABNgIIIAYgEzYCBCAGIAc2AgAgByAGNgIEIAIgBjYCECACIAIoAhhBAWo2AhhBEBDECCIIIAY2AgwgCCAcNgIIIAggATYCBCAIIAEoAgAiCTYCACAJIAg2AgQgASAINgIAIAEgASgCCEEBajYCCEEQEMQIIgggBjYCDCAIIAE2AgggCCAcQQxqNgIEIAggHCgCDCIJNgIAIAkgCDYCBCAcIAg2AgwgHCAcKAIUQQFqNgIUICsoAgAhHUE0EMQIIghBADYCMCAIQQA2AiQgCEEANgIYIAggATYCDCAIIB02AgggCCATNgIEIAggBjYCACAGIAg2AgQgAiAINgIQIAIgAigCGEEBajYCGEEQEMQIIgkgCDYCDCAJIAE2AgggCSAdNgIEIAkgHSgCACIKNgIAIAogCTYCBCAdIAk2AgAgHSAdKAIIQQFqNgIIQRAQxAgiCSAINgIMIAkgHTYCCCAJIA02AgQgCSABKAIMIgo2AgAgCiAJNgIEIAEgCTYCDCABIAEoAhRBAWo2AhQgJCgCACEaQTQQxAgiCUEANgIwIAlBADYCJCAJQQA2AhggCSAaNgIMIAkgATYCCCAJIBM2AgQgCSAINgIAIAggCTYCBCACIAk2AhAgAiACKAIYQQFqNgIYQRAQxAgiCiAJNgIMIAogGjYCCCAKIAE2AgQgCiABKAIAIhU2AgAgFSAKNgIEIAEgCjYCACABIAEoAghBAWo2AghBEBDECCIKIAk2AgwgCiABNgIIIAogGkEMajYCBCAKIBooAgwiFTYCACAVIAo2AgQgGiAKNgIMIBogGigCFEEBajYCFCAkKAIAIRVBNBDECCIKQQA2AjAgCkEANgIkIApBADYCGCAKIAE2AgwgCiAVNgIIIAogEzYCBCAKIAk2AgAgCSAKNgIEIAIgCjYCECACIAIoAhhBAWo2AhhBEBDECCISIAo2AgwgEiABNgIIIBIgFTYCBCASIBUoAgAiLzYCACAvIBI2AgQgFSASNgIAIBUgFSgCCEEBajYCCEEQEMQIIhIgCjYCDCASIBU2AgggEiANNgIEIBIgASgCDCINNgIAIA0gEjYCBCABIBI2AgwgASABKAIUQQFqNgIUIDYoAgAhEkE0EMQIIg1BADYCMCANQQA2AiQgDUEANgIYIA0gEjYCDCANIAE2AgggDSATNgIEIA0gCjYCACAKIA02AgQgAiANNgIQIAIgAigCGEEBajYCGEEQEMQIIgIgDTYCDCACIBI2AgggAiABNgIEIAIgASgCACITNgIAIBMgAjYCBCABIAI2AgAgASABKAIIQQFqNgIIQRAQxAgiAiANNgIMIAIgATYCCCACIBJBDGo2AgQgAiASKAIMIhM2AgAgEyACNgIEIBIgAjYCDCASIBIoAhRBAWo2AhQgA0EQaiIvICIgDCAiRiICGyEiIAZBEGoiQiAhIAwgIUYiDBshISAIQRBqIkMgICAXICBGIhMbISAgDUEQaiJEIB8gFyAfRiIXGyEfIAEgNyACGyFOIAUgESACGyFPIAEgLSAMGyFQIAEgJyATGyFRIAEgJiAXGyFSIBwgLCAMGyFTIB0gKCATGyFUIBIgJSAXGyFVIAEhLCAaIS0gCUEQaiIlIQIgASERIAdBEGoiKCEMIAEhRSAYIUYgBEEQaiImIRMgFSFHIAEhSCAKQRBqIichFwJ/IBkgNUUNABogJSA0IB4gNEYiDBshAiAaID0gDBshLSABID4gDBshLCAnIDMgMSAzRiIMGyEXIAEgOyAMGyFIIBUgPCAMGyFHICYgMiAxIDJGIgwbIRMgGCA5IAwbIUYgASA6IAwbIUUgHiBBRwRAID8hESBBIQwgQAwBCyAoIQwgGQshNyAfIC82AgggHyABNgIEIB8gBTYCACADIB82AiQgAyBVNgIgIAMgUjYCHCADICY2AhggAyAYNgIUIAMgATYCECAEIC82AiQgBCABNgIgIAQgBTYCHCAEIAw2AhggBCARNgIUIAQgNzYCECAMICY2AhQgDCAYNgIQIAwgATYCDCATICg2AgggEyABNgIEIBMgGTYCACAHIBM2AiQgByBGNgIgIAcgRTYCHCAHIEI2AhggByAcNgIUIAcgATYCECAGICg2AiQgBiABNgIgIAYgGTYCHCAGICA2AhggBiBRNgIUIAYgVDYCECAgIEI2AhQgICAcNgIQICAgATYCDCAhIEM2AgggISABNgIEICEgHTYCACAIICE2AiQgCCBTNgIgIAggUDYCHCAIICU2AhggCCAaNgIUIAggATYCECAJIEM2AiQgCSABNgIgIAkgHTYCHCAJIBc2AhggCSBINgIUIAkgRzYCECAXICU2AhQgFyAaNgIQIBcgATYCDCACICc2AgggAiABNgIEIAIgFTYCACAKIAI2AiQgCiAtNgIgIAogLDYCHCAKIEQ2AhggCiASNgIUIAogATYCECANICc2AiQgDSABNgIgIA0gFTYCHCANICI2AhggDSBONgIUIA0gTzYCECAiIEQ2AhQgIiASNgIQICIgATYCDCAuIDYoAgAgKygCABC0AiAuICsoAgAgNigCABC0AiA1BEAgLiAjKAIAICQoAgAQtAIgLiAkKAIAICMoAgAQtAILIDArAwghVgJAAkAgFCgCfCIFRQRAIBRB/ABqIgMhAgwBCwNAIAUiAisDGCJXIFZkBEAgAiEDIAIoAgAiBQ0BDAILIFYgV2RFDQIgAigCBCIFDQALIAJBBGohAwtBIBDECCIFIFY5AxggBSABNgIQIAUgAjYCCCAFQgA3AgAgAyAFNgIAIBQoAngoAgAiAgRAIBQgAjYCeCADKAIAIQULIBQoAnwgBRCcASAUIBQoAoABQQFqNgKAAQsgMCsDECFWAkACQCAOKAJ8IgVFBEAgDkH8AGoiAyECDAELA0AgBSICKwMYIlcgVmQEQCACIQMgAigCACIFDQEMAgsgViBXZEUNAiACKAIEIgUNAAsgAkEEaiEDC0EgEMQIIgUgVjkDGCAFIAE2AhAgBSACNgIIIAVCADcCACADIAU2AgAgDigCeCgCACIBBEAgDiABNgJ4IAMoAgAhBQsgDigCfCAFEJwBIA4gDigCgAFBAWo2AoABCwsgDkGIAWoiDiBNRw0ACwsgG0H4AGoiGyBLRw0ACwsgFCgCgAFBAkcNACApIgEoAgAiDiECAkAgDkUNAANAIAEgAiACKAIQIA9JIgMbIQEgAiADQQJ0aigCACICDQALAkAgASApRg0AIA8gASgCEEkNACABIRECQCABKAIEIgMEQANAIAMiAigCACIDDQAMAgsACwNAIBEoAggiAigCACARRyEDIAIhESADDQALCyABIAAoAlBGBEAgACACNgJQCyAAIAAoAlhBAWs2AlggDiABEK0CIAEQ8QMgACgCVCEOCyApIQEgDiICRQ0AA0AgASACIAIoAhAgEEkiAxshASACIANBAnRqKAIAIgINAAsgASApRg0AIBAgASgCEEkNACABIRECQCABKAIEIgMEQANAIAMiAigCACIDDQAMAgsACwNAIBEoAggiAigCACARRyEDIAIhESADDQALCyABIAAoAlBGBEAgACACNgJQCyAAIAAoAlhBAWs2AlggDiABEK0CIAEQ8QMLIA8gKhCyAiAQICoQsgIgOCAPELMCIDggEBCzAgsgFEGIAWoiFCBKRw0ACwsgFkH4AGoiFiBJRw0ACwsgC0GQAWokAAuZBAIEfwF8QdgAEMQIIgVBADYCFCAFQQA2AgggBSAFQQxqIgQ2AhAgBSAENgIMIAUgBTYCBCAFIAU2AgAgBUEgahBPIQYgBUIANwJEIAVB3JICKAIAIgQ2AkBB3JICIARBAWo2AgAgBUEANgJQQQwQxAgiBCAAQRxqNgIEIAQgBTYCCCAEIAAoAhwiBzYCACAHIAQ2AgQgACAENgIcIAAgACgCJEEBajYCJCAFIAQ2AlAgBiABEGggBUEANgIYAkACQCACKAJ8IgFFBEAgAkH8AGoiBiEEDAELA0AgAyABIgQrAxgiCGMEQCAEIQYgBCgCACIBDQEMAgsgAyAIZEUNAiAEKAIEIgENAAsgBEEEaiEGC0EgEMQIIgEgAzkDGCABIAU2AhAgASAENgIIIAFCADcCACAGIAE2AgAgAigCeCgCACIEBEAgAiAENgJ4IAYoAgAhAQsgAigCfCABEJwBIAIgAigCgAFBAWo2AoABCwJAAkAgACgCVCIBRQRAIABB1ABqIgYhBAwBCwNAIAEiBCgCECIBIAVLBEAgBCEGIAQoAgAiAQ0BDAILIAEgBU8NAiAEKAIEIgENAAsgBEEEaiEGC0EUEMQIIgEgBDYCCCABQgA3AgAgASAFNgIQIAYgATYCACAAKAJQKAIAIgQEQCAAIAQ2AlAgBigCACEBCyAAKAJUIAEQnAEgACAAKAJYQQFqNgJYCyAFC8YFAQZ/IAAgACgCBCIGRwRAA0ACQCAGKAIIIgUoAhRFDQACQCAFKAIQIgIgBUEMaiIERg0AA0AgAigCCCAARg0BIAIoAgQiAiAERw0ACwsCQCACIARGDQAgAigCBCIDIARGDQADQCAAIAMoAghHBEAgAiADKQIINwIIIAIoAgQhAgsgAygCBCIDIARHDQALCyACIARGDQAgAigCACIDIAQoAgAoAgQiBzYCBCAHIAM2AgADQCACKAIEIQMgBSAFKAIUQQFrNgIUIAIQ8QMgAyICIARHDQALCyAGKAIMIgIoAgAiAyACKAIEIgQ2AgQgBCADNgIAIAEgASgCCEEBazYCCCACEPEDIAYoAgQiBiAARw0ACwsgACgCECIFIABBDGoiBkcEQANAAkAgBSgCCCIDKAIIRQ0AAkAgAygCBCICIANGDQADQCACKAIIIABGDQEgAigCBCICIANHDQALCwJAIAIgA0YNACACKAIEIgQgA0YNAANAIAAgBCgCCEcEQCACIAQpAgg3AgggAigCBCECCyAEKAIEIgQgA0cNAAsLIAIgA0YNACACKAIAIgQgAygCACgCBCIHNgIEIAcgBDYCAANAIAIoAgQhBCADIAMoAghBAWs2AgggAhDxAyADIAQiAkcNAAsLIAUoAgwiAigCACIDIAIoAgQiBDYCBCAEIAM2AgAgASABKAIIQQFrNgIIIAIQ8QMgBSgCBCIFIAZHDQALCwJAIAAoAghFDQAgACgCBCICKAIAIgMgACgCACgCBCIENgIEIAQgAzYCACAAQQA2AgggACACRg0AA0AgAigCBCEDIAIQ8QMgAyICIABHDQALCwJAIAAoAhRFDQAgACgCECICKAIAIgMgACgCDCgCBCIENgIEIAQgAzYCACAAQQA2AhQgAiAGRg0AA0AgAigCBCEDIAIQ8QMgAyICIAZHDQALCwvfAQEDfyABKAJQIgIoAgAiAyACKAIEIgQ2AgQgBCADNgIAIAAgACgCIEEBazYCICACEPEDAkAgASgCFEUNACABKAIQIgAoAgAiAiABKAIMKAIEIgM2AgQgAyACNgIAIAFBADYCFCAAIAFBDGoiA0YNAANAIAAoAgQhAiAAEPEDIAMgAiIARw0ACwsCQCABKAIIRQ0AIAEoAgQiACgCACICIAEoAgAoAgQiAzYCBCADIAI2AgAgAUEANgIIIAAgAUYNAANAIAAoAgQhAiAAEPEDIAIiACABRw0ACwsgARDxAwuyBAEGfyAAQQxqIQYgAiEAIAEgASgCBCIDRwRAA0ACQCADKAIIIABHDQAgAygCDCEEIAEgAygCBCIFRwRAIAUoAgwhBSAEKAIAIgcgBCgCBCIINgIEIAggBzYCACAGIAYoAghBAWs2AgggBBDxAyAEIAVHDQEgAygCBCEDDAELIAQoAgAiBSAEKAIEIgc2AgQgByAFNgIAIAYgBigCCEEBazYCCCAEEPEDCyADKAIEIgMgAUcNAAsLAkAgASgCCEUNAAJAIAEoAgQiAyABRg0AA0AgAygCCCAARg0BIAMoAgQiAyABRw0ACwsCQCABIANGDQAgAygCBCIEIAFGDQADQCAAIAQoAghHBEAgAyAEKQIINwIIIAMoAgQhAwsgBCgCBCIEIAFHDQALCyABIANGDQAgAygCACIAIAEoAgAoAgQiBDYCBCAEIAA2AgADQCADKAIEIQAgASABKAIIQQFrNgIIIAMQ8QMgACIDIAFHDQALCwJAIAIoAhRFDQACQCACKAIQIgAgAkEMaiIERg0AA0AgACgCCCABRg0BIAAoAgQiACAERw0ACwsCQCAAIARGDQAgACgCBCIDIARGDQADQCABIAMoAghHBEAgACADKQIINwIIIAAoAgQhAAsgAygCBCIDIARHDQALCyAAIARGDQAgACgCACIDIAQoAgAoAgQiATYCBCABIAM2AgADQCAAKAIEIQMgAiACKAIUQQFrNgIUIAAQ8QMgAyIAIARHDQALCwsKACAAEJ0CEPEDC740AhF/AXwjAEEQayIOJAAjAEHQAGsiCSQAIAAoAjgiCCAAKAI8IgJJBEADQCAIKAJoIgYgCCgCbEkEQANAIAAoAkQhAiAJQQA2AkwgAiAJQcwAaiAGIAgQuQIhBAJAIAIgACgCSCIBTyIDDQAgBA0AA0BBACEEIAEgAkH4AGoiAksEQCACIAlBzABqIAYgCBC5AiEEIAAoAkghAQsgASACTSIDDQEgBEUNAAsLAkAgAw0AIAlBKGogCCAGKwNgEJQCIAAgCUEoaiAGIAkrAzAQsQIaIAlBCGogCCAGKwNYEJQCIAAgCUEIaiAGIAkrAxAQsQIaIAAgCCACIAYgCSgCTCIHQQQQuAIaIAZB8ABqIgMhBSADIQECQAJAIAYoAnAiBEUNAANAIAQiASgCECIEIAJLBEAgASEFIAEoAgAiBA0BDAILIAIgBE0NAiABKAIEIgQNAAsgAUEEaiEFC0EUEMQIIgQgATYCCCAEQgA3AgAgBCACNgIQIAUgBDYCACAGKAJsKAIAIgEEQCAGIAE2AmwgBSgCACEECyAGKAJwIAQQnAEgBiAGKAJ0QQFqNgJ0IAkoAkwhBwsCQAJAIAcoAnAiBEUEQCAHQfAAaiIFIQEMAQsDQCAEIgEoAhAiBCAISwRAIAEhBSABKAIAIgQNAQwCCyAEIAhPDQIgASgCBCIEDQALIAFBBGohBQtBFBDECCIEIAE2AgggBEIANwIAIAQgCDYCECAFIAQ2AgAgBygCbCgCACIBBEAgByABNgJsIAUoAgAhBAsgBygCcCAEEJwBIAcgBygCdEEBajYCdAsgAiAJQcwAaiAGIAgQuQIhBAJAIAIgACgCSCIBTw0AIARFDQADQEEBIQQgASACQfgAaiICSwRAIAIgCUHMAGogBiAIELkCIQQgACgCSCEBCyABIAJNDQEgBA0ACwsgACAIIAJB+ABrIgQgBiAJKAJMIgVBBBC4AhogAyECAkACQCAGKAJwIgFFDQADQCABIgIoAhAiASAESwRAIAIhAyACKAIAIgENAQwCCyABIARPDQIgAigCBCIBDQALIAJBBGohAwtBFBDECCIBIAI2AgggAUIANwIAIAEgBDYCECADIAE2AgAgBigCbCgCACICBEAgBiACNgJsIAMoAgAhAQsgBigCcCABEJwBIAYgBigCdEEBajYCdCAJKAJMIQULAkAgBSgCcCIBRQRAIAVB8ABqIgQhAgwBCwNAIAEiAigCECIBIAhLBEAgAiEEIAIoAgAiAQ0BDAILIAEgCE8NAiACKAIEIgENAAsgAkEEaiEEC0EUEMQIIgEgAjYCCCABQgA3AgAgASAINgIQIAQgATYCACAFKAJsKAIAIgIEQCAFIAI2AmwgBCgCACEBCyAFKAJwIAEQnAEgBSAFKAJ0QQFqNgJ0CyAGQYgBaiIGIAgoAmxJDQALIAAoAjwhAgsgCEH4AGoiCCACSQ0ACwsgCUHQAGokACMAQdAAayIJJAAgACgCRCIGIAAoAkgiAkkEQANAIAYoAmgiBSAGKAJsSQRAA0AgACgCOCECIAlBADYCTCACIAlBzABqIAUgBhC3AiEDAkAgAiAAKAI8IgFPIgQNACADDQADQEEAIQMgASACQfgAaiICSwRAIAIgCUHMAGogBSAGELcCIQMgACgCPCEBCyABIAJNIgQNASADRQ0ACwsCQCAEDQAgCUEoaiAGIAUrA2AQlAIgACAJQShqIAUgCSsDOBCxAhogCUEIaiAGIAUrA1gQlAIgACAJQQhqIAUgCSsDGBCxAhoCQCAAIAIgBiAJKAJMIgggBUEEELgCRQ0AAkACQCAIKAJwIgNFBEAgCEHwAGoiBCEBDAELA0AgAyIBKAIQIgMgBksEQCABIQQgASgCACIDDQEMAgsgAyAGTw0CIAEoAgQiAw0ACyABQQRqIQQLQRQQxAgiAyABNgIIIANCADcCACADIAY2AhAgBCADNgIAIAgoAmwoAgAiAQRAIAggATYCbCAEKAIAIQMLIAgoAnAgAxCcASAIIAgoAnRBAWo2AnQLAkAgBSgCcCIDRQRAIAVB8ABqIgQhAQwBCwNAIAMiASgCECIDIAJLBEAgASEEIAEoAgAiAw0BDAILIAIgA00NAiABKAIEIgMNAAsgAUEEaiEEC0EUEMQIIgMgATYCCCADQgA3AgAgAyACNgIQIAQgAzYCACAFKAJsKAIAIgEEQCAFIAE2AmwgBCgCACEDCyAFKAJwIAMQnAEgBSAFKAJ0QQFqNgJ0CyACIAlBzABqIAUgBhC3AiEDAkAgAiAAKAI8IgFPDQAgA0UNAANAQQEhAyABIAJB+ABqIgJLBEAgAiAJQcwAaiAFIAYQtwIhAyAAKAI8IQELIAEgAk0NASADDQALCyAAIAJB+ABrIgMgBiAJKAJMIAVBBBC4AkUNAAJAAkAgCSgCTCIIKAJwIgFFBEAgCEHwAGoiBCECDAELA0AgASICKAIQIgEgBksEQCACIQQgAigCACIBDQEMAgsgASAGTw0CIAIoAgQiAQ0ACyACQQRqIQQLQRQQxAgiASACNgIIIAFCADcCACABIAY2AhAgBCABNgIAIAgoAmwoAgAiAgRAIAggAjYCbCAEKAIAIQELIAgoAnAgARCcASAIIAgoAnRBAWo2AnQLAkAgBSgCcCIBRQRAIAVB8ABqIgQhAgwBCwNAIAEiAigCECIBIANLBEAgAiEEIAIoAgAiAQ0BDAILIAEgA08NAiACKAIEIgENAAsgAkEEaiEEC0EUEMQIIgEgAjYCCCABQgA3AgAgASADNgIQIAQgATYCACAFKAJsKAIAIgIEQCAFIAI2AmwgBCgCACEBCyAFKAJwIAEQnAEgBSAFKAJ0QQFqNgJ0CyAFQYgBaiIFIAYoAmxJDQALIAAoAkghAgsgBkH4AGoiBiACSQ0ACwsgCUHQAGokACAAKAI4IgQgACgCPCIJRwRAA0AgBCgCaCIIIAQoAmwiBUkEQANAAkAgCCgCdEECSQ0AIAgoAmwiBiECAkAgBigCBCIDBEADQCADIgEoAgAiAw0ADAILAAsDQCACKAIIIgEoAgAgAkchAyABIQIgAw0ACwsgASAIQfAAaiIHRg0AA0ACQCABIgUoAhAgBigCECIDa0H5AEgNACAAIAQgAygC4AEiASADKALkAUkEfyADQfgAaiECA0AgBCAOQQxqIAEgAhC3AkUEQCABQYgBaiIBIAMoAuQBSQ0BCwsgBigCEAUgAwtB+ABqIAggAUEFELgCGiAFKAIQIgIgBigCEGtB8QFIDQAgACAEIAJBEGsoAgAiASACQQxrIgMoAgBJBH8gAkH4AGshAgNAIAQgDkEMaiABIAIQtwJFBEAgAUGIAWoiASADKAIASQ0BCwsgBSgCEAUgAgtB+ABrIAggAUEFELgCGgsCQCAFIgIoAgQiAwRAA0AgAyIBKAIAIgMNAAwCCwALA0AgAigCCCIBKAIAIAJHIQMgASECIAMNAAsLIAUhBiABIAdHDQALIAQoAmwhBQsgCEGIAWoiCCAFSQ0ACwsgBEH4AGoiBCAJRw0ACwsgACgCRCIFIAAoAkgiCUcEQANAIAUoAmgiCCAFKAJsIgJJBEADQAJAIAgoAnRBAkkNACAIKAJsIgYhAwJAIAYoAgQiAQRAA0AgASIEKAIAIgENAAwCCwALA0AgAygCCCIEKAIAIANHIQEgBCEDIAENAAsLIAQgCEHwAGoiB0YNAANAAkAgBCgCECAGKAIQIgNrQfkASA0AIAAgAygC4AEiASADKALkAUkEfyADQfgAaiECA0AgBSAOQQxqIAEgAhC5AkUEQCABQYgBaiIBIAMoAuQBSQ0BCwsgBigCEAUgAwtB+ABqIAUgASAIQQUQuAIaIAQoAhAiAiAGKAIQa0HxAUgNACAAIAJBEGsoAgAiASACQQxrIgMoAgBJBH8gAkH4AGshAgNAIAUgDkEMaiABIAIQuQJFBEAgAUGIAWoiASADKAIASQ0BCwsgBCgCEAUgAgtB+ABrIAUgASAIQQUQuAIaCwJAIAQiAigCBCIDBEADQCADIgEoAgAiAw0ADAILAAsDQCACKAIIIgEoAgAgAkchAyABIQIgAw0ACwsgBCEGIAEhBCABIAdHDQALIAUoAmwhAgsgCEGIAWoiCCACSQ0ACwsgBUH4AGoiBSAJRw0ACwsjAEEwayIHJABBACEEIAdBJGoiBUEANgIIIAVCADcCAAJAAkACQCAAIglBBGoiASgCHCIIIAFBGGoiCkcEQANAAkAgBSgCCCIDIARLBEAgBCAIKAIINgIAIARBBGohBAwBCyAEIAUoAgAiBmtBAnUiAkEBaiIBQYCAgIAETw0DIAJBAnRB/////wMgAyAGayIDQQF1IgIgASABIAJJGyADQfz///8HTxsiAQR/IAFBgICAgARPDQUgAUECdBDECAVBAAsiA2oiAiAIKAIINgIAIAMgAUECdGohAyACIQEgBCAGRwRAA0AgAUEEayIBIARBBGsiBCgCADYCACAEIAZHDQALIAUoAggaIAUoAgAhBgsgAkEEaiEEIAUgAzYCCCAFIAE2AgAgBkUNACAGEPEDCyAFIAQ2AgQgCCgCBCIIIApHDQALCwwCCxBzAAsQdAALAkACQAJAAkACQCAHKAIkIgwgBygCKCIRRwRAIABBEGohEANAAkAgDCgCACIGKAIYQX5xQQRHDQAgB0EANgIgIAdCADcCGCAHQQA2AhQgB0IANwIMIAdBADYCCCAHQgA3AgAgBigCRCIBQfwAaiECIAEoAnwiAQRAIAYrAyghEgNAIAIgASABKwMYIBJjIgAbIQIgASAAQQJ0aigCACIBDQALCwJAIAIoAgQiAQRAA0AgASIEKAIAIgENAAsgBCEAA0AgACgCCCIBKAIAIgIgAEYhAyABIQAgAw0ACwwBCwNAIAIoAggiBCgCACIAIAJHIQEgBCECIAENAAsDQCAAIgEoAgQiAA0ACyABKAIAIQILAkAgAgRAA0AgAiIFKAIEIgINAAwCCwALA0AgASgCCCIFKAIAIAFGIQIgBSEBIAINAAsLIAYoAkgiAUH8AGohAiABKAJ8IgEEQCAGKwMwIRIDQCACIAEgASsDGCASYyIAGyECIAEgAEECdGooAgAiAQ0ACwsCQCACKAIEIgEEQANAIAEiAygCACIBDQALIAMhAANAIAAoAggiASgCACICIABGIQYgASEAIAYNAAsMAQsDQCACKAIIIgMoAgAiACACRyEBIAMhAiABDQALA0AgACIBKAIEIgANAAsgASgCACECCyAFKAIQIQUgBCgCECEEAkAgAgRAA0AgAiIAKAIEIgINAAwCCwALA0AgASgCCCIAKAIAIAFGIQIgACEBIAINAAsLIAAoAhAhBiADKAIQIQJBCBDECCIBIAU2AgAgASACNgIEIAcgAUEIaiICNgIgIAcgAjYCHCAHIAE2AhhBEBDECCICIAQ2AgggAiABKAIENgIEIAIgASgCADYCACAHIAJBDGoiATYCHCAHKAIgGiAHIAJBEGoiBDYCICAHKAIYIQAgByACNgIYIAAEQCAAEPEDIAcoAiAhBAsgByABNgIcAkAgASAESQRAIAIgBjYCDCACQRBqIQMMAQsgASAHKAIYIgBrQQJ1IghBAWoiAkGAgICABE8NB0H/////AyAEIABrIgNBAXUiBSACIAIgBUkbIANB/P///wdPGyIDBH8gA0GAgICABE8NBSADQQJ0EMQIBUEACyIFIAhBAnRqIgIgBjYCACAFIANBAnRqIQUgAkEEaiEDIAAgAUcEQANAIAJBBGsiAiABQQRrIgEoAgA2AgAgACABRw0ACyAHKAIgGiAHKAIYIQALIAcgBTYCICAHIAM2AhwgByACNgIYIABFDQAgABDxAwsgByADNgIcIAMgBygCGCIPSwRAA0AgDCgCACEEIA8oAgAiACgCBCICIQECQAJAIAAgAkYNAANAIAQgASgCCEcEQCABKAIEIgEgAEcNAQwCCwsgACABRg0AA0AgBCACKAIIRwRAIAIoAgQiAiAARw0BCwsgACACRgR/QQAFIAIoAgxBEGoLIQ0CQCAEKAIEIgEgBEYNAANAIAEoAgggAEYNASABKAIEIgEgBEcNAAsLIAEgBEYEf0EABSABKAIMQRBqCyEFAkACQAJAIAcoAhAiASAHKAIUIghJBEAgASANNgIIIAEgBDYCBCABIAA2AgAgAUEMaiEGDAELIAEgBygCDCIDa0EMbSILQQFqIgJB1qrVqgFPDQFB1arVqgEgCCADa0EMbSIGQQF0IgogAiACIApJGyAGQarVqtUATxsiBgR/IAZB1qrVqgFPDQsgBkEMbBDECAVBAAsiCiALQQxsaiICIA02AgggAiAENgIEIAIgADYCACAKIAZBDGxqIQogAkEMaiEGIAEgA0cEQANAIAJBDGsiAiABQQxrIgEpAgA3AgAgAiABKAIINgIIIAEgA0cNAAsgBygCFBogBygCDCEDCyAHIAo2AhQgByAGNgIQIAcgAjYCDCADRQ0AIAMQ8QMLIAcgBjYCECAHKAIEIgEgBygCCCIGSQRAIAEgBTYCCCABIAA2AgQgASAENgIAIAFBDGohCgwCCyABIAcoAgAiA2tBDG0iC0EBaiICQdaq1aoBTw0KQdWq1aoBIAYgA2tBDG0iCEEBdCIKIAIgAiAKSRsgCEGq1arVAE8bIggEfyAIQdaq1aoBTw0KIAhBDGwQxAgFQQALIgogC0EMbGoiAiAFNgIIIAIgADYCBCACIAQ2AgAgCiAIQQxsaiEIIAJBDGohCiABIANHBEADQCACQQxrIgIgAUEMayIBKQIANwIAIAIgASgCCDYCCCABIANHDQALIAcoAggaIAcoAgAhAwsgByAINgIIIAcgCjYCBCAHIAI2AgAgA0UNASADEPEDDAELEHMACyAEIQYgACEIDAELQTQQxAgiAUEANgIwIAFBADYCJCABQQA2AhggASAENgIMIAEgADYCCCABIBA2AgQgASAJKAIQIgI2AgAgAiABNgIEIAkgATYCECAJIAkoAhhBAWo2AhhBEBDECCICIAE2AgwgAiAENgIIIAIgADYCBCACIAAoAgAiAzYCACADIAI2AgQgACACNgIAIAAgACgCCEEBajYCCEEQEMQIIgIgATYCDCACIAA2AgggAiAEQQxqNgIEIAIgBCgCDCIDNgIAIAMgAjYCBCAEIAI2AgwgBCAEKAIUQQFqNgIUIAwoAgAhBiAPKAIAIQhBNBDECCIFQQA2AjAgBUEANgIkIAVBADYCGCAFIAg2AgwgBSAGNgIIIAUgEDYCBCAFIAE2AgAgASAFNgIEIAkgBTYCECAJIAkoAhhBAWo2AhhBEBDECCICIAU2AgwgAiAINgIIIAIgBjYCBCACIAYoAgAiAzYCACADIAI2AgQgBiACNgIAIAYgBigCCEEBajYCCEEQEMQIIgIgBTYCDCACIAY2AgggAiAIQQxqNgIEIAIgCCgCDCIDNgIAIAMgAjYCBCAIIAI2AgwgCCAIKAIUQQFqNgIUIAFBEGohDQJAIAcoAhAiASAHKAIUIgtJBEAgASANNgIIIAEgBDYCBCABIAA2AgAgAUEMaiEKDAELIAEgBygCDCIDa0EMbSIKQQFqIgJB1qrVqgFPDQkgCkEMbEHVqtWqASALIANrQQxtIgpBAXQiCyACIAIgC0kbIApBqtWq1QBPGyIKBH8gCkHWqtWqAU8NCCAKQQxsEMQIBUEACyILaiICIA02AgggAiAENgIEIAIgADYCACALIApBDGxqIQsgAkEMaiEKIAEgA0cEQANAIAJBDGsiAiABQQxrIgEpAgA3AgAgAiABKAIINgIIIAEgA0cNAAsgBygCFBogBygCDCEDCyAHIAs2AhQgByAKNgIQIAcgAjYCDCADRQ0AIAMQ8QMLIAVBEGohBSAHIAo2AhAgBygCBCIBIAcoAggiC0kEQCABIAU2AgggASAINgIEIAEgBjYCACABQQxqIQoMAQsgASAHKAIAIgNrQQxtIgpBAWoiAkHWqtWqAU8NByAKQQxsQdWq1aoBIAsgA2tBDG0iCkEBdCILIAIgAiALSRsgCkGq1arVAE8bIgoEfyAKQdaq1aoBTw0HIApBDGwQxAgFQQALIgtqIgIgBTYCCCACIAg2AgQgAiAGNgIAIAsgCkEMbGohCyACQQxqIQogASADRwRAA0AgAkEMayICIAFBDGsiASkCADcCACACIAEoAgg2AgggASADRw0ACyAHKAIIGiAHKAIAIQMLIAcgCzYCCCAHIAo2AgQgByACNgIAIANFDQAgAxDxAwsgByAKNgIEIA8oAgAoAhhFBEAgDSAFNgIUIA0gCDYCECANIAY2AgwgBSANNgIIIAUgBDYCBCAFIAA2AgALIA9BBGoiDyAHKAIcSQ0ACwsgBygCACECAkAgBygCDCIBIAcoAhAiA08NACACIAcoAgRPDQADQAJAIAcoAgwgAUYEQCABKAIIIgAgAikCDDcCACAAIAIoAhQ2AgggBygCEEEMayEADAELIAFBDGshACABKAIIIQQgA0EMayABRgRAIAQgBygCACIDKQIANwIAIAQgAygCCDYCCAwBCyAEIAIpAgw3AgAgBCACKAIUNgIICyACKAIIIgQgACkCADcCDCAEIAAoAgg2AhQgAUEMaiIBIAcoAhAiA0kEQCACQQxqIgIgBygCBEkNAQsLIAcoAgAhAgsgAgRAIAcgAjYCBCAHKAIIGiACEPEDCyAHKAIMIgEEQCAHIAE2AhAgBygCFBogARDxAwsgBygCGCIBRQ0AIAcgATYCHCAHKAIgGiABEPEDCyAMQQRqIgwgEUcNAAsgBygCJCEMCyAMBEAgByAMNgIoIAcoAiwaIAwQ8QMLIAdBMGokAAwECxB0AAsQcwALEHMACxBzAAsgDkEQaiQAC8MBAgJ/AXwjAEFAaiIEJAAgACsDGCEGIARBIGogAyACKwNgEJQCAkAgBiAEKwMwZkUNACAAKwMYIQYgBCADIAIrA1gQlAIgBiAEKwMQZUUNACAAKAJoIgIgACgCbE8NAANAIARBIGogACACKwNgEJQCAkAgBCsDKCADKwMQZUUNACAEIAAgAisDWBCUAiAEKwMIIAMrAxBmRQ0AIAEgAjYCAEEBIQUMAgsgAkGIAWoiAiAAKAJsSQ0ACwsgBEFAayQAIAUL9gUCB38CfCMAQSBrIgskAAJ/IAQoAmwiCCAEQfAAaiIJRwRAIAFBKGohDCABQQhqIQoDQAJAIAgoAhAiBkEIaiAKEGlFDQAgBkEoaiAMEGlFDQBBAAwDCwJAIAgoAgQiBwRAA0AgByIGKAIAIgcNAAwCCwALA0AgCCgCCCIGKAIAIAhHIQcgBiEIIAcNAAsLIAYhCCAGIAlHDQALCyALIAIrAxAgASsDGCABKwMgEFAhCkHYABDECCIIQQA2AhQgCEEANgIIIAggCEEMaiIGNgIQIAggBjYCDCAIIAg2AgQgCCAINgIAIAhBIGoQTyEHIAhCADcCRCAIQdySAigCACIGNgJAQdySAiAGQQFqNgIAIAhBADYCUEEMEMQIIgYgAEEcajYCBCAGIAg2AgggBiAAKAIcIgk2AgAgCSAGNgIEIAAgBjYCHCAAIAAoAiRBAWo2AiQgCCAGNgJQIAcgChBoIAggBDYCSCAIIAM2AkQgCCAFNgIYIAorAwghDQJAAkAgAygCfCIHRQRAIANB/ABqIgkhBgwBCwNAIAciBisDGCIOIA1kBEAgBiEJIAYoAgAiBw0BDAILIA0gDmRFDQIgBigCBCIHDQALIAZBBGohCQtBIBDECCIHIA05AxggByAINgIQIAcgBjYCCCAHQgA3AgAgCSAHNgIAIAMoAngoAgAiBgRAIAMgBjYCeCAJKAIAIQcLIAMoAnwgBxCcASADIAMoAoABQQFqNgKAAQsgCisDECENAkACQCAEKAJ8IgdFBEAgBEH8AGoiCSEGDAELA0AgByIGKwMYIg4gDWQEQCAGIQkgBigCACIHDQEMAgsgDSAOZEUNAiAGKAIEIgcNAAsgBkEEaiEJC0EgEMQIIgcgDTkDGCAHIAg2AhAgByAGNgIIIAdCADcCACAJIAc2AgAgBCgCeCgCACIGBEAgBCAGNgJ4IAkoAgAhBwsgBCgCfCAHEJwBIAQgBCgCgAFBAWo2AoABC0EBCyEGIAtBIGokACAGC8MBAgJ/AXwjAEFAaiIEJAAgACsDECEGIARBIGogAyACKwNgEJQCAkAgBiAEKwMoZkUNACAAKwMQIQYgBCADIAIrA1gQlAIgBiAEKwMIZUUNACAAKAJoIgIgACgCbE8NAANAIARBIGogACACKwNgEJQCAkAgBCsDMCADKwMYZUUNACAEIAAgAisDWBCUAiAEKwMQIAMrAxhmRQ0AIAEgAjYCAEEBIQUMAgsgAkGIAWoiAiAAKAJsSQ0ACwsgBEFAayQAIAULrwEBAXwCfCABRAAAAAAAAAAAZgRAIAEgACABoKMgAEQAAAAAAAAAAGYNARpEAAAAAAAA8D8gACABIACho6EMAQtEAAAAAAAAAEAgASAAmiABoaOhIABEAAAAAAAAAABjDQAaIAAgACABoaNEAAAAAAAACECgCyICIAJiBEBBgKoCQe0iQSsQIiAAEMYEQY8lQQMQIiABEMYEQeoeQQ8QIiACEMYEQa4sQQEQIhoLIAILIQBEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbCw8AIACZREivvJry13o+Ywt7AQN8IAArAwAgAysDACIJoiABKwMAIgogAisDAKKhIgiZREivvJry13o+YyIBRQRAIAZEAAAAAAAA8D8gCKMiCCAJIAQrAwCiIAUrAwAgCqKhojkDACAHIAggACsDACAFKwMAoiACKwMAIAQrAwCioaI5AwALIAFBAXMLmAEBCXwgBCsDCCADKwMIIgahIgkgASsDECAAKwMQIgehIgqiIAErAwggACsDCCILoSIMIAQrAxAgAysDECINoSIOoqEiCJlESK+8mvLXej5jIgNFBEAgAkQAAAAAAADwPyAIoyIIIA6aIAYgC6EiBqIgCSANIAehIgeioKI5AwAgBSAIIAwgB6IgCiAGoqGiOQMACyADQQFzC0sBAX9BMBDECCICQgA3AgAgAkEIaiABEDYaIAIgAEEEajYCBCACIAAoAgQiATYCACABIAI2AgQgACACNgIEIAAgACgCDEEBajYCDAsJACAAIAE5AxALkAcBCH8jAEHQAGsiASQAAkAgACgCDEECSQ0AIAFBADYCTCABIAFBxABqNgJIIAEgAUHEAGo2AkQgACgCCCIHKAIEIgYoAgQhA0EwEMQIIgJCADcCACACQQhqIAdBCGoQNhogAiABQcQAajYCBCACIAEoAkQiBDYCACAEIAI2AgQgASACNgJEIAEgASgCTEEBajYCTCAAQQRqIgUgA0cEQEEBIQggBiEEA0AgAUEgaiAEQQhqIgIgB0EIaiADQQhqEGEgASABQSBqIAIQXgJ/IAEQUyAAKwMQYwRAIAhBAXEEQCAEKAIEIQQLIAhBAXMhCCADKAIEDAELQTAQxAgiAkIANwIAIAJBCGogBkEIahA2GiACIAFBxABqNgIEIAIgASgCRCIENgIAIAQgAjYCBCABIAI2AkQgASABKAJMQQFqNgJMIAMhBCAGIQcgAygCBAshAiADIQYgAiEDIAIgBUcNAAsLIAUoAgAhAkEwEMQIIgNCADcCACADQQhqIAJBCGoQNhogAyABQcQAajYCBCADIAEoAkQiAjYCACACIAM2AgQgASADNgJEIAEgASgCTEEBaiIDNgJMIAFBxABqIAVHBH8gBSgCBCEAAkAgASgCSCIEIAFBxABqIgdGDQAgACAFRg0AA0AgAEEIaiAEQQhqED4gACgCBCEAIAQoAgQiBCAHRg0BIAAgBUcNAAsLAkAgACAFRgRAIAQgB0YNAUEwEMQIIgZCADcCACAGQQhqIARBCGoQNhpBASECAkAgByAEKAIEIgRGBEAgBiEADAELIAYhAwNAQTAQxAgiAEEANgIEIAAgAzYCACAAQQhqIARBCGoQNhogAyAANgIEIAJBAWohAiAAIQMgBCgCBCIEIAdHDQALCyAFKAIAIgQgBjYCBCAGIAQ2AgAgBSAANgIAIAAgBTYCBCAFIAUoAgggAmo2AggMAQsgACgCACIEIAUoAgAoAgQiBzYCBCAHIAQ2AgADQCAAKAIEIQQgBSAFKAIIQQFrNgIIIABBCGogACgCCCgCABEAABogABDxAyAEIgAgBUcNAAsLIAEoAkwFIAMLRQ0AIAEoAkgiAygCACICIAEoAkQoAgQiBjYCBCAGIAI2AgAgAUEANgJMIAMgAUHEAGpGDQADQCADKAIEIQIgA0EIaiADKAIIKAIAEQAAGiADEPEDIAIhAyACIAFBxABqRw0ACwsgAUHQAGokAAt2AQN/IABBjMUANgIAAkAgACgCDEUNACAAKAIIIgEoAgAiAiAAKAIEKAIEIgM2AgQgAyACNgIAIABBADYCDCABIABBBGoiA0YNAANAIAEoAgQhAiABQQhqIAEoAggoAgARAAAaIAEQ8QMgAyACIgFHDQALCyAAC3kBA38gAEGMxQA2AgACQCAAKAIMRQ0AIAAoAggiASgCACICIAAoAgQoAgQiAzYCBCADIAI2AgAgAEEANgIMIAEgAEEEaiIDRg0AA0AgASgCBCECIAFBCGogASgCCCgCABEAABogARDxAyADIAIiAUcNAAsLIAAQ8QMLJwECfyAAKAIEIgAQ3QNBAWoiARDwAyICBH8gAiAAIAEQ1wMFQQALC4gEAEHYiAJB2RQQCEHwiAJBthBBAUEAEAlB/IgCQb0OQQFBgH9B/wAQCkGUiQJBtg5BAUGAf0H/ABAKQYiJAkG0DkEBQQBB/wEQCkGgiQJB8wlBAkGAgH5B//8BEApBrIkCQeoJQQJBAEH//wMQCkG4iQJBugpBBEGAgICAeEH/////BxAKQcSJAkGxCkEEQQBBfxAKQdCJAkGfEUEEQYCAgIB4Qf////8HEApB3IkCQZYRQQRBAEF/EApB6IkCQfEKQoCAgICAgICAgH9C////////////ABD5CEH0iQJB8ApCAEJ/EPkIQYCKAkHmCkEEEAtBjIoCQZcUQQgQC0HQzQBBvhEQDEHgxQBB4xwQDEHw0QBBBEGkERANQazGAEECQcoREA1B+MYAQQRB2REQDUGk4gAQDkGgxwBBAEGeHBAPQcjHAEEAQYQdEA9B8McAQQFBvBwQD0GYyABBAkHDGBAPQcDIAEEDQeIYEA9B6MgAQQRBshkQD0GQyQBBBUHPGRAPQbjJAEEEQakdEA9B4MkAQQVBxx0QD0HIxwBBAEG1GhAPQfDHAEEBQZQaEA9BmMgAQQJB9xoQD0HAyABBA0HVGhAPQejIAEEEQf0bEA9BkMkAQQVB2xsQD0GIygBBCEG6GxAPQbDKAEEJQZgbEA9B2MoAQQZB9RkQD0GAywBBB0HuHRAPC/JIAQJ/QYQtQZjLAEG4ywBBAEHIywBBtQFBy8sAQQBBy8sAQQBBqwpBzcsAQbYBEAFBhC1BAUHQywBByMsAQbcBQbgBEAJBhC1BBEHgywBB8MsAQbkBQboBEAJBhC1BA0H4ywBBhMwAQbsBQbwBEAJBhC1BAkGMzABBlMwAQb0BQb4BEAJBCBDECCIAQQA2AgQgAEG/ATYCAEGELUGmEEECQZjMAEGgzABBwAEgAEEAQQBBABADQQgQxAgiAEEANgIEIABBwQE2AgBBhC1BqxBBAkGYzABBoMwAQcABIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQcIBNgIAQYQtQdsSQQJBpMwAQazMAEHDASAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHEATYCAEGELUGFCkEDQbDMAEG8zABBxQEgAEEAQQBBABADQQgQxAgiAEEANgIEIABBxgE2AgBBhC1BmQtBA0HEzABB0MwAQccBIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQcgBNgIAQYQtQaATQQNB2MwAQeTMAEHJASAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHKATYCAEGELUGYE0EDQdjMAEHkzABByQEgAEEAQQBBABADQQgQxAgiAEEANgIEIABBywE2AgBBhC1BkBNBA0HYzABB5MwAQckBIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQcwBNgIAQYQtQcoKQQRB8MwAQYDNAEHNASAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHOATYCAEGELUGnFEEDQbDMAEG8zABBxQEgAEEAQQBBABADQQgQxAgiAEEANgIEIABBzwE2AgBBhC1B3hVBAkGIzQBBlMwAQdABIABBAEEAQQAQA0EEEMQIIgBBCDYCAEEEEMQIIgFBCDYCAEGELUGxCUGMigJBoMwAQdEBIABBjIoCQeTMAEHSASABEARBBBDECCIAQRA2AgBBBBDECCIBQRA2AgBBhC1BjwlBjIoCQaDMAEHRASAAQYyKAkHkzABB0gEgARAEQQQQxAgiAEEYNgIAQQQQxAgiAUEYNgIAQYQtQaQIQYyKAkGgzABB0QEgAEGMigJB5MwAQdIBIAEQBEG4LUHozQBBjM4AQYQtQcjLAEHTAUHIywBB1AFByMsAQdUBQaEKQc3LAEHWARABQbgtQQJBnM4AQZTMAEHXAUHYARACQbgtQQRBsM4AQfDLAEHZAUHaARACQbgtQQVBwM4AQdTOAEHbAUHcARACQQgQxAgiAEEANgIEIABB3QE2AgBBuC1B3hVBAkHczgBBlMwAQd4BIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQd8BNgIAQbgtQbIVQQJB5M4AQZTMAEHgASAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHfATYCAEG4LUG9GEECQeTOAEGUzABB4AEgAEEAQQBBABADQYwtQfzOAEGgzwBBhC1ByMsAQeEBQcjLAEHiAUHIywBB4wFBqQpBzcsAQeQBEAFBjC1BAkGwzwBBlMwAQeUBQeYBEAJBjC1BBEHAzwBB8MsAQecBQegBEAJBCBDECCIAQQA2AgQgAEHpATYCAEGMLUHeFUECQdDPAEGUzABB6gEgAEEAQQBBABADQewvQezPAEGQ0ABBAEHIywBB6wFBy8sAQQBBy8sAQQBBgxRBzcsAQewBEAFB7C9BAUGg0ABByMsAQe0BQe4BEAJB7C9BBEGw0ABBwNAAQe8BQfABEAJB1NAAQdcTQQRBABAFQdTQAEGhGEEAEAZB1NAAQbwWQQEQBkHU0ABBrBdBAhAGQdTQAEG4GEEDEAZB1NAAQcsWQQUQBkHU0ABBlhZBBBAGQdTQAEHBF0ELEAZB1NAAQeYXQQgQBkHU0ABBrhhBDBAGQdTQAEGSGEENEAZB1NAAQZ0XQQYQBkHU0ABB7hZBBxAGQdTQAEHcFkEJEAZB1NAAQYUYQQoQBkHU0ABB1hZBDhAGQdTQAEGDF0EPEAZB1NAAQbcXQRAQBkHU0ABB/RZBERAGQcQvQfDQAEGU0QBBAEHIywBB8QFBy8sAQQBBy8sAQQBB+g1BzcsAQfIBEAFBxC9BA0Gk0QBB0MwAQfMBQfQBEAJBiNIAQaDSAEHE0gBBAEHIywBB9QFBy8sAQQBBy8sAQQBBlhJBzcsAQfYBEAFBiNIAQQFB1NIAQcjLAEH3AUH4ARACQQgQxAgiAEEANgIEIABB+QE2AgBBiNIAQYAUQQNB6NIAQfTSAEH6ASAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEH7ATYCAEGI0gBB1hJBAkH80gBBhNMAQfwBIABBAEEAQQAQA0HQLEGY0wBBuNMAQQBByMsAQf0BQcvLAEEAQcvLAEEAQZEJQc3LAEH+ARABQQgQxAgiAEEANgIEIABB/wE2AgBB0CxBnhRBA0HI0wBB1NMAQYACIABBAEEAQQAQA0EEEMQIIgBBCDYCAEEEEMQIIgFBCDYCAEHQLEH5CUGELUGUzABBgQIgAEGELUH00gBBggIgARAEQQQQxAgiAEEoNgIAQQQQxAgiAUEoNgIAQdAsQf8JQYQtQZTMAEGBAiAAQYQtQfTSAEGCAiABEARB9NMAQZjUAEHE1ABBAEHIywBBgwJBy8sAQQBBy8sAQQBBzQ9BzcsAQYQCEAFBBBDECCIAQQA2AgBBBBDECCIBQQA2AgBB9NMAQcULQYyKAkGgzABBhQIgAEGMigJB5MwAQYYCIAEQBEEEEMQIIgBBCDYCAEEEEMQIIgFBCDYCAEH00wBB9wpBjIoCQaDMAEGFAiAAQYyKAkHkzABBhgIgARAEQQgQxAgiAEEANgIEIABBhwI2AgBB9NMAQYwUQQNB1NQAQeTMAEGIAiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEGJAjYCAEH00wBB3hVBAkHg1ABBlMwAQYoCIABBAEEAQQAQA0HgLUH41ABBmNUAQQBByMsAQYsCQcvLAEEAQcvLAEEAQfsTQc3LAEGMAhABQeAtQQNBqNUAQdDMAEGNAkGOAhACQeAtQQJBtNUAQZTMAEGPAkGQAhACQQQQxAgiAEEINgIAQQQQxAgiAUEINgIAQeAtQZIiQYQtQZTMAEGRAiAAQYQtQfTSAEGSAiABEARBBBDECCIAQSg2AgBBBBDECCIBQSg2AgBB4C1BiiJBhC1BlMwAQZECIABBhC1B9NIAQZICIAEQBEGcCEHI1QBB6NUAQQBByMsAQZMCQcvLAEEAQcvLAEEAQYwVQc3LAEGUAhABQZwIQQVBgNYAQZTWAEGVAkGWAhACQZwIQQJBnNYAQZTMAEGXAkGYAhACQQQQxAgiAEEYNgIAQQQQxAgiAUEYNgIAQZwIQZIiQYQtQZTMAEGZAiAAQYQtQfTSAEGaAiABEARBBBDECCIAQTg2AgBBBBDECCIBQTg2AgBBnAhBiiJBhC1BlMwAQZkCIABBhC1B9NIAQZoCIAEQBEEEEMQIIgBB2AA2AgBBBBDECCIBQdgANgIAQZwIQbMVQYQtQZTMAEGZAiAAQYQtQfTSAEGaAiABEARBBBDECCIAQfgANgIAQQQQxAgiAUH4ADYCAEGcCEHiC0HwiAJBhNMAQZsCIABB8IgCQaTWAEGcAiABEARBvNYAQc4TQQRBABAFQbzWAEG+E0EAEAZBvNYAQcsTQQEQBkGELkHU1gBB9NYAQQBByMsAQZ0CQcvLAEEAQcvLAEEAQf0QQc3LAEGeAhABQYQuQQFBhNcAQcjLAEGfAkGgAhACQYQuQQJBiNcAQZTMAEGhAkGiAhACQQgQxAgiAEEANgIEIABBowI2AgBBhC5B9RNBA0GQ1wBB9NIAQaQCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQaUCNgIAQYQuQYYVQQNBnNcAQfTSAEGmAiAAQQBBAEEAEANBlDtBvNcAQeDXAEEAQcjLAEGnAkHLywBBAEHLywBBAEGGEEHNywBBqAIQAUEIEMQIIgBCjICAgBA3AwBBlDtBhwxBA0Hw1wBB9NIAQakCIABBAEEAQQAQA0EIEMQIIgBCqICAgBA3AwBBlDtBjQtBAkGk2ABBlMwAQaoCIABBAEEAQQAQA0EIEMQIIgBCiICAgBA3AwBBlDtByhdBA0Ho2ABB9NIAQasCIABBAEEAQQAQA0EIEMQIIgBCkICAgBA3AwBBlDtB6BFBA0H02ABB5MwAQawCIABBAEEAQQAQA0GcO0Gc2QBByNkAQZQ7QcjLAEGtAkHIywBBrgJByMsAQa8CQbMMQc3LAEGwAhABQZw7QQFB2NkAQcjLAEGxAkGyAhACQQgQxAgiAEKYgICAEDcDAEGcO0GyD0ECQdzZAEGszABBswIgAEEAQQBBABADQQgQxAgiAEEANgIEIABBtAI2AgBBlDtBsQtBA0Hk2QBBpNYAQbUCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQbYCNgIAQZQ7QbwLQQJB8NkAQYTTAEG3AiAAQQBBAEEAEANBCBDECCIAQrCAgIAQNwMAQZw7QYkKQQNB+NkAQfTSAEG4AiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEG5AjYCAEGUO0GoC0ECQfDZAEGE0wBBtwIgAEEAQQBBABADQQgQxAgiAEEANgIEIABBugI2AgBBlDtB8xJBAkHw2QBBhNMAQbcCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQbsCNgIAQZQ7QeUSQQNB5NkAQaTWAEG1AiAAQQBBAEEAEANBuD5BnNoAQcjaAEGUO0HIywBBvAJByMsAQb0CQcjLAEG+AkGkDEHNywBBvwIQAUG4PkEBQdjaAEHIywBBwAJBwQIQAkEIEMQIIgBCmICAgBA3AwBBuD5Bsg9BAkHc2gBBrMwAQcICIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQcMCNgIAQbg+QfoQQQNB5NoAQfTSAEHEAiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHFAjYCAEG4PkGRFkECQfDaAEGgzABBxgIgAEEAQQBBABADQQgQxAgiAEEANgIEIABBxwI2AgBBuD5BjBZBA0H42gBB5MwAQcgCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQckCNgIAQbg+QYMLQQJBhNsAQZTMAEHKAiAAQQBBAEEAEANBsD9BrNsAQeDbAEGUO0HIywBBywJByMsAQcwCQcjLAEHNAkGcDEHNywBBzgIQAUGwP0EBQfDbAEHIywBBzwJB0AIQAkEIEMQIIgBCmICAgBA3AwBBsD9Bsg9BAkH02wBBrMwAQdECIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQdICNgIAQbA/QYASQQNB/NsAQeTMAEHTAiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHUAjYCAEGwP0G+CkEDQfzbAEHkzABB0wIgAEEAQQBBABADQQgQxAgiAEKUgICAEDcDAEGUO0H0EUECQYjcAEGgzABB1QIgAEEAQQBBABADQQgQxAgiAEEANgIEIABB1gI2AgBBsD9B+hBBA0GQ3ABB9NIAQdcCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQdgCNgIAQbA/QZEWQQJBnNwAQaDMAEHZAiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHaAjYCAEGwP0GMFkEDQfzbAEHkzABB0wIgAEEAQQBBABADQQgQxAgiAEEANgIEIABB2wI2AgBBsD9BgwtBAkGk3ABBlMwAQdwCIABBAEEAQQAQA0G83ABB1NwAQfTcAEEAQcjLAEHdAkHLywBBAEHLywBBAEGPEkHNywBB3gIQAUG83ABBAUGE3QBByMsAQd8CQeACEAJBCBDECCIAQQA2AgQgAEHhAjYCAEG83ABBsg9BAkGY3QBBrMwAQeICIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQeMCNgIAQbzcAEHdD0EDQaDdAEH00gBB5AIgAEEAQQBBABADQQgQxAgiAEEANgIEIABB5QI2AgBBvNwAQZQQQQNBoN0AQfTSAEHkAiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEHmAjYCAEG83ABB+AtBA0Gs3QBB5MwAQecCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQegCNgIAQbzcAEGVCkEDQbjdAEH00gBB6QIgAEEAQQBBABADQQgQxAgiAEEANgIEIABB6gI2AgBBvNwAQd4VQQJBxN0AQZTMAEHrAiAAQQBBAEEAEANBoMAAQejdAEGU3gBBAEHIywBB7AJBy8sAQQBBy8sAQQBB9gxBzcsAQe0CEAFBoMAAQQFBpN4AQcjLAEHuAkHvAhACQQgQxAgiAEKYgICAEDcDAEGgwABBsg9BAkGo3gBBrMwAQfACIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQbQCNgIAQZQ7QbELQQNB5NkAQaTWAEG1AiAAQQBBAEEAEANBCBDECCIAQryAgIAQNwMAQaDAAEGoDkEDQbDeAEH00gBB8QIgAEEAQQBBABADQQgQxAgiAEEANgIEIABBuQI2AgBBlDtBqAtBAkHw2QBBhNMAQbcCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQbQCNgIAQZQ7QbELQQNB5NkAQaTWAEG1AiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEG2AjYCAEGUO0G8C0ECQfDZAEGE0wBBtwIgAEEAQQBBABADQQgQxAgiAEEANgIEIABBuwI2AgBBlDtB5RJBA0Hk2QBBpNYAQbUCIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQboCNgIAQZQ7QfMSQQJB8NkAQYTTAEG3AiAAQQBBAEEAEANBCBDECCIAQrSAgIAQNwMAQaDAAEH4D0ECQajeAEGszABB8AIgAEEAQQBBABADQQgQxAgiAEK4gICAEDcDAEGgwABB6g9BAkGo3gBBrMwAQfACIABBAEEAQQAQA0GUN0HQ3gBB9N4AQQBByMsAQfICQcvLAEEAQcvLAEEAQcQQQc3LAEHzAhABQZQ3QQNBhN8AQYTMAEH0AkH1AhACQQQQxAgiAEHYADYCAEEEEMQIIgFB2AA2AgBBlDdB6A1BjIoCQaDMAEH2AiAAQYyKAkHkzABB9wIgARAEQQQQxAgiAEHgADYCAEEEEMQIIgFB4AA2AgBBlDdB5gtBjIoCQaDMAEH2AiAAQYyKAkHkzABB9wIgARAEQQQQxAgiAEEwNgIAQQQQxAgiAUEwNgIAQZQ3QaMVQYwtQZTMAEH4AiAAQYwtQfTSAEH5AiABEARBBBDECCIAQQg2AgBBBBDECCIBQQg2AgBBlDdBrBVBjC1BlMwAQfgCIABBjC1B9NIAQfkCIAEQBEEIEMQIIgBBADYCBCAAQfoCNgIAQZQ3Qe4NQQRBkN8AQaDfAEH7AiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEH8AjYCAEGUN0HsC0EEQZDfAEGg3wBB+wIgAEEAQQBBABADQQgQxAgiAEEANgIEIABB/QI2AgBBlDdBpghBAkGo3wBBhNMAQf4CIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQf8CNgIAQZQ3Qd4VQQJBsN8AQZTMAEGAAyAAQQBBAEEAEANB7DZByN8AQejfAEEAQcjLAEGBA0HLywBBAEHLywBBAEGuDkHNywBBggMQAUHsNkEDQfjfAEHQzABBgwNBhAMQAkG44ABB9OAAQbjhAEEAQcjLAEHtA0HLywBBAEHLywBBAEGfGUHNywBB7gMQAUG44ABBAUHI4QBByMsAQe8DQfADEAJBCBDECCIAQQA2AgQgAEHxAzYCAEG44ABBzRBBA0HM4QBB9NIAQfIDIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQfMDNgIAQbjgAEHUEkEEQeDhAEHw4QBB9AMgAEEAQQBBABADQQgQxAgiAEEANgIEIABB9QM2AgBBuOAAQdYSQQJB+OEAQYDiAEH2AyAAQQBBAEEAEANBBBDECCIAQfcDNgIAQbjgAEHYCkEDQYTiAEGs4gBB+AMgAEEAQQBBABADQQQQxAgiAEH5AzYCAEG44ABB1ApBBEHA4gBB0OIAQfoDIABBAEEAQQAQA0Hg2ABBjOMAQdTjAEEAQcjLAEH7A0HLywBBAEHLywBBAEGKGUHNywBB/AMQAUHg2ABBAUHk4wBByMsAQf0DQf4DEAJBCBDECCIAQQA2AgQgAEH/AzYCAEHg2ABBzRBBA0Ho4wBB9NIAQYAEIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQYEENgIAQeDYAEHUEkEEQYDkAEHw4QBBggQgAEEAQQBBABADQQgQxAgiAEEANgIEIABBgwQ2AgBB4NgAQdYSQQJBkOQAQYDiAEGEBCAAQQBBAEEAEANBBBDECCIAQYUENgIAQeDYAEHYCkEDQZjkAEGs4gBBhgQgAEEAQQBBABADQQQQxAgiAEGHBDYCAEHg2ABB1ApBBEGw5ABB0OIAQYgEIABBAEEAQQAQA0GE5QBB0OUAQaTmAEEAQcjLAEGJBEHLywBBAEHLywBBAEGOHkHNywBBigQQAUGE5QBBAUG05gBByMsAQYsEQYwEEAJBCBDECCIAQQA2AgQgAEGNBDYCAEGE5QBBzRBBA0G45gBB9NIAQY4EIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQY8ENgIAQYTlAEHUEkEEQdDmAEHw4QBBkAQgAEEAQQBBABADQQgQxAgiAEEANgIEIABBkQQ2AgBBhOUAQdYSQQJB4OYAQYDiAEGSBCAAQQBBAEEAEANBBBDECCIAQZMENgIAQYTlAEHYCkEDQejmAEGs4gBBlAQgAEEAQQBBABADQQQQxAgiAEGVBDYCAEGE5QBB1ApBBEGA5wBB0OIAQZYEIABBAEEAQQAQA0GAwgBBpOcAQcjnAEGUO0HIywBBhQNByMsAQYYDQcjLAEGHA0HrE0HNywBBiAMQAUGAwgBBAUHY5wBByMsAQYkDQYoDEAJBCBDECCIAQoyAgIAQNwMAQZQ7QYcMQQNB8NcAQfTSAEGpAiAAQQBBAEEAEANBCBDECCIAQoiAgIAQNwMAQZQ7QcoXQQNB6NgAQfTSAEGrAiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEGLAzYCAEGAwgBBjBZBA0Hc5wBB5MwAQYwDIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQRA2AgBBlDtB6BFBA0H02ABB5MwAQawCIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQRg2AgBBgMIAQbIPQQJB6OcAQazMAEGNAyAAQQBBAEEAEANBCBDECCIAQQE2AgQgAEHEADYCAEGAwgBBjSJBAkHo5wBBrMwAQY0DIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQSQ2AgBBgMIAQdIKQQJB6OcAQazMAEGNAyAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEGOAzYCAEGAwgBBnwtBAkHw5wBBlMwAQY8DIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQbQCNgIAQZQ7QbELQQNB5NkAQaTWAEG1AiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEG2AjYCAEGUO0G8C0ECQfDZAEGE0wBBtwIgAEEAQQBBABADQajDAEGU6ABBwOgAQYDCAEHIywBBkANByMsAQZEDQcjLAEGSA0HjE0HNywBBkwMQAUGowwBBAUHQ6ABByMsAQZQDQZUDEAJBCBDECCIAQQA2AgQgAEGLAzYCAEGAwgBBjBZBA0Hc5wBB5MwAQYwDIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQZYDNgIAQajDAEGAEkEDQdToAEHkzABBlwMgAEEAQQBBABADQQgQxAgiAEEBNgIEIABBGDYCAEGowwBBsg9BAkHg6ABBrMwAQZgDIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQcQANgIAQajDAEGNIkECQeDoAEGszABBmAMgAEEAQQBBABADQQgQxAgiAEEBNgIEIABBJDYCAEGAwgBB0gpBAkHo5wBBrMwAQY0DIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQbQCNgIAQZQ7QbELQQNB5NkAQaTWAEG1AiAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEG2AjYCAEGUO0G8C0ECQfDZAEGE0wBBtwIgAEEAQQBBABADQYTpAEGuE0EEQQAQBUGE6QBB8BdBABAGQYTpAEGmGEEBEAZBhOkAQfYXQQIQBkGE6QBB8xdBAxAGQYTpAEHHFkEEEAZBhOkAQcMWQQUQBkH4xABBpOkAQczpAEEAQcjLAEGZA0HLywBBAEHLywBBAEHPDUHNywBBmgMQAUH4xABBAUHc6QBByMsAQZsDQZwDEAJBCBDECCIAQQE2AgQgAEEINgIAQfjEAEGeCkEDQeDpAEH00gBBnQMgAEEAQQBBABADQQgQxAgiAEEBNgIEIABBDDYCAEH4xABBshRBA0Hs6QBB5MwAQZ4DIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQRA2AgBB+MQAQbIPQQJB+OkAQazMAEGfAyAAQQBBAEEAEANBzDhBmOoAQZTYAEEAQcjLAEGgA0HLywBBAEHLywBBAEGGDUHNywBBoQMQAUHMOEEBQajqAEHIywBBogNBowMQAkEIEMQIIgBBADYCBCAAQaQDNgIAQcw4QYQPQQRBsOoAQYDNAEGlAyAAQQBBAEEAEANBCBDECCIAQQE2AgQgAEEMNgIAQcw4QY8PQQRBsOoAQYDNAEGlAyAAQQBBAEEAEANBCBDECCIAQQE2AgQgAEEQNgIAQcw4QZkPQQRBsOoAQYDNAEGlAyAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEGmAzYCAEHMOEGRDEEEQbDqAEGAzQBBpQMgAEEAQQBBABADQQgQxAgiAEEANgIEIABBpwM2AgBBzDhB6wxBBUHA6gBB1OoAQagDIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQQg2AgBBzDhBhAxBA0Hc6gBB6OoAQakDIABBAEEAQQAQA0EIEMQIIgBBATYCBCAAQRQ2AgBBzDhB3hVBAkHw6gBBlMwAQaoDIABBAEEAQQAQA0EIEMQIIgBBADYCBCAAQasDNgIAQcw4QfkKQQJB+OoAQaDMAEGsAyAAQQBBAEEAEANBCBDECCIAQQA2AgQgAEGtAzYCAEHMOEHwEEECQfjqAEGgzABBrAMgAEEAQQBBABADQQgQxAgiAEEANgIEIABBrgM2AgBBzDhB3A1BAkH46gBBoMwAQawDIABBAEEAQQAQA0GkOUGU6wBBuOsAQcw4QcjLAEGvA0HIywBBsANByMsAQbEDQccMQc3LAEGyAxABQaQ5QQNByOsAQYTMAEGzA0G0AxACQQgQxAgiAEEANgIEIABBtQM2AgBBzDhB0RdBBEHg6wBBgM0AQbYDIABBAEEAQQAQA0HEMEGE7ABBrOwAQcw4QcjLAEG3A0HIywBBuANByMsAQbkDQeAMQc3LAEG6AxABQcQwQQNBvOwAQYTMAEG7A0G8AxACQQgQxAgiAEEANgIEIABBtQM2AgBBzDhB0RdBBEHg6wBBgM0AQbYDIABBAEEAQQAQA0GgMUHc7ABBhO0AQcw4QcjLAEG9A0HIywBBvgNByMsAQb8DQdEMQc3LAEHAAxABQaAxQQRBoO0AQfDLAEHBA0HCAxACQew3QcTtAEHs7QBBzDhByMsAQcMDQcjLAEHEA0HIywBBxQNBxA1BzcsAQcYDEAFB7DdBBEGA7gBB8MsAQccDQcgDEAJBjDVBqO4AQdDuAEHMOEHIywBByQNByMsAQcoDQcjLAEHLA0HDDEHNywBBzAMQAUGMNUEDQeDuAEGEzABBzQNBzgMQAkGwNUGE7wBBsO8AQcw4QcjLAEHPA0HIywBB0ANByMsAQdEDQdwMQc3LAEHSAxABQbA1QQNBwO8AQYTMAEHTA0HUAxACQdQ1QeTvAEGM8ABBzDhByMsAQdUDQcjLAEHWA0HIywBB1wNBlA1BzcsAQdgDEAFB1DVBBEGg8ABB8MsAQdkDQdoDEAJB+DVByPAAQfTwAEHMOEHIywBB2wNByMsAQdwDQcjLAEHdA0GxDUHNywBB3gMQAUH4NUEEQZDxAEHwywBB3wNB4AMQAkGcNkG48QBB5PEAQcw4QcjLAEHhA0HIywBB4gNByMsAQeMDQaINQc3LAEHkAxABQZw2QQVBgPIAQZTyAEHlA0HmAxACQcA2QbTyAEHg8gBBzDhByMsAQecDQcjLAEHoA0HIywBB6QNBwA1BzcsAQeoDEAFBwDZBBUHw8gBBlPIAQesDQewDEAILDQAgACgCAEEEaygCAAsUACAABEAgACAAKAIAKAIEEQEACwsHACAAEQsACwkAQSAQxAgQTwtBAQF/IwBBIGsiBCQAIAQgATkDGCAEIAI5AxAgBCADOQMIIARBGGogBEEQaiAEQQhqIAARBAAhACAEQSBqJAAgAAsYAEEgEMQIIAArAwAgASsDACACKwMAEFALMgEBfyMAQRBrIgMkACADIAE5AwggAyACOQMAIANBCGogAyAAEQMAIQAgA0EQaiQAIAALEwBBIBDECCAAKwMAIAErAwAQUQsjAQF/IwBBIGsiAiQAIAIgARBSIAARAAAhACACQSBqJAAgAAsLAEEgEMQIIAAQUgs1AQF/IAEgACgCBCICQQF1aiEBIAAoAgAhACABIAJBAXEEfyABKAIAIABqKAIABSAACxESAAs1AQF/IAEgACgCBCICQQF1aiEBIAAoAgAhACABIAJBAXEEfyABKAIAIABqKAIABSAACxEBAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERUAC1YBAn8jAEEgayIDJAAgASAAKAIEIgRBAXVqIQEgACgCACEAIAMgASACIARBAXEEfyABKAIAIABqKAIABSAACxEFAEEgEMQIIAMQUiEAIANBIGokACAACzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsREAALOQEBfyABIAAoAgQiBEEBdWohASAAKAIAIQAgASACIAMgBEEBcQR/IAEoAgAgAGooAgAFIAALEQQAC5wBAQR/IwBBEGsiAiQAIAEgACgCBCIDQQF1aiEBIAAoAgAhACACQQRqIAEgA0EBcQR/IAEoAgAgAGooAgAFIAALEQIAIAIoAgggAiwADyIAIABBAEgiBBsiAUEEahDwAyIDIAE2AgAgA0EEaiACKAIEIgUgAkEEaiAEGyABENcDGiAAQQBIBEAgAigCDBogBRDxAwsgAkEQaiQAIAMLDQAgASAAKAIAaisDAAsPACABIAAoAgBqIAI5AwALLQEBfyMAQTBrIgIkACACQQhqIAEQNiIBIAARAAAhACABEDgaIAJBMGokACAACwsAQSgQxAggABA2CxgAQSgQxAggACsDACABKwMAIAIrAwAQNQtDAQF/IwBBIGsiBSQAIAUgATkDGCAFIAI5AxAgBSADOQMIIAVBGGogBUEQaiAFQQhqIAQgABEGACEEIAVBIGokACAEC0QAQSgQxAggACsDACABKwMAIAIrAwAQUCIAQaAtNgIAQSgQxAggAxBSIgFB4Cw2AgAgASADKAIgNgIgIAAgATYCICAAC2oBAn8jAEEwayICJAAgASAAKAIEIgNBAXVqIQEgACgCACEAIAJBCGogASADQQFxBH8gASgCACAAaigCAAUgAAsRAgBBKBDECCACQQhqEFIiAEHgLDYCACAAIAIoAig2AiAgAkEwaiQAIAALOgECfyMAQTBrIgIkACACQQhqIAEQUiIDQeAsNgIAIAMgASgCIDYCICADIAARAAAhASACQTBqJAAgAQshAQF/QSgQxAggABBSIgFB4Cw2AgAgASAAKAIgNgIgIAELGABBKBDECCAAKwMAIAErAwAgAisDABAwC54CAQd/QdgBEMQIIQEjAEGAAWsiACQAIAFB1C82AgAgAUEIahBPIQIgAUEoahBPIQMgAUHIAGoQTyEEIAFB6ABqEE8hBiABQYgBahAnIQUgAiAAQeAAakQAAAAAAADwP0QAAAAAAAAAAEQAAAAAAAAAABBQEGggAyAAQeAAakQAAAAAAAAAAEQAAAAAAADwP0QAAAAAAAAAABBQEGggBCAAQeAAakQAAAAAAAAAAEQAAAAAAAAAAEQAAAAAAADwPxBQEGggAEHgAGogAiADEF4gAEFAayACIAQQXiAAQSBqIABB4ABqIABBQGsQVCAAQSBqEFYgBiAAIAArAyggACsDMCAAKwM4EFAQaCAFECkgBSABECsgAEGAAWokACABCzcBAX8jAEHgAGsiBCQAIARBQGsgARBSIARBIGogAhBSIAQgAxBSIAARBAAhASAEQeAAaiQAIAELOgEBfyMAQeAAayIDJABB2AEQxAggA0FAayAAEFIgA0EgaiABEFIgAyACEFIQbyECIANB4ABqJAAgAgvRAQEEfyMAQRBrIgMkAAJAIAEoAgAiBEH4////A0kEQAJAAkAgBEECTwRAIARBAXIiBkH/////A08NBCAGQQJ0QQRqEMQIIQUgAyAGQf////8HazYCDCADIAU2AgQgAyAENgIIDAELIAMgBDoADyADQQRqIQUgBEUNAQsgBSABQQRqIARBAnQQ1wMaCyAFIARBAnRqQQA2AgAgA0EEaiACIAARAwAhBCADLAAPQQBIBEAgAygCDBogAygCBBDxAwsgA0EQaiQAIAQPCxAlAAsQdAAL7BMBCn8gASEKQQAhAUEEEMQIIgtBqC82AgAgACICKAIAIAIgAiwAC0EASBshBCMAQdANayICJAACQEHbkgIsAABBAEgEQEHQkgIoAgBBADoAAEHUkgJBADYCAAwBC0HbkgJBADoAAEHQkgJBADoAAAsgBCgCACIDBEADQEHQkgIgA8AQygggBCgCBCEDIARBBGohBCADDQALCyACQaiYATYCgA0gAkG0mAEoAgAiAzYClAwgA0EMaygCACACQZQMampBuJgBKAIANgIAIAIoApQMIQMgAkEANgKYDEHQkgIoAgAhAEHbkgIsAAAhBSADQQxrKAIAIAJBlAxqaiIDIAJBnAxqIgcQtgUgA0KAgICAcDcCSCACQaiYATYCgA0gAkGUmAE2ApQMAn9B0JICIAAgBUEAThshACMAQRBrIgMkACAHEJgEIgRBADYCKCAEQgA3AiAgBEGkkQE2AgAgBEE0akEAQS8Q2AMaIANBDGogBBDfBCADKAIMQbi1AhDEBxDMByEHIANBDGoQiQYgBwRAIANBCGogBBDfBCAEIANBCGoQ8QQ2AkQgA0EIahCJBiAEIAQoAkQQ8gQ6AGILIARBAEGAICAEKAIAKAIMEQQAGiADQRBqJAACQAJAIAQiBygCQA0AIwBBEGsiCCQAAkACQEHOFUG4FSwAABCDBEUEQEG4lAJBHDYCAAwBC0ECIQNBuBVBKxCDBEUEQEG4FS0AAEHyAEchAwsgA0GAAXIgA0G4FUH4ABCDBBsiA0GAgCByIANBuBVB5QAQgwQbIgMgA0HAAHJBuBUtAAAiBUHyAEYbIgNBgARyIAMgBUH3AEYbIgNBgAhyIAMgBUHhAEYbIQUgCEK2AzcDAEGcfyAAIAVBgIACciAIEBIiAEGBYE8EQEG4lAJBACAAazYCAEF/IQALIABBAEgNASAAIQEjAEEgayIFJAACfwJAAkBBzhVBuBUsAAAQgwRFBEBBuJQCQRw2AgAMAQtBmAkQ8AMiAw0BC0EADAELIANBAEGQARDYAxpBuBVBKxCDBEUEQCADQQhBBEG4FS0AAEHyAEYbNgIACwJAQbgVLQAAQeEARwRAIAMoAgAhCQwBCyABQQNBABATIglBgAhxRQRAIAUgCUGACHKsNwMQIAFBBCAFQRBqEBMaCyADIAMoAgBBgAFyIgk2AgALIANBfzYCUCADQYAINgIwIAMgATYCPCADIANBmAFqNgIsAkAgCUEIcQ0AIAUgBUEYaq03AwAgAUGTqAEgBRAUDQAgA0EKNgJQCyADQZ0ENgIoIANBngQ2AiQgA0GfBDYCICADQaAENgIMQfWSAi0AAEUEQCADQX82AkwLIANBtJQCKAIAIgE2AjggAQRAIAEgAzYCNAtBtJQCIAM2AgAgAwshAyAFQSBqJAAgAyIBDQEgABAXGgtBACEBCyAIQRBqJAAgBCABIgA2AkAgAEUNACAEQQw2AlgMAQtBAAwBCyAHC0UEQCACKAKUDEEMaygCACACQZQMamoiBCAEKAIQQQRyELMFCyACQYANaiEFAkAgAigClAxBDGsoAgAgAkGUDGpqLQAQQQVxDQAgAkGQDGpB3BUvAAA7AQAgAkHYFSgAADYCjAwgAkGUDGogAkGMDGpBBRC7BCACKAKUDEEMayIEKAIAIAJBlAxqai0AEEECcQ0AIAJBjAxqQd4UQQYQ2QMEQEEAIQQgAkEAOgDQASACIAIoAowMNgKAASACIAJBkAxqLQAAOgCEASACQZQMaiACQYABakEFckHLABC7BCACQQA2AtgCIAJBlAxqIAJB2AJqQQQQuwQgAigC2AJFDQEDQCACQZQMaiACQYAMakEMELsEIAJBlAxqIAJB0AtqQSQQuwQgAkGUDGogAkHOC2pBAhC7BCAKIAJB4AJqIAJBqAtqIAIqAtALuyACKgLUC7sgAioC2Au7EFAgAkGIC2ogAioC3Au7IAIqAuALuyACKgLkC7sQUCACQegKaiACKgLoC7sgAioC7Au7IAIqAvALuxBQEG8QbSAEQQFqIgQgAigC2AJJDQALDAELIAJB4AJqQQBBgAgQ2AMaIAJB5AA6AOQCIAJB896xywY2AuACIAJBgAFqIAQoAgAgAkGUDGpqELIFIAJBgAFqQbC1AhCOBiIEQQogBCgCACgCHBEDACEEIAJBgAFqEIkGIAJBlAxqIAJB4AJqQQVyIAQQugQgAkHcFS8AADsB3AIgAkHYFSgAADYC2AIgAigClAxBDGsoAgAgAkGUDGpqIgQtABBBAnENACACQYgMaiEBIAJBhAxqIQgDQCACQYABaiAEELIFIAJBgAFqQbC1AhCOBiIEQQogBCgCACgCHBEDACEEIAJBgAFqEIkGIAJBlAxqIAJB4AJqIAQQugRBACEDAkAgAi0A4AIiBEUNAANAIARB/wFxIgBBIEcgAEEJR3FFBEAgA0EBaiIDIAJB4AJqai0AACEEDAELCyACIAQ6ANgCIANBAWoiAyACQeACamotAAAiBEUNAANAIARB/wFxIgBBIEcgAEEJR3FFBEAgA0EBaiIDIAJB4AJqai0AACEEDAELCyACIAQ6ANkCIANBAWoiAyACQeACamotAAAiBEUNAANAIARB/wFxIgBBIEcgAEEJR3FFBEAgA0EBaiIDIAJB4AJqai0AACEEDAELCyACIAQ6ANoCIANBAWoiAyACQeACamotAAAiBEUNAANAIARB/wFxIgBBIEcgAEEJR3FFBEAgA0EBaiIDIAJB4AJqai0AACEEDAELCyACIAQ6ANsCIANBAWoiAyACQeACamotAAAiBEUNAANAIARB/wFxIgBBIEcgAEEJR3FFBEAgA0EBaiIDIAJB4AJqai0AACEEDAELCyACIAQ6ANwCIAJB2AJqQYoTQQYQ2QNFBEAgAiACQdALaiAGQQxsaiIENgIAIAIgBEEIajYCCCACIARBBGo2AgQgAkHgAmpBrBIgAhDcAxpBASAGIAZBAEobQQFqIQYMAQsgAkHYAmpB3ApBBhDZA0UEQCACIAE2AhggAiAINgIUIAIgAkGADGo2AhAgAkHgAmpBvRIgAkEQahDcAxpBACEGDAELIAJB2AJqQdIVQQYQ2QMNACAGQQJHDQAgCiACQYABaiACQeAAaiACKgLQC7sgAioC1Au7IAIqAtgLuxBQIAJBQGsgAioC3Au7IAIqAuALuyACKgLkC7sQUCACQSBqIAIqAugLuyACKgLsC7sgAioC8Au7EFAQbxBtQQIhBgsgAigClAxBDGsoAgAgAkGUDGpqIgQtABBBAnFFDQALCyACQbCYASgCACIENgKUDCAEQQxrKAIAIAJBlAxqakG8mAEoAgA2AgAgBxDzBBogBRC0BRogAkHQDWokACALCzcBAn9B4AAQxAgiAEEANgIMIABB4NIANgIAIAAgAEEEaiIBNgIIIAAgATYCBCAAQRBqECcaIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxECAAs1AQF/IAEgACgCBCICQQF1aiEBIAAoAgAhACABIAJBAXEEfyABKAIAIABqKAIABSAACxEAAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALEQMACxUAIAAoAgAhAEEgEMQIIAAgAWoQUgsOACABIAAoAgBqIAIQaAsGAEH00wALDAAgAARAIAAQ8QMLCywBAX8jAEFAaiIDJAAgA0EgaiABEFIgAyACEFIgABEDACEBIANBQGskACABCw4AQcgAEMQIIAAgARBCCygBAX8jAEHQAGsiAiQAIAJBCGogARBDIAARAAAhACACQdAAaiQAIAALDABByAAQxAggABBDC1MBAX8jAEHwAGsiBSQAIAVB0ABqIAEQUiEBIAVBMGogAhBSIQIgBUEQaiADEFIhAyAFIAQ6AA8gASACIAMgBUEPaiAAEQYAIQEgBUHwAGokACABC1YBBH9BgAEQxAghBCADLQAAIQMgBEGICDYCACAEQRhqEE8hBSAEQThqEE8hBiAEQdgAahBPIQcgBSAAEGggBiABEGggByACEGggBCADOgB4IAQQICAECyUBAX8jAEGAAWsiAiQAIAIgARAhIAARAAAhACACQYABaiQAIAALDABBgAEQxAggABAhCw0AIAEgACgCAGotAAALDwAgASAAKAIAaiACOgAACy0BAn9BEBDECCIAQQA2AgwgAEHwLTYCACAAIABBBGoiATYCCCAAIAE2AgQgAAsoAQF/IwBBEGsiAiQAIAIQRCIBIAARAAAhACABEEUaIAJBEGokACAACwkAQRAQxAgQRAubAgEEfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAkEEaiABIANBAXEEfyABKAIAIABqKAIABSAACxECAEEMEMQIIgRBADYCCCAEQgA3AgACQCACKAIIIgMgAigCBCIARwRAIAMgAGsiBUEobUHnzJkzTw0BIAQgBRDECCIBNgIEIAQgATYCACAEIAEgBWo2AggDQCABIAAQNkEoaiEBIABBKGoiACADRw0ACyAEIAE2AgQgAigCBCEACyAABEAgACEDIAAgAigCCCIBRwRAA0AgAUEoayIBIAEoAgAoAgARAAAaIAAgAUcNAAsgAigCBCEDCyACIAA2AgggAigCDBogAxDxAwsgAkEQaiQAIAQPCxBzAAsKAEE4EMQIEM0BCzkBAX8gACABNgIkIAAoAigiASAAKAIsIgJHBEADQCABKAIAIAAoAiQQ/wIgAUEEaiIBIAJHDQALCwsHACAAKAIkCwcAIAAoAhALBwAgACgCFAs5AQF/IAAgATYCFCAAKAIoIgEgACgCLCICRwRAA0AgASgCACAAKAIUEIMDIAFBBGoiASACRw0ACwsL4gIBB38Cf0HQABDECCIAQQA2AjAgAEIANwMoIABCADcCNCAAQgA3AxggAEHcPTYCACAAQgA3AjwgAEIANwJEQTgQxAgQzQEhBQJAAkACQCAAKAIsIgIgACgCMCIBSQRAIAIgBTYCACACQQRqIQUMAQsgAiAAKAIoIgNrQQJ1IgZBAWoiBEGAgICABE8NASAGQQJ0Qf////8DIAEgA2siAUEBdSIGIAQgBCAGSRsgAUH8////B08bIgEEfyABQYCAgIAETw0DIAFBAnQQxAgFQQALIgZqIgQgBTYCACAGIAFBAnRqIQEgBEEEaiEFIAIgA0cEQANAIARBBGsiBCACQQRrIgIoAgA2AgAgAiADRw0ACyAAKAIwGiAAKAIoIQMLIAAgATYCMCAAIAU2AiwgACAENgIoIANFDQAgAxDxAwsgAEKas+bMmbPm3D83AwggACAFNgIsIAAMAgsQcwALEHQACwsHACAAKwM4CwkAIAAgATkDOAt0AQN/IABBADYCCCAAQgA3AgACQCABKAJEIgMgASgCQCIBRwRAIAMgAWsiBEEobUHnzJkzTw0BIAAgBBDECCICNgIAIAAgAiAEajYCCANAIAIgARA2QShqIQIgAUEoaiIBIANHDQALIAAgAjYCBAsPCxBzAAvQAwEHfwJ/QegAEMQIIgBBADYCMCAAQgA3AyggAEEANgJIIABCADcDGCAAQcw+NgIAIABCADcDUCAAQgA3A1ggAEEANgJgQTgQxAgiAUEANgIwIAFCADcDKCABQQA2AhggAUHsPDYCACABQoCAgIAQNwMQQRgQxAgiAkIANwIIIAJB/Ds2AgAgAkIANwIQIAEgAjYCICABIQYCQAJAAkAgACgCLCIDIAAoAjAiAkkEQCADIAE2AgAgA0EEaiEGDAELIAMgACgCKCIEa0ECdSIBQQFqIgVBgICAgARPDQEgAUECdEH/////AyACIARrIgJBAXUiASAFIAEgBUsbIAJB/P///wdPGyICBH8gAkGAgICABE8NAyACQQJ0EMQIBUEACyIBaiIFIAY2AgAgASACQQJ0aiECIAVBBGohBiADIARHBEADQCAFQQRrIgUgA0EEayIDKAIANgIAIAMgBEcNAAsgACgCMBogACgCKCEECyAAIAI2AjAgACAGNgIsIAAgBTYCKCAERQ0AIAQQ8QMLIABCq47ayO35/fc/NwNAIABC+6i4vZTcnsI/NwM4IABCmrPmzJmz5tw/NwMIIAAgBjYCLCAADAILEHMACxB0AAsLCQAgACABOQNACx4AIAAgATYCSCAAKAIoKAIAIgAgACgCACgCLBEBAAsHACAAKwNQCwkAIAAgATkDUAt0AQN/IABBADYCCCAAQgA3AgACQCABKAJcIgMgASgCWCIBRwRAIAMgAWsiBEEobUHnzJkzTw0BIAAgBBDECCICNgIAIAAgAiAEajYCCANAIAIgARA2QShqIQIgAUEoaiIBIANHDQALIAAgAjYCBAsPCxBzAAtDAQF/QbgBEMQIIgBBkN0ANgIAIABBEGoQTxogAEEwahBPGiAAQgA3A2AgAEIANwNYIABCADcDUCAAQegAahAnGiAAC5oEAgh/A3wjAEGAAWsiASQAIAFB4ABqIABBEGoQWSABQeAAahBYIAFBQGsgAEHwAGogAEEwaiIHEF4gAUFAayABQeAAahBVIQkgAUFAayAAQZABaiAHEF4gAUFAayABQeAAahBVIQsgAUEANgI8IAFCADcCNCABIAkgCyAJIAtjIgIbIgo5AygCQCAKIAsgCSACGyIJZUUNACAAQdwAaiEIQQAhAgJAAkADQAJAIAECfyACIARJBEAgAiAKOQMAIAJBCGoMAQsgAiAGa0EDdSIFQQFqIgNBgICAgAJPDQEgBUEDdEH/////ASAEIAZrIgVBAnUiBCADIAMgBEkbIAVB+P///wdPGyIEBH8gBEGAgICAAk8NBCAEQQN0EMQIBUEACyIFaiIDIAo5AwAgBSAEQQN0aiEEIANBCGohBSACIAZHBEADQCADQQhrIgMgAkEIayICKwMAOQMAIAIgBkcNAAsLIAEgBDYCPCABIAU2AjggASADNgI0IAYEQCAGEPEDCyADIQYgBQsiAjYCOCABQQhqIAFBKGogAUHgAGoQYyABQUBrIAcgAUEIahBiIAACfyAAKAJgIgMgACgCZEkEQCADIAFBQGsQUkEgagwBCyAIIAFBQGsQcgs2AmAgASAAKwMIIAErAyigIgo5AyggCSAKZg0BDAMLCxBzAAsQdAALIAEoAjQiAkUNACACEPEDCyABQYABaiQACwsAIABBEGogARBoC0wBAn8jAEEgayIDJAAgASAAKAIEIgRBAXVqIQEgACgCACEAIARBAXEEQCABKAIAIABqKAIAIQALIAEgAyACEFIgABECACADQSBqJAALCwAgAEEwaiABEGgLCQAgACABOQMIC/ABAgF8AX8gAAJ/IAAoAlQiAyAAKAJYSQRAIAMgARBSQSBqDAELIABB0ABqIAEQcgs2AlQCQCAAQegAaiIALQBIRQRAIABBCGogARBoIABBKGogARBoIABBAToASAwBCyABKwMIIgIgACsDEGQEQCAAIAI5AxAgASsDCCECCyAAKwMwIAJkBEAgACACOQMwCyABKwMQIgIgACsDGGQEQCAAIAI5AxggASsDECECCyAAKwM4IAJkBEAgACACOQM4CyABKwMYIgIgACsDIGQEQCAAIAI5AyAgASsDGCECCyAAKwNAIAJkBEAgACACOQNACwsLwQMBBX8jAEGQAWsiAiQAIAJB9JYBNgI8IAJBgJcBKAIAIgM2AgQgA0EMaygCACACQQRqakGElwEoAgA2AgAgAigCBEEMaygCACACQQRqaiIDIAJBCGoiBBC2BSADQoCAgIBwNwJIIAJB9JYBNgI8IAJB4JYBNgIEIAQQmAQiBUHkkAE2AgAgAkIANwIwIAJCADcCKCACQRA2AjggAkGMAWogAkEEakGIIUEWECIgASgCVCABKAJQa0EFdRDFBCIBIAEoAgBBDGsoAgBqELIFIAJBjAFqQbC1AhCOBiIEQQogBCgCACgCHBEDACEEIAJBjAFqEIkGIwBBEGsiAyQAIANBCGogARDABBoCQCADQQhqLQAARQ0AIANBBGogARCtBCIGIAQQxwQgBhDEBEUNACABIAEoAgBBDGsoAgBqQQEQsgQLIANBCGoQwQQgA0EQaiQAIAEQqwQgACAFEOQEIAJB/JYBKAIAIgE2AgQgAUEMaygCACACQQRqakGIlwEoAgA2AgAgBUHkkAE2AgAgAkE8aiEBIAIsADNBAEgEQCACKAIwGiACKAIoEPEDCyAFEJYEGiABELQFGiACQZABaiQACwsAQcAAEMQIEPEBC28CAX8CfEGIARDECCECIAArAwAhAyABKwMAIQQgAkH8NjYCACACQQhqEC0aIAJBMGoQLRogAkIANwJ8IAIgAkHwAGo2AmwgAkIANwNwIAIgAkH8AGo2AnggAiADOQNgIAJBADoAaCACIAQ5A1ggAgsrACAAKAIAIQBBKBDECCAAIAFqIgEQUiIAQeAsNgIAIAAgASgCIDYCICAACxoAIAEgACgCAGoiACACEGggACACKAIgNgIgCzkBAX8gASAAKAIEIgRBAXVqIQEgACgCACEAIAEgAiADIARBAXEEfyABKAIAIABqKAIABSAACxEgAAsPAEH4ABDECCAAIAEQjgILCwBB6AAQxAgQlQILKwAgAEEANgIIIABCADcCACAAIAEoAkAiACABKAJEIgEgASAAa0EMbRDMAwuYAgEHfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAkEEaiABIANBAXEEfyABKAIAIABqKAIABSAACxECAEEMEMQIIgVBADYCCCAFQgA3AgAgBSACKAIEIgAgAigCCCIBIAEgAGtBDG0QzAMgAigCBCIGBEAgAigCCCIEIAYiAEcEQANAIARBDGsiAygCACIBBEAgASEHIAEgBEEIayIIKAIAIgBHBEADQCAAQSBrIgAgACgCACgCABEAABogACABRw0ACyADKAIAIQcLIAggATYCACAEQQRrKAIAGiAHEPEDCyADIQQgAyAGRw0ACyACKAIEIQALIAIgBjYCCCACKAIMGiAAEPEDCyACQRBqJAAgBQuiBQEJfwJ/QZgBEMQIEJUCIgBBxMIANgIAIAAgACgCKDYCLCAAQShqIQZBOBDECBD/ASEEAkACQAJAIAAoAiwiASAAKAIwIghJBEAgASAENgIAIAFBBGohBAwBCyABIAYoAgAiAmtBAnUiBUEBaiIDQYCAgIAETw0BIAVBAnRB/////wMgCCACayIFQQF1IgcgAyADIAdJGyAFQfz///8HTxsiBQR/IAVBgICAgARPDQMgBUECdBDECAVBAAsiB2oiAyAENgIAIAcgBUECdGohBSADQQRqIQQgASACRwRAA0AgA0EEayIDIAFBBGsiASgCADYCACABIAJHDQALIAAoAjAaIAAoAighAgsgACAFNgIwIAAgBDYCLCAAIAM2AiggAkUNACACEPEDCyAAIAQ2AixBOBDECBD/ASEEAkAgACgCLCIBIAAoAjAiCEkEQCABIAQ2AgAgAUEEaiEEDAELIAEgBigCACICa0ECdSIHQQFqIgNBgICAgARPDQFB/////wMgCCACayIGQQF1IgUgAyADIAVJGyAGQfz///8HTxsiBgR/IAZBgICAgARPDQMgBkECdBDECAVBAAsiBSAHQQJ0aiIDIAQ2AgAgBSAGQQJ0aiEGIANBBGohBCABIAJHBEADQCADQQRrIgMgAUEEayIBKAIANgIAIAEgAkcNAAsgACgCMBogACgCKCECCyAAIAY2AjAgACAENgIsIAAgAzYCKCACRQ0AIAIQ8QMLIAAgBDYCLCAAKAIoKAIAIgEgASgCACgCNBEBACAAKAIoKAIEIgEgASgCACgCOBEBACAAQquO2sjt+f33PzcDkAEgAEKas+bMmbPm3D83A4gBIABCgICAgICAgPg/NwMIIABBATYCJCAADAILEHMACxB0AAsLCgAgACABOQOIAQsuAQJ/QRgQxAgiAEEANgIMIABBtMQANgIAIAAgAEEEaiIBNgIIIAAgATYCBCAACxMBAX9BOBDECCIAQYA4NgIAIAALOwEBfyABIAAoAgQiBUEBdWohASAAKAIAIQAgASACIAMgBCAFQQFxBH8gASgCACAAaigCAAUgAAsRBgALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEUAAsHACAAKwMoCwcAIAArAzALBwAgACsDIAsUAEE4EMQIIAArAwAgASsDABC5AQsTAEE4EMQIIAArAwAgASsDABB1CxkAQcgAEMQIIAArAwAgASsDACACKwMAEHwLGgBBwAAQxAggACsDACABKwMAIAIrAwAQnQELkAECAX8CfEHoABDECCECIAArAwAhBCABKwMAIQMgAkIANwMgIAJCADcDOCACQfAxNgIAIAJCADcDKCACQUBrQgA3AwAgAkIANwNIIAJCADcDUCACQgA3A1ggAkIANwNgIAJBOBDECCAEIAMQuQEgBEQAAAAAAADgP6IgA0QAAAAAAAAAABCDASACIAM5AzAgAguPAQIBfwJ8QegAEMQIIQIgACsDACEEIAErAwAhAyACQgA3AyAgAkIANwM4IAJBrDI2AgAgAkIANwMoIAJBQGtCADcDACACQgA3A0ggAkIANwNQIAJCADcDWCACQgA3A2AgAkE4EMQIIAQgAxB1IAREAAAAAAAA4D+iIANEAAAAAAAAAAAQgwEgAiADOQMwIAILsQICAX8EfEHoABDECCEDIAArAwAhBCABKwMAIQUgAisDACEGIANCADcDICADQgA3AzggA0HoMjYCACADQgA3AyggA0FAa0IANwMAIANCADcDSCADQgA3A1AgA0IANwNYIANCADcDYEE4EMQIIAREAAAAAAAA8D8QuQEhAEHAABDECCAFIAZEAAAAAAAAJEAQnQEhAUE4EMQIIAVEAAAAAAAANEAQuQEhAiADIAAgBEQAAAAAAADgP6IiBEQAAAAAAAAAAEQAAAAAAAAAABCDASADIAEgBUQAAAAAAADgP6IiBSAFIAYQ3wMiBqMiByAEmiAGoyIGoCIEIAYQgwEgAyACIAUgB0QAAAAAAAA0QKAgBBCDASADIAREAAAAAAAAAACgRAAAAAAAACRAoDkDMCADCxoAQegAEMQIIAArAwAgASsDACACKwMAEJMBC0oBAX8jAEEgayIFJAAgBSABOQMYIAUgAjkDECAFIAM5AwggBSAEOQMAIAVBGGogBUEQaiAFQQhqIAUgABEGACEAIAVBIGokACAAC8oCAgF/BXxB6AAQxAghBCAAKwMAIQcgASsDACEFIAIrAwAhCCADKwMAIQYgBEIANwMgIARCADcDOCAEQeAzNgIAIARCADcDKCAEQUBrQgA3AwAgBEIANwNIIARCADcDUCAEQgA3A1ggBEIANwNgIAYQ2wMhCUHIABDECCAHIAVEAAAAAAAA8D8QfCEAQcAAEMQIIAggBkQAAAAAAAAkQBCdASEBQTgQxAggCEQAAAAAAAA0QBC5ASECIAQgACAHRAAAAAAAAOA/oiAFoSAFIAWiIAkgBaIiByAHoqGfoCIJIAUgB6EiB0QAAAAAAAAAABCDASAEIAEgCEQAAAAAAADgP6IiBSAFIAYQ3wMiBqMgCSAGoyAHoSIIoSIGIAiaEIMBIAQgAiAFIAZEAAAAAAAANECgIAYQgwEgBEKAgICAgICAn8AANwMwIAQLtgICAX8FfEHoABDECCEEIAArAwAhBSABKwMAIQYgAisDACEHIAMrAwAhCCAEQgA3AyAgBEIANwM4IARBnDQ2AgAgBEIANwMoIARBQGtCADcDACAEQgA3A0ggBEIANwNQIARCADcDWCAEQgA3A2AgBhDfAyEJQcAAEMQIIAUgBkQAAAAAAAAkQBCdASEAQcAAEMQIIAcgCEQAAAAAAAAkQBCdASEBQTgQxAggB0QAAAAAAAA0QBC5ASECIAQgACAFRAAAAAAAAOA/oiIFIAUgCaMiBkQAAAAAAAAAABCDASAEIAEgB0QAAAAAAADgP6IiByAHIAgQ3wMiCKMgBSAIoyAGoSIGoSIFIAaaEIMBIAQgAiAHIAVEAAAAAAAANECgIAUQgwEgBEKAgICAgICAn8AANwMwIAQLBgBBuOAAC18BA38gAARAIAAoAgAiAQRAIAEhAyABIAAoAgQiAkcEQANAIAJBIGsiAiACKAIAKAIAEQAAGiABIAJHDQALIAAoAgAhAwsgACABNgIEIAAoAggaIAMQ8QMLIAAQ8QMLCxkBAX9BDBDECCIAQQA2AgggAEIANwIAIAALLgEBfyAAKAIEIgIgACgCCEkEQCAAIAIgARBSQSBqNgIEDwsgACAAIAEQcjYCBAvHAwEEfyAAKAIEIgMgACgCACIEa0EFdSIFIAFJBEACQCABIAVrIgUgACgCCCIEIAAoAgQiA2tBBXVNBEAgACAFBH8gAyAFQQV0aiEEA0AgAyACEFJBIGoiAyAERw0ACyAEBSADCzYCBAwBCwJAIAMgACgCACIGa0EFdSIBIAVqIgNBgICAwABJBEAgAUEFdEH///8/IAQgBmsiBEEEdSIGIAMgAyAGSRsgBEHg////B08bIgYEfyAGQYCAgMAATw0CIAZBBXQQxAgFQQALIgFqIgQgBUEFdGohBSAEIQMDQCADIAIQUkEgaiIDIAVHDQALIAEgBkEFdGohBiAAKAIEIgMgACgCACICRwRAA0AgBEEgayADQSBrIgMQUiEEIAIgA0cNAAsgACgCBCEDIAAoAgAhAgsgACAFNgIEIAAgBDYCACAAKAIIGiAAIAY2AgggAiADRwRAA0AgA0EgayIDIAMoAgAoAgARAAAaIAIgA0cNAAsLIAIEQCACEPEDCwwCCxBzAAsQdAALDwsgASAFSQRAIAQgAUEFdGoiASADRwRAA0AgA0EgayIDIAMoAgAoAgARAAAaIAEgA0cNAAsLIAAgATYCBAsLOQEBfyABIAAoAgQiBEEBdWohASAAKAIAIQAgASACIAMgBEEBcQR/IAEoAgAgAGooAgAFIAALEQUACxAAIAAoAgQgACgCAGtBBXULXQEBfyMAQRBrIgMkACAAAn8gAiABKAIEIAEoAgAiAWtBBXVJBEAgA0EgEMQIIAEgAkEFdGoQUjYCCEGELSADQQhqEAcMAQtBAgs2AgQgAEGskwI2AgAgA0EQaiQACy4BAX8jAEEQayIDJAAgA0EIaiABIAIgACgCABEFACADKAIMIQAgA0EQaiQAIAALEwAgACgCACABQQV0aiACEGhBAQsQACABIAIgAyAAKAIAEQQACwYAQeDYAAtfAQN/IAAEQCAAKAIAIgEEQCABIQMgASAAKAIEIgJHBEADQCACQShrIgIgAigCACgCABEAABogASACRw0ACyAAKAIAIQMLIAAgATYCBCAAKAIIGiADEPEDCyAAEPEDCwsvAQF/IAAoAgQiAiAAKAIISQRAIAAgAiABEDZBKGo2AgQPCyAAIAAgARDTATYCBAvHAwEEfyAAKAIEIgMgACgCACIEa0EobSIFIAFJBEACQCABIAVrIgUgACgCCCIEIAAoAgQiA2tBKG1NBEAgACAFBH8gAyAFQShsaiEEA0AgAyACEDZBKGoiAyAERw0ACyAEBSADCzYCBAwBCwJAIAMgACgCACIGa0EobSIBIAVqIgNB58yZM0kEQCABQShsQebMmTMgBCAGa0EobSIEQQF0IgYgAyADIAZJGyAEQbPmzBlPGyIGBH8gBkHnzJkzTw0CIAZBKGwQxAgFQQALIgFqIgQgBUEobGohBSAEIQMDQCADIAIQNkEoaiIDIAVHDQALIAEgBkEobGohBiAAKAIEIgMgACgCACICRwRAA0AgBEEoayADQShrIgMQNiEEIAIgA0cNAAsgACgCBCEDIAAoAgAhAgsgACAFNgIEIAAgBDYCACAAKAIIGiAAIAY2AgggAiADRwRAA0AgA0EoayIDIAMoAgAoAgARAAAaIAIgA0cNAAsLIAIEQCACEPEDCwwCCxBzAAsQdAALDwsgASAFSQRAIAQgAUEobGoiASADRwRAA0AgA0EoayIDIAMoAgAoAgARAAAaIAEgA0cNAAsLIAAgATYCBAsLEAAgACgCBCAAKAIAa0EobQtdAQF/IwBBEGsiAyQAIAACfyACIAEoAgQgASgCACIBa0EobUkEQCADQSgQxAggASACQShsahA2NgIIQbgtIANBCGoQBwwBC0ECCzYCBCAAQayTAjYCACADQRBqJAALEwAgACgCACABQShsaiACED5BAQsGAEGE5QALqgEBB38gAARAIAAoAgAiBARAIAAoAgQiAiAEIgFHBEADQCACQQxrIgYoAgAiAwRAIAMhBSADIAJBCGsiBygCACIBRwRAA0AgAUEgayIBIAEoAgAoAgARAAAaIAEgA0cNAAsgBigCACEFCyAHIAM2AgAgAkEEaygCABogBRDxAwsgBiICIARHDQALIAAoAgAhAQsgACAENgIEIAAoAggaIAEQ8QMLIAAQ8QMLC5wBAQR/AkAgACgCBCICIAAoAghJBEAgAkEANgIIIAJCADcCACABKAIEIgQgASgCACIBRwRAIAQgAWsiBUEASA0CIAIgBRDECCIDNgIEIAIgAzYCACACIAMgBWo2AggDQCADIAEQUkEgaiEDIAFBIGoiASAERw0ACyACIAM2AgQLIAAgAkEMajYCBA8LIAAgACABEK8CNgIEDwsQcwALmwcBB38gACgCBCIDIAAoAgAiBGtBDG0iBSABSQRAIAIhBkEAIQICQAJAAkACQAJAIAEgBWsiASAAIgcoAggiBCAAKAIEIgNrQQxtTQRAIAAgAQR/IAMgAUEMbGohBQNAIANBADYCCCADQgA3AgAgBigCBCIEIAYoAgAiAUcEQCAEIAFrIgBBAEgNBCADIAAQxAgiAjYCBCADIAI2AgAgAyAAIAJqNgIIA0AgAiABEFJBIGohAiABQSBqIgEgBEcNAAsgAyACNgIECyADQQxqIgMgBUcNAAsgBQUgAws2AgQMBQsgAyAHKAIAIgBrQQxtIgUgAWoiA0HWqtWqAU8NAUHVqtWqASAEIABrQQxtIgRBAXQiACADIAAgA0sbIARBqtWq1QBPGyIEBEAgBEHWqtWqAU8NAyAEQQxsEMQIIQILIAIgBUEMbGoiACABQQxsaiEIIAIgBEEMbGohCSAAIQMDQCADQQA2AgggA0IANwIAIAYoAgQiBCAGKAIAIgFHBEAgBCABayIFQQBIDQUgAyAFEMQIIgI2AgQgAyACNgIAIAMgAiAFajYCCANAIAIgARBSQSBqIQIgAUEgaiIBIARHDQALIAMgAjYCBAsgA0EMaiIDIAhHDQALAkAgBygCBCIEIAcoAgAiBUYEQCAAIQIMAQsDQCAAQQRrIgNBADYCACAAQQxrIgJCADcCACACIARBDGsiASgCADYCACAAQQhrIARBCGsoAgA2AgAgAyAEQQRrIgQoAgA2AgAgBEEANgIAIAFCADcCACACIQAgBSABIgRHDQALIAcoAgQhBCAHKAIAIQULIAcgCDYCBCAHIAI2AgAgBygCCBogByAJNgIIIAQgBUcEQANAIARBDGsiAygCACICBEAgAiEGIAIgBEEIayIAKAIAIgFHBEADQCABQSBrIgEgASgCACgCABEAABogASACRw0ACyADKAIAIQYLIAAgAjYCACAEQQRrKAIAGiAGEPEDCyADIQQgAyAFRw0ACwsgBQRAIAUQ8QMLDAQLEHMACxBzAAsQdAALEHMACw8LIAEgBUkEQCAEIAFBDGxqIgYgA0cEQANAIANBDGsiAigCACIFBEAgA0EIayIHKAIAIgEgBSIERwRAA0AgAUEgayIBIAEoAgAoAgARAAAaIAEgBUcNAAsgAigCACEECyAHIAU2AgAgA0EEaygCABogBBDxAwsgBiACIgNHDQALCyAAIAY2AgQLCxAAIAAoAgQgACgCAGtBDG0L3QEBBH8gAiABKAIEIAEoAgAiAWtBDG1JBEAjAEEQayIEJABBDBDECCIDQQA2AgggA0IANwIAAkACQCABIAJBDGxqIgIoAgQiBSACKAIAIgJHBEAgBSACayIGQQBIDQEgAyAGEMQIIgE2AgQgAyABNgIAIAMgASAGajYCCANAIAEgAhBSQSBqIQEgAkEgaiICIAVHDQALIAMgATYCBAsgBCADNgIIIABBuOAAIARBCGoQBzYCBCAAQayTAjYCACAEQRBqJAAMAQsQcwALDwsgAEECNgIEIABBrJMCNgIAC4QEAQR/IAIgACgCACABQQxsaiIBRwRAAkAgAigCACIAIQUgAigCBCICIABrQQV1IgYgASgCCCIEIAEoAgAiA2tBBXVNBEAgBiABKAIEIgQgA2siAEEFdUsEQCAAIAVqIQYgAyAERwRAA0AgAyAFEGggA0EgaiEDIAVBIGoiBSAGRw0ACyABKAIEIQQLIAQhBSACIAZHBEADQCAFIAYQUkEgaiEFIAZBIGoiBiACRw0ACwsgASAEIAUgBGtqNgIEDAILIAIgBUcEQANAIAMgBRBoIANBIGohAyAFQSBqIgUgAkcNAAsgASgCBCEECyADIARHBEADQCAEQSBrIgQgBCgCACgCABEAABogAyAERw0ACwsgASADNgIEDAELIAMEQCADIQAgAyABKAIEIgRHBEADQCAEQSBrIgQgBCgCACgCABEAABogAyAERw0ACyABKAIIGiABKAIAIQALIAEgAzYCBCAAEPEDIAFBADYCCCABQgA3AgBBACEECwJAIAZBgICAwABPDQBB////PyAEQQR1IgMgBiADIAZLGyAEQeD///8HTxsiA0GAgIDAAE8NACABIANBBXQiBBDECCIDNgIEIAEgAzYCACABIAMgBGo2AgggAiAFRwRAA0AgAyAFEFJBIGohAyAFQSBqIgUgAkcNAAsLIAEgAzYCBAwBCxBzAAsLQQEL0gEBBH8CQAJAIAMEQCADQdaq1aoBTw0BIAAgA0EMbCIDEMQIIgQ2AgQgACAENgIAIAAgAyAEajYCCCABIAJHBEADQCAEQQA2AgggBEIANwIAIAEoAgQiBiABKAIAIgNHBEAgBiADayIHQQBIDQUgBCAHEMQIIgU2AgQgBCAFNgIAIAQgBSAHajYCCANAIAUgAxBSQSBqIQUgA0EgaiIDIAZHDQALIAQgBTYCBAsgBEEMaiEEIAFBDGoiASACRw0ACwsgACAENgIECw8LEHMACxBzAAt2AQN/IABB4NIANgIAAkAgACgCDEUNACAAKAIIIgEoAgAiAiAAKAIEKAIEIgM2AgQgAyACNgIAIABBADYCDCABIABBBGoiA0YNAANAIAEoAgQhAiABQQhqIAEoAggoAgARAAAaIAEQ8QMgAyACIgFHDQALCyAAC3kBA38gAEHg0gA2AgACQCAAKAIMRQ0AIAAoAggiASgCACICIAAoAgQoAgQiAzYCBCADIAI2AgAgAEEANgIMIAEgAEEEaiIDRg0AA0AgASgCBCECIAFBCGogASgCCCgCABEAABogARDxAyADIAIiAUcNAAsLIAAQ8QMLsQEBA38gAEGQ3QA2AgAgACgCXCIBBEAgASEDIAEgACgCYCICRwRAA0AgAkEgayICIAIoAgAoAgARAAAaIAEgAkcNAAsgACgCXCEDCyAAIAE2AmAgACgCZBogAxDxAwsgACgCUCIBBEAgASEDIAEgACgCVCICRwRAA0AgAkEgayICIAIoAgAoAgARAAAaIAEgAkcNAAsgACgCUCEDCyAAIAE2AlQgACgCWBogAxDxAwsgAAu0AQEDfyAAQZDdADYCACAAKAJcIgEEQCABIQMgASAAKAJgIgJHBEADQCACQSBrIgIgAigCACgCABEAABogASACRw0ACyAAKAJcIQMLIAAgATYCYCAAKAJkGiADEPEDCyAAKAJQIgEEQCABIQMgASAAKAJUIgJHBEADQCACQSBrIgIgAigCACgCABEAABogASACRw0ACyAAKAJQIQMLIAAgATYCVCAAKAJYGiADEPEDCyAAEPEDC40BACAAIAAgACAAIABECff9DeE9Aj+iRIiyAXXg70k/oKJEO49otSiCpL+gokRVRIgOVcHJP6CiRH1v6wMS1tS/oKJEVVVVVVVVxT+gIACiIAAgACAAIABEgpIuscW4sz+iRFkBjRtsBua/oKJEyIpZnOUqAECgokRLLYocJzoDwKCiRAAAAAAAAPA/oKML/gMDA3wCfwF+IAC9IgZCIIinQf////8HcSIEQYCAwKAETwRAIABEGC1EVPsh+T8gAKYgAL1C////////////AINCgICAgICAgPj/AFYbDwsCQAJ/IARB///v/gNNBEBBfyAEQYCAgPIDTw0BGgwCCyAAmSEAIARB///L/wNNBEAgBEH//5f/A00EQCAAIACgRAAAAAAAAPC/oCAARAAAAAAAAABAoKMhAEEADAILIABEAAAAAAAA8L+gIABEAAAAAAAA8D+goyEAQQEMAQsgBEH//42ABE0EQCAARAAAAAAAAPi/oCAARAAAAAAAAPg/okQAAAAAAADwP6CjIQBBAgwBC0QAAAAAAADwvyAAoyEAQQMLIQUgACAAoiICIAKiIgEgASABIAEgAUQvbGosRLSiv6JEmv3eUi3erb+gokRtmnSv8rCzv6CiRHEWI/7Gcby/oKJExOuYmZmZyb+goiEDIAIgASABIAEgASABRBHaIuM6rZA/okTrDXYkS3upP6CiRFE90KBmDbE/oKJEbiBMxc1Ftz+gokT/gwCSJEnCP6CiRA1VVVVVVdU/oKIhASAEQf//7/4DTQRAIAAgACADIAGgoqEPCyAFQQN0IgRBkPMAaisDACAAIAMgAaCiIARBsPMAaisDAKEgAKGhIgCaIAAgBkIAUxshAAsgAAuSAQEDfEQAAAAAAADwPyAAIACiIgJEAAAAAAAA4D+iIgOhIgREAAAAAAAA8D8gBKEgA6EgAiACIAIgAkSQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiIAIgAqIiAyADoiACIAJE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiIAAgAaKhoKALxhgDE38EfAF+IwBBMGsiCCQAAkACQAJAIAC9IhlCIIinIgNB/////wdxIgRB+tS9gARNBEAgA0H//z9xQfvDJEYNASAEQfyyi4AETQRAIBlCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhU5AwAgASAAIBWhRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk/oCIARDFjYhphtNA9oCIVOQMAIAEgACAVoUQxY2IaYbTQPaA5AwhBfyEDDAQLIBlCAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhU5AwAgASAAIBWhRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIVOQMAIAEgACAVoUQxY2IaYbTgPaA5AwhBfiEDDAMLIARBu4zxgARNBEAgBEG8+9eABE0EQCAEQfyyy4AERg0CIBlCAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhU5AwAgASAAIBWhRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIVOQMAIAEgACAVoUTKlJOnkQ7pPaA5AwhBfSEDDAQLIARB+8PkgARGDQEgGUIAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiFTkDACABIAAgFaFEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhU5AwAgASAAIBWhRDFjYhphtPA9oDkDCEF8IQMMAwsgBEH6w+SJBEsNAQsgACAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIhVEAABAVPsh+b+ioCIWIBVEMWNiGmG00D2iIhehIhhEGC1EVPsh6b9jIQUCfyAVmUQAAAAAAADgQWMEQCAVqgwBC0GAgICAeAshAwJAIAUEQCADQQFrIQMgFUQAAAAAAADwv6AiFUQxY2IaYbTQPaIhFyAAIBVEAABAVPsh+b+ioCEWDAELIBhEGC1EVPsh6T9kRQ0AIANBAWohAyAVRAAAAAAAAPA/oCIVRDFjYhphtNA9oiEXIAAgFUQAAEBU+yH5v6KgIRYLIAEgFiAXoSIAOQMAAkAgBEEUdiIFIAC9QjSIp0H/D3FrQRFIDQAgASAWIBVEAABgGmG00D2iIgChIhggFURzcAMuihmjO6IgFiAYoSAAoaEiF6EiADkDACAFIAC9QjSIp0H/D3FrQTJIBEAgGCEWDAELIAEgGCAVRAAAAC6KGaM7oiIAoSIWIBVEwUkgJZqDezmiIBggFqEgAKGhIhehIgA5AwALIAEgFiAAoSAXoTkDCAwBCyAEQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgCEEQakEIciECIBlC/////////weDQoCAgICAgICwwQCEvyEAIAhBEGohA0EBIQUDQCADAn8gAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLtyIVOQMAIAAgFaFEAAAAAAAAcEGiIQAgBUEBcSEHQQAhBSACIQMgBw0ACyAIIAA5AyBBAiEDA0AgAyIFQQFrIQMgCEEQaiAFQQN0aisDAEQAAAAAAAAAAGENAAsgCEEQaiEPIwBBsARrIgYkACAEQRR2QZYIayICIAJBA2tBGG0iBEEAIARBAEobIhBBaGxqIQdB1PMAKAIAIgogBUEBaiIFQQFrIgtqQQBOBEAgBSAKaiEDIBAgC2shAkEAIQQDQCAGQcACaiAEQQN0aiACQQBIBHxEAAAAAAAAAAAFIAJBAnRB4PMAaigCALcLOQMAIAJBAWohAiAEQQFqIgQgA0cNAAsLIAdBGGshDEEAIQMgCkEAIApBAEobIQkgBUEATCEOA0ACQCAOBEBEAAAAAAAAAAAhAAwBCyADIAtqIQRBACECRAAAAAAAAAAAIQADQCAPIAJBA3RqKwMAIAZBwAJqIAQgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAFRw0ACwsgBiADQQN0aiAAOQMAIAMgCUYhAiADQQFqIQMgAkUNAAtBLyAHayESQTAgB2shESAHQRlrIRMgCiEDAkADQCAGIANBA3RqKwMAIQBBACECIAMhBCADQQBMIg5FBEADQCAGQeADaiACQQJ0agJ/An8gAEQAAAAAAABwPqIiFplEAAAAAAAA4EFjBEAgFqoMAQtBgICAgHgLtyIWRAAAAAAAAHDBoiAAoCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAs2AgAgBiAEQQFrIgRBA3RqKwMAIBagIQAgAkEBaiICIANHDQALCwJ/IAAgDBDaAyIAIABEAAAAAAAAwD+inEQAAAAAAAAgwKKgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyELIAAgC7ehIQACQAJAAkACfyAMQQBMIhRFBEAgA0ECdCAGakHcA2oiAiACKAIAIgIgAiARdSICIBF0ayIENgIAIAIgC2ohCyAEIBJ1DAELIAwNASADQQJ0IAZqKALcA0EXdQsiDUEATA0CDAELQQIhDSAARAAAAAAAAOA/Zg0AQQAhDQwBC0EAIQJBACEJIA5FBEADQCAGQeADaiACQQJ0aiIOKAIAIQQCfwJAIA4gCQR/Qf///wcFIARFDQFBgICACAsgBGs2AgBBAQwBC0EACyEJIAJBAWoiAiADRw0ACwsCQCAUDQBB////AyECAkACQCATDgIBAAILQf///wEhAgsgA0ECdCAGakHcA2oiBCAEKAIAIAJxNgIACyALQQFqIQsgDUECRw0ARAAAAAAAAPA/IAChIQBBAiENIAlFDQAgAEQAAAAAAADwPyAMENoDoSEACyAARAAAAAAAAAAAYQRAQQAhBAJAIAMiAiAKTA0AA0AgBkHgA2ogAkEBayICQQJ0aigCACAEciEEIAIgCkoNAAsgBEUNACAMIQcDQCAHQRhrIQcgBkHgA2ogA0EBayIDQQJ0aigCAEUNAAsMAwtBASECA0AgAiIEQQFqIQIgBkHgA2ogCiAEa0ECdGooAgBFDQALIAMgBGohCQNAIAZBwAJqIAMgBWoiBEEDdGogA0EBaiIDIBBqQQJ0QeDzAGooAgC3OQMAQQAhAkQAAAAAAAAAACEAIAVBAEoEQANAIA8gAkEDdGorAwAgBkHAAmogBCACa0EDdGorAwCiIACgIQAgAkEBaiICIAVHDQALCyAGIANBA3RqIAA5AwAgAyAJSA0ACyAJIQMMAQsLAkAgAEEYIAdrENoDIgBEAAAAAAAAcEFmBEAgBkHgA2ogA0ECdGoCfwJ/IABEAAAAAAAAcD6iIhaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4CyICt0QAAAAAAABwwaIgAKAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLNgIAIANBAWohAwwBCwJ/IACZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyECIAwhBwsgBkHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gBxDaAyEAAkAgA0EASA0AIAMhBQNAIAYgBSICQQN0aiAAIAZB4ANqIAJBAnRqKAIAt6I5AwAgAkEBayEFIABEAAAAAAAAcD6iIQAgAg0ACyADQQBIDQAgAyEEA0BEAAAAAAAAAAAhAEEAIQIgCiADIARrIgkgCSAKShsiD0EATgRAA0AgAkEDdEGwiQFqKwMAIAYgAiAEakEDdGorAwCiIACgIQAgAiAPRyEFIAJBAWohAiAFDQALCyAGQaABaiAJQQN0aiAAOQMAIARBAEohAiAEQQFrIQQgAg0ACwtEAAAAAAAAAAAhACADQQBOBEAgAyEFA0AgBSICQQFrIQUgACAGQaABaiACQQN0aisDAKAhACACDQALCyAIIACaIAAgDRs5AwAgBisDoAEgAKEhAEEBIQIgA0EASgRAA0AgACAGQaABaiACQQN0aisDAKAhACACIANHIQUgAkEBaiECIAUNAAsLIAggAJogACANGzkDCCAGQbAEaiQAIAtBB3EhAyAIKwMAIQAgGUIAUwRAIAEgAJo5AwAgASAIKwMImjkDCEEAIANrIQMMAQsgASAAOQMAIAEgCCsDCDkDCAsgCEEwaiQAIAMLmQEBA3wgACAAoiIDIAMgA6KiIANEfNXPWjrZ5T2iROucK4rm5Vq+oKIgAyADRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKAhBSADIACiIQQgAkUEQCAEIAMgBaJESVVVVVVVxb+goiAAoA8LIAAgAyABRAAAAAAAAOA/oiAFIASioaIgAaEgBERJVVVVVVXFP6KgoQvGAQIBfAJ/IwBBEGsiAiQAAnwgAL1CIIinQf////8HcSIDQfvDpP8DTQRARAAAAAAAAPA/IANBnsGa8gNJDQEaIABEAAAAAAAAAAAQ0wMMAQsgACAAoSADQYCAwP8HTw0AGiAAIAIQ1AMhAyACKwMIIQAgAisDACEBAkACQAJAAkAgA0EDcUEBaw4DAQIDAAsgASAAENMDDAMLIAEgAEEBENUDmgwCCyABIAAQ0wOaDAELIAEgAEEBENUDCyEBIAJBEGokACABC4IEAQN/IAJBgARPBEAgACABIAIQECAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLIANBfHEhBAJAIANBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAAC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAAC4EBAQJ/AkACQCACQQRPBEAgACABckEDcQ0BA0AgACgCACABKAIARw0CIAFBBGohASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCwNAIAAtAAAiAyABLQAAIgRGBEAgAUEBaiEBIABBAWohACACQQFrIgINAQwCCwsgAyAEaw8LQQALqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F08bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhNG0GSD2ohAQsgACABQf8Haq1CNIa/ogvKAQICfwF8IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAENUDIQAMAQsgAkGAgMD/B08EQCAAIAChIQAMAQsgACABENQDIQIgASsDCCEAIAErAwAhAwJAAkACQAJAIAJBA3FBAWsOAwECAwALIAMgAEEBENUDIQAMAwsgAyAAENMDIQAMAgsgAyAAQQEQ1QOaIQAMAQsgAyAAENMDmiEACyABQRBqJAAgAAsoAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAhDtAyECIANBEGokACACC30BA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQFBgIKECCACKAIAIgNrIANyQYCBgoR4cUGAgYKEeEYNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrC58DAwJ8AX4CfyAAvSIFQoCAgICA/////wCDQoGAgIDwhOXyP1QiBkUEQEQYLURU+yHpPyAAmaFEB1wUMyamgTwgASABmiAFQgBZIgcboaAhAEQAAAAAAAAAACEBCyAAIAAgACAAoiIEoiIDRGNVVVVVVdU/oiAEIAMgBCAEoiIDIAMgAyADIANEc1Ng28t1876iRKaSN6CIfhQ/oKJEAWXy8thEQz+gokQoA1bJIm1tP6CiRDfWBoT0ZJY/oKJEev4QERERwT+gIAQgAyADIAMgAyADRNR6v3RwKvs+okTpp/AyD7gSP6CiRGgQjRr3JjA/oKJEFYPg/sjbVz+gokSThG7p4yaCP6CiRP5Bsxu6oas/oKKgoiABoKIgAaCgIgSgIQMgBkUEQEEBIAJBAXRrtyIBIAAgBCADIAOiIAMgAaCjoaAiAyADoKEiAyADmiAHGw8LIAIEfEQAAAAAAADwvyADoyIBIAG9QoCAgIBwg78iASAEIAO9QoCAgIBwg78iAyAAoaGiIAEgA6JEAAAAAAAA8D+goKIgAaAFIAMLC4QBAQJ/IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgICA8gNJDQEgAEQAAAAAAAAAAEEAEN4DIQAMAQsgAkGAgMD/B08EQCAAIAChIQAMAQsgACABENQDIQIgASsDACABKwMIIAJBAXEQ3gMhAAsgAUEQaiQAIAALfAECfyAAIAAoAkgiAUEBayABcjYCSCAAKAIUIAAoAhxHBEAgAEEAQQAgACgCJBEEABoLIABBADYCHCAAQgA3AxAgACgCACIBQQRxBEAgACABQSByNgIAQX8PCyAAIAAoAiwgACgCMGoiAjYCCCAAIAI2AgQgAUEbdEEfdQtBAQJ/IwBBEGsiASQAQX8hAgJAIAAQ4AMNACAAIAFBD2pBASAAKAIgEQQAQQFHDQAgAS0ADyECCyABQRBqJAAgAgtHAQJ/IAAgATcDcCAAIAAoAiwgACgCBCIDa6w3A3ggACgCCCECAkAgAVANACACIANrrCABVw0AIAMgAadqIQILIAAgAjYCaAvUAQIDfwJ+AkAgACkDcCIEQgBSIAQgACkDeCAAKAIEIgEgACgCLCICa6x8IgVXcUUEQCAAEOEDIgJBAE4NASAAKAIsIQIgACgCBCEBCyAAQn83A3AgACABNgJoIAAgBSACIAFrrHw3A3hBfw8LIAVCAXwhBSAAKAIEIQEgACgCCCEDAkAgACkDcCIEUA0AIAQgBX0iBCADIAFrrFkNACABIASnaiEDCyAAIAM2AmggACAFIAAoAiwiAyABa6x8NwN4IAEgA00EQCABQQFrIAI6AAALIAILPAAgACABNwMAIAAgAkL///////8/gyACQoCAgICAgMD//wCDQjCIpyADQjCIp0GAgAJxcq1CMIaENwMIC8QCAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABD9AyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABD9A0H9/wIgAyADQf3/Ak8bQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQ/QMgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3/AGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5EP0DQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhD9AyAAIAQpAwg3AwggACAEKQMANwMAIARB0ABqJAALzgYCBH8DfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABD2A0UNAAJ/IARC////////P4MhCgJ/IARCMIinQf//AXEiB0H//wFHBEBBBCAHDQEaQQJBAyADIAqEUBsMAgsgAyAKhFALC0UNACACQjCIpyIIQf//AXEiBkH//wFHDQELIAVBEGogASACIAMgBBD9AyAFIAUpAxAiBCAFKQMYIgMgBCADEPgDIAUpAwghAiAFKQMAIQQMAQsgASACQv///////////wCDIgogAyAEQv///////////wCDIgkQ9gNBAEwEQCABIAogAyAJEPYDBEAgASEEDAILIAVB8ABqIAEgAkIAQgAQ/QMgBSkDeCECIAUpA3AhBAwBCyAEQjCIp0H//wFxIQcgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQ/QMgBSkDaCIKQjCIp0H4AGshBiAFKQNgCyEEIAdFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABD9AyAFKQNYIglCMIinQfgAayEHIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCyAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0oEQANAAn4gCiALfSADIARWrX0iCUIAWQRAIAkgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQ/QMgBSkDKCECIAUpAyAhBAwFCyAJQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiALfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQ/QMgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQMgBkEBayEGIARCAYYhBCADIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhByAGQQBMBEAgBUFAayAEIAlC////////P4MgBkH4AGogB3KtQjCGhEIAQoCAgICAgMDDPxD9AyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAvhMwMQfwd+AXwjAEEwayINJAACQAJAIAJBAksNACACQQJ0IgJBrIoBaigCACEPIAJBoIoBaigCACEOA0ACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABEOMDCyICEOgDDQALQQEhBwJAAkAgAkEraw4DAAEAAQtBf0EBIAJBLUYbIQcgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABEOMDIQILAkACQCACQV9xQckARgRAA0AgBkEHRg0CAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARDjAwshAiAGQa0IaiEFIAZBAWohBiAFLAAAIAJBIHJGDQALCyAGQQNHBEAgBkEIRg0BIANFDQIgBkEESQ0CIAZBCEYNAQsgASkDcCIVQgBZBEAgASABKAIEQQFrNgIECyADRQ0AIAZBBEkNACAVQgBTIQIDQCACRQRAIAEgASgCBEEBazYCBAsgBkEBayIGQQNLDQALC0IAIRUjAEEQayICJAAgB7JDAACAf5S8IgNB////A3EhAQJ/IANBF3YiB0H/AXEiDwRAIA9B/wFHBEAgAa1CGYYhFCAHQf8BcUGA/wBqDAILIAGtQhmGIRRB//8BDAELQQAgAUUNABogAiABrUIAIAFnIgFB0QBqEPUDIAIpAwhCgICAgICAwACFIRQgAikDACEVQYn/ACABawshASANIBU3AwAgDSABrUIwhiADQR92rUI/hoQgFIQ3AwggAkEQaiQAIA0pAwghFCANKQMAIRUMAgsCQAJAAkACQAJAIAYNAEEAIQYgAkFfcUHOAEcNAANAIAZBAkYNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQ4wMLIQIgBkGfEGohBSAGQQFqIQYgBSwAACACQSByRg0ACwsgBg4EAwEBAAELAkACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABEOMDC0EoRgRAQQEhBgwBC0KAgICAgIDg//8AIRQgASkDcEIAUw0FIAEgASgCBEEBazYCBAwFCwNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARDjAwsiAkHBAGshBQJAAkAgAkEwa0EKSQ0AIAVBGkkNACACQeEAayEFIAJB3wBGDQAgBUEaTw0BCyAGQQFqIQYMAQsLQoCAgICAgOD//wAhFCACQSlGDQQgASkDcCIXQgBZBEAgASABKAIEQQFrNgIECwJAIAMEQCAGDQEMBgtBuJQCQRw2AgAMAgsDQCAXQgBZBEAgASABKAIEQQFrNgIECyAGQQFrIgYNAAsMBAsgASkDcEIAWQRAIAEgASgCBEEBazYCBAtBuJQCQRw2AgALIAFCABDiAwwBCwJAIAJBMEcNAAJ/IAEoAgQiBiABKAJoRwRAIAEgBkEBajYCBCAGLQAADAELIAEQ4wMLQV9xQdgARgRAIA1BEGohBCAOIQYjAEGwA2siBSQAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARDjAwshAgJAAn8DQAJAIAJBMEcEQCACQS5HDQQgASgCBCICIAEoAmhGDQEgASACQQFqNgIEIAItAAAMAwsgASgCBCICIAEoAmhHBEBBASERIAEgAkEBajYCBCACLQAAIQIMAgVBASERIAEQ4wMhAgwCCwALCyABEOMDCyICQTBHBEBBASELDAELA0AgF0IBfSEXAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARDjAwsiAkEwRg0AC0EBIQtBASERC0KAgICAgIDA/z8hFQNAAkAgAiEOAkACQCACQTBrIgpBCkkNACACQS5HIAJBIHIiDkHhAGtBBUtxDQIgAkEuRw0AIAsNAkEBIQsgFCEXDAELIA5B1wBrIAogAkE5ShshAgJAIBRCB1cEQCACIAlBBHRqIQkMAQsgFEIcWARAIAVBMGogAhD6AyAFQSBqIBkgFUIAQoCAgICAgMD9PxD9AyAFQRBqIAUpAzAgBSkDOCAFKQMgIhkgBSkDKCIVEP0DIAUgBSkDECAFKQMYIBYgGBD0AyAFKQMIIRggBSkDACEWDAELIAJFDQAgCA0AIAVB0ABqIBkgFUIAQoCAgICAgID/PxD9AyAFQUBrIAUpA1AgBSkDWCAWIBgQ9AMgBSkDSCEYQQEhCCAFKQNAIRYLIBRCAXwhFEEBIRELIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAgUgARDjAyECDAILAAsLAn4gEUUEQAJAAkAgASkDcEIAWQRAIAEgASgCBCICQQFrNgIEIANFDQEgASACQQJrNgIEIAtFDQIgASACQQNrNgIEDAILIAMNAQsgAUIAEOIDCyAFQeAAakQAAAAAAAAAACAHt6YQ+QMgBSkDYCEWIAUpA2gMAQsgFEIHVwRAIBQhFQNAIAlBBHQhCSAVQgF8IhVCCFINAAsLAkACQAJAIAJBX3FB0ABGBEAgASADEOkDIhVCgICAgICAgICAf1INAyADBEAgASkDcEIAWQ0CDAMLQgAhFiABQgAQ4gNCAAwEC0IAIRUgASkDcEIAUw0CCyABIAEoAgRBAWs2AgQLQgAhFQsgCUUEQCAFQfAAakQAAAAAAAAAACAHt6YQ+QMgBSkDcCEWIAUpA3gMAQsgFyAUIAsbQgKGIBV8QiB9IhRBACAPa61VBEBBuJQCQcQANgIAIAVBoAFqIAcQ+gMgBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AEP0DIAVBgAFqIAUpA5ABIAUpA5gBQn9C////////v///ABD9AyAFKQOAASEWIAUpA4gBDAELIA9B4gFrrCAUVwRAIAlBAE4EQANAIAVBoANqIBYgGEIAQoCAgICAgMD/v38Q9AMgFiAYQoCAgICAgID/PxD3AyECIAVBkANqIBYgGCAFKQOgAyAWIAJBAE4iAhsgBSkDqAMgGCACGxD0AyAJQQF0IgEgAnIhCSAUQgF9IRQgBSkDmAMhGCAFKQOQAyEWIAFBAE4NAAsLAn4gFCAPrH1CIHwiF6ciAkEAIAJBAEobIAYgFyAGrVMbIgJB8QBOBEAgBUGAA2ogBxD6AyAFKQOIAyEXIAUpA4ADIRlCAAwBCyAFQeACakQAAAAAAADwP0GQASACaxDaAxD5AyAFQdACaiAHEPoDIAUpA9ACIRkgBUHwAmogBSkD4AIgBSkD6AIgBSkD2AIiFxDkAyAFKQP4AiEaIAUpA/ACCyEVIAVBwAJqIAkgCUEBcUUgFiAYQgBCABD2A0EARyACQSBIcXEiAnIQ+wMgBUGwAmogGSAXIAUpA8ACIAUpA8gCEP0DIAVBkAJqIAUpA7ACIAUpA7gCIBUgGhD0AyAFQaACaiAZIBdCACAWIAIbQgAgGCACGxD9AyAFQYACaiAFKQOgAiAFKQOoAiAFKQOQAiAFKQOYAhD0AyAFQfABaiAFKQOAAiAFKQOIAiAVIBoQ/wMgBSkD8AEiFiAFKQP4ASIYQgBCABD2A0UEQEG4lAJBxAA2AgALIAVB4AFqIBYgGCAUpxDlAyAFKQPgASEWIAUpA+gBDAELQbiUAkHEADYCACAFQdABaiAHEPoDIAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQ/QMgBUGwAWogBSkDwAEgBSkDyAFCAEKAgICAgIDAABD9AyAFKQOwASEWIAUpA7gBCyEUIAQgFjcDACAEIBQ3AwggBUGwA2okACANKQMYIRQgDSkDECEVDAMLIAEpA3BCAFMNACABIAEoAgRBAWs2AgQLIA1BIGohEiABIQYgByEJIAMhC0EAIQdBACEFIwBBkMYAayIEJABBACAPIhFrIhAgDmshEwJAAn8DQAJAIAJBMEcEQCACQS5HDQQgBigCBCICIAYoAmhGDQEgBiACQQFqNgIEIAItAAAMAwsgBigCBCICIAYoAmhHBEBBASEHIAYgAkEBajYCBCACLQAAIQIMAgVBASEHIAYQ4wMhAgwCCwALCyAGEOMDCyICQTBGBEADQCAUQgF9IRQCfyAGKAIEIgIgBigCaEcEQCAGIAJBAWo2AgQgAi0AAAwBCyAGEOMDCyICQTBGDQALQQEhBwtBASEMCyAEQQA2ApAGIAJBMGshAyASAn4CQAJAAkACQAJAAkAgAkEuRiIBDQAgA0EJTQ0ADAELA0ACQCABQQFxBEAgDEUEQCAVIRRBASEMDAILIAdFIQEMBAsgFUIBfCEVIAVB/A9MBEAgCiAVpyACQTBGGyEKIARBkAZqIAVBAnRqIgEgCAR/IAIgASgCAEEKbGpBMGsFIAMLNgIAQQEhB0EAIAhBAWoiAiACQQlGIgIbIQggAiAFaiEFDAELIAJBMEYNACAEIAQoAoBGQQFyNgKARkHcjwEhCgsCfyAGKAIEIgIgBigCaEcEQCAGIAJBAWo2AgQgAi0AAAwBCyAGEOMDCyICQTBrIQMgAkEuRiIBDQAgA0EKSQ0ACwsgFCAVIAwbIRQCQCAHRQ0AIAJBX3FBxQBHDQACQCAGIAsQ6QMiF0KAgICAgICAgIB/Ug0AIAtFDQRCACEXIAYpA3BCAFMNACAGIAYoAgRBAWs2AgQLIBQgF3whFAwECyAHRSEBIAJBAEgNAQsgBikDcEIAUw0AIAYgBigCBEEBazYCBAsgAUUNAUG4lAJBHDYCAAtCACEVIAZCABDiA0IADAELIAQoApAGIgZFBEAgBEQAAAAAAAAAACAJt6YQ+QMgBCkDACEVIAQpAwgMAQsCQCAVQglVDQAgFCAVUg0AIA5BHkxBACAGIA52Gw0AIARBMGogCRD6AyAEQSBqIAYQ+wMgBEEQaiAEKQMwIAQpAzggBCkDICAEKQMoEP0DIAQpAxAhFSAEKQMYDAELIBBBAXatIBRTBEBBuJQCQcQANgIAIARB4ABqIAkQ+gMgBEHQAGogBCkDYCAEKQNoQn9C////////v///ABD9AyAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQ/QMgBCkDQCEVIAQpA0gMAQsgEUHiAWusIBRVBEBBuJQCQcQANgIAIARBkAFqIAkQ+gMgBEGAAWogBCkDkAEgBCkDmAFCAEKAgICAgIDAABD9AyAEQfAAaiAEKQOAASAEKQOIAUIAQoCAgICAgMAAEP0DIAQpA3AhFSAEKQN4DAELIAgEQCAIQQhMBEAgBEGQBmogBUECdGoiAigCACEGA0AgBkEKbCEGIAhBAWoiCEEJRw0ACyACIAY2AgALIAVBAWohBQsgFKchCAJAIApBCU4NACAUQhFVDQAgCCAKSA0AIBRCCVEEQCAEQcABaiAJEPoDIARBsAFqIAQoApAGEPsDIARBoAFqIAQpA8ABIAQpA8gBIAQpA7ABIAQpA7gBEP0DIAQpA6ABIRUgBCkDqAEMAgsgFEIIVwRAIARBkAJqIAkQ+gMgBEGAAmogBCgCkAYQ+wMgBEHwAWogBCkDkAIgBCkDmAIgBCkDgAIgBCkDiAIQ/QMgBEHgAWpBACAIa0ECdEGgigFqKAIAEPoDIARB0AFqIAQpA/ABIAQpA/gBIAQpA+ABIAQpA+gBEPgDIAQpA9ABIRUgBCkD2AEMAgsgDiAIQX1sakEbaiICQR5MQQAgBCgCkAYiBiACdhsNACAEQeACaiAJEPoDIARB0AJqIAYQ+wMgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQ/QMgBEGwAmogCEECdEHYiQFqKAIAEPoDIARBoAJqIAQpA8ACIAQpA8gCIAQpA7ACIAQpA7gCEP0DIAQpA6ACIRUgBCkDqAIMAQsDQCAEQZAGaiAFIgFBAWsiBUECdGooAgBFDQALQQAhCgJAIAhBCW8iBkUEQEEAIQMMAQsgBkEJaiAGIBRCAFMbIRACQCABRQRAQQAhA0EAIQEMAQtBgJTr3ANBACAQa0ECdEGgigFqKAIAIgdtIQtBACECQQAhBkEAIQMDQCAEQZAGaiAGQQJ0aiIFIAUoAgAiBSAHbiIMIAJqIgI2AgAgA0EBakH/D3EgAyACRSADIAZGcSICGyEDIAhBCWsgCCACGyEIIAsgBSAHIAxsa2whAiAGQQFqIgYgAUcNAAsgAkUNACAEQZAGaiABQQJ0aiACNgIAIAFBAWohAQsgCCAQa0EJaiEICwNAIARBkAZqIANBAnRqIRAgCEEkSCELAkADQCALRQRAIAhBJEcNAiAQKAIAQdHp+QRPDQILIAFB/w9qIQVBACEHA0AgASECIAetIARBkAZqIAVB/w9xIgZBAnRqIgE1AgBCHYZ8IhRCgZTr3ANUBH9BAAUgFCAUQoCU69wDgCIVQoCU69wDfn0hFCAVpwshByABIBQ+AgAgAiACIAYgAiAUUBsgAyAGRhsgBiACQQFrQf8PcSIMRxshASAGQQFrIQUgAyAGRw0ACyAKQR1rIQogAiEBIAdFDQALIANBAWtB/w9xIgMgAUYEQCAEQZAGaiABQf4PakH/D3FBAnRqIgYgBigCACAEQZAGaiAMQQJ0aigCAHI2AgAgDCEBCyAIQQlqIQggBEGQBmogA0ECdGogBzYCAAwBCwsCQANAIAFBAWpB/w9xIQ8gBEGQBmogAUEBa0H/D3FBAnRqIRADQEEJQQEgCEEtShshBQJAA0AgAyEHQQAhBgJAA0ACQCAGIAdqQf8PcSICIAFGDQAgBEGQBmogAkECdGooAgAiAiAGQQJ0QfCJAWooAgAiA0kNACACIANLDQIgBkEBaiIGQQRHDQELCyAIQSRHDQBCACEUQQAhBkIAIRUDQCABIAYgB2pB/w9xIgJGBEAgAUEBakH/D3EiAUECdCAEakEANgKMBgsgBEGABmogBEGQBmogAkECdGooAgAQ+wMgBEHwBWogFCAVQgBCgICAgOWat47AABD9AyAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhD0AyAEKQPoBSEVIAQpA+AFIRQgBkEBaiIGQQRHDQALIARB0AVqIAkQ+gMgBEHABWogFCAVIAQpA9AFIAQpA9gFEP0DIAQpA8gFIRVCACEUIAQpA8AFIRcgCkHxAGoiAyARayIGQQAgBkEAShsgDiAGIA5IIgwbIgJB8ABMDQIMBQsgBSAKaiEKIAEhAyABIAdGDQALQYCU69wDIAV2IQxBfyAFdEF/cyELQQAhBiAHIQMDQCAEQZAGaiAHQQJ0aiICIAIoAgAiAiAFdiAGaiIGNgIAIANBAWpB/w9xIAMgBkUgAyAHRnEiBhshAyAIQQlrIAggBhshCCACIAtxIAxsIQYgB0EBakH/D3EiByABRw0ACyAGRQ0BIAMgD0cEQCAEQZAGaiABQQJ0aiAGNgIAIA8hAQwDCyAQIBAoAgBBAXI2AgAMAQsLCyAEQZAFakQAAAAAAADwP0HhASACaxDaAxD5AyAEQbAFaiAEKQOQBSAEKQOYBSAVEOQDIAQpA7gFIRkgBCkDsAUhGCAEQYAFakQAAAAAAADwP0HxACACaxDaAxD5AyAEQaAFaiAXIBUgBCkDgAUgBCkDiAUQ5gMgBEHwBGogFyAVIAQpA6AFIhQgBCkDqAUiFhD/AyAEQeAEaiAYIBkgBCkD8AQgBCkD+AQQ9AMgBCkD6AQhFSAEKQPgBCEXCwJAIAdBBGpB/w9xIgUgAUYNAAJAIARBkAZqIAVBAnRqKAIAIgVB/8m17gFNBEAgBUUEQCAHQQVqQf8PcSABRg0CCyAEQfADaiAJt0QAAAAAAADQP6IQ+QMgBEHgA2ogFCAWIAQpA/ADIAQpA/gDEPQDIAQpA+gDIRYgBCkD4AMhFAwBCyAFQYDKte4BRwRAIARB0ARqIAm3RAAAAAAAAOg/ohD5AyAEQcAEaiAUIBYgBCkD0AQgBCkD2AQQ9AMgBCkDyAQhFiAEKQPABCEUDAELIAm3IRsgASAHQQVqQf8PcUYEQCAEQZAEaiAbRAAAAAAAAOA/ohD5AyAEQYAEaiAUIBYgBCkDkAQgBCkDmAQQ9AMgBCkDiAQhFiAEKQOABCEUDAELIARBsARqIBtEAAAAAAAA6D+iEPkDIARBoARqIBQgFiAEKQOwBCAEKQO4BBD0AyAEKQOoBCEWIAQpA6AEIRQLIAJB7wBKDQAgBEHQA2ogFCAWQgBCgICAgICAwP8/EOYDIAQpA9ADIAQpA9gDQgBCABD2Aw0AIARBwANqIBQgFkIAQoCAgICAgMD/PxD0AyAEKQPIAyEWIAQpA8ADIRQLIARBsANqIBcgFSAUIBYQ9AMgBEGgA2ogBCkDsAMgBCkDuAMgGCAZEP8DIAQpA6gDIRUgBCkDoAMhFwJAIBNBAmsgA0H/////B3FODQAgBEGQA2oiASAVQv///////////wCDNwMIIAEgFzcDACAEQYADaiAXIBVCAEKAgICAgICA/z8Q/QMgBCkDkAMgBCkDmANCgICAgICAgLjAABD3AyEDIAQpA4gDIBUgA0EATiIBGyEVIAQpA4ADIBcgARshFyAUIBZCAEIAEPYDIQcgEyABIApqIgpB7gBqTgRAIAwgAiAGRyADQQBIcnEgB0EAR3FFDQELQbiUAkHEADYCAAsgBEHwAmogFyAVIAoQ5QMgBCkD8AIhFSAEKQP4Ags3AwggEiAVNwMAIARBkMYAaiQAIA0pAyghFCANKQMgIRUMAQtCACEUCyAAIBU3AwAgACAUNwMIIA1BMGokAAsQACAAQSBGIABBCWtBBUlyC44EAgR/AX4CQAJAAkACQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABDjAwsiA0Eraw4DAAEAAQsgA0EtRiEFAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABDjAwsiAkE6ayEEIAFFDQEgBEF1Sw0BIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgA0E6ayEEIAMhAgsgBEF2SQ0AAkAgAkEwa0EKTw0AQQAhAwNAIAIgA0EKbGohAyADQTBrIgNBzJmz5gBIAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABDjAwsiAkEwayIEQQlNcQ0ACyADrCEGIARBCk8NAANAIAKtIAZCCn58IQYCfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEOMDCyICQTBrIgNBCU0gBkIwfSIGQq6PhdfHwuujAVNxDQALIANBCk8NAANAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABDjAwtBMGtBCkkNAAsLIAApA3BCAFkEQCAAIAAoAgRBAWs2AgQLQgAgBn0gBiAFGyEGDAELQoCAgICAgICAgH8hBiAAKQNwQgBTDQAgACAAKAIEQQFrNgIEQoCAgICAgICAgH8PCyAGC78CAQR/IANBvJQCIAMbIgUoAgAhAwJAAn8CQCABRQRAIAMNAUEADwtBfiACRQ0BGgJAIAMEQCACIQQMAQsgAS0AACIEwCIDQQBOBEAgAARAIAAgBDYCAAsgA0EARw8LQYyUAigCACgCAEUEQEEBIABFDQMaIAAgA0H/vwNxNgIAQQEPCyAEQcIBayIDQTJLDQEgA0ECdEHQjAFqKAIAIQMgAkEBayIERQ0DIAFBAWohAQsgAS0AACIGQQN2IgdBEGsgA0EadSAHanJBB0sNAANAIARBAWshBCAGQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAAEQCAAIAM2AgALIAIgBGsPCyAERQ0DIAFBAWoiAS0AACIGQcABcUGAAUYNAAsLIAVBADYCAEG4lAJBGTYCAEF/Cw8LIAUgAzYCAEF+C0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsL5wEBAn8gAkEARyEDAkACQAJAIABBA3FFDQAgAkUNACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BAkAgAC0AACABQf8BcUYNACACQQRJDQAgAUH/AXFBgYKECGwhBANAQYCChAggACgCACAEcyIDayADckGAgYKEeHFBgIGChHhHDQIgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNAQsgAUH/AXEhAwNAIAMgAC0AAEYEQCAADwsgAEEBaiEAIAJBAWsiAg0ACwtBAAuKHwIQfwV+IwBBkAFrIgMkACADQQBBkAEQ2AMiA0F/NgJMIAMgADYCLCADQZwENgIgIAMgADYCVCABIQQgAiEQQQAhACMAQbACayIHJAAgAygCTBoCQAJAIAMoAgRFBEAgAxDgAxogAygCBEUNAQsgBC0AACIBRQ0BIAdBEGohEgJAAkACQAJAAkADQAJAAkAgAUH/AXEiARDoAwRAA0AgBCIBQQFqIQQgAS0AARDoAw0ACyADQgAQ4gMDQAJ/IAMoAgQiBCADKAJoRwRAIAMgBEEBajYCBCAELQAADAELIAMQ4wMLEOgDDQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFnx8IRYMAQsCfwJAAkAgAUElRgRAIAQtAAEiAUEqRg0BIAFBJUcNAgsgA0IAEOIDAkAgBC0AAEElRgRAA0ACfyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AAAwBCyADEOMDCyIBEOgDDQALIARBAWohBAwBCyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AACEBDAELIAMQ4wMhAQsgBC0AACABRwRAIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIAFBAE4NDSAODQ0MDAsgAygCBCADKAIsa6wgAykDeCAWfHwhFiAEIQEMAwtBACEJIARBAmoMAQsCQCABQTBrIgZBCUsNACAELQACQSRHDQAjAEEQayIBIBA2AgwgASAQIAZBAnRqQQRrIBAgBkEBSxsiAUEEajYCCCABKAIAIQkgBEEDagwBCyAQKAIAIQkgEEEEaiEQIARBAWoLIQFBACEPQQAhBiABLQAAIgRBMGtBCU0EQANAIAZBCmwgBGpBMGshBiABLQABIQQgAUEBaiEBIARBMGtBCkkNAAsLIARB7QBHBH8gAQVBACEMIAlBAEchDyABLQABIQRBACEAIAFBAWoLIghBAWohAUEDIQIgDyEKAkACQAJAAkACQAJAIARB/wFxQcEAaw46BAwEDAQEBAwMDAwDDAwMDAwMBAwMDAwEDAwEDAwMDAwEDAQEBAQEAAQFDAEMBAQEDAwEAgQMDAQMAgwLIAhBAmogASAILQABQegARiIEGyEBQX5BfyAEGyECDAQLIAhBAmogASAILQABQewARiIEGyEBQQNBASAEGyECDAMLQQEhAgwCC0ECIQIMAQtBACECIAghAQtBASACIAEtAAAiBEEvcUEDRiIIGyERAkAgBEEgciAEIAgbIg1B2wBGDQACQCANQe4ARwRAIA1B4wBHDQFBASAGIAZBAUwbIQYMAgsgCSARIBYQ6wMMAgsgA0IAEOIDA0ACfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEOMDCxDoAw0ACyADKAIEIQQgAykDcEIAWQRAIAMgBEEBayIENgIECyAEIAMoAixrrCADKQN4IBZ8fCEWCyADIAasIhQQ4gMCQCADKAIEIgQgAygCaEcEQCADIARBAWo2AgQMAQsgAxDjA0EASA0GCyADKQNwQgBZBEAgAyADKAIEQQFrNgIEC0EQIQQCQAJAAkACQAJAAkACQAJAAkACQCANQdgAaw4hBgkJAgkJCQkJAQkCBAEBAQkFCQkJCQkDBgkJAgkECQkGAAsgDUHBAGsiBEEGSw0IQQEgBHRB8QBxRQ0ICyAHQQhqIAMgEUEAEOcDIAMpA3hCACADKAIEIAMoAixrrH1SDQUMDAsgDUEQckHzAEYEQCAHQSBqQX9BgQIQ2AMaIAdBADoAICANQfMARw0GIAdBADoAQSAHQQA6AC4gB0EANgEqDAYLIAdBIGogAS0AASICQd4ARiIEQYECENgDGiAHQQA6ACAgAUECaiABQQFqIAQbIQoCfwJAAkAgAUECQQEgBBtqLQAAIgRBLUcEQCAEQd0ARg0BIAJB3gBHIQggCgwDCyAHIAJB3gBHIgg6AE4MAQsgByACQd4ARyIIOgB+CyAKQQFqCyEBA0ACQCABLQAAIgJBLUcEQCACRQ0PIAJB3QBGDQgMAQtBLSECIAEtAAEiC0UNACALQd0ARg0AIAFBAWohCgJAIAsgAUEBay0AACIETQRAIAshAgwBCwNAIARBAWoiBCAHQSBqaiAIOgAAIAQgCi0AACICSQ0ACwsgCiEBCyACIAdqIAg6ACEgAUEBaiEBDAALAAtBCCEEDAILQQohBAwBC0EAIQQLQgAhE0EAIQtCACEVQQAhCEEAIQYjAEEQayIKJAACQCAEQQFHIARBJE1xRQRAQbiUAkEcNgIADAELA0ACfyADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AAAwBCyADEOMDCyIFEOgDDQALAkACQCAFQStrDgMAAQABC0F/QQAgBUEtRhshBiADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AACEFDAELIAMQ4wMhBQsCQAJAAkACQAJAIARBAEcgBEEQR3ENACAFQTBHDQACfyADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AAAwBCyADEOMDCyIFQV9xQdgARgRAQRAhBAJ/IAMoAgQiBSADKAJoRwRAIAMgBUEBajYCBCAFLQAADAELIAMQ4wMLIgVBwYoBai0AAEEQSQ0DIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIANCABDiAwwGCyAEDQFBCCEEDAILIARBCiAEGyIEIAVBwYoBai0AAEsNACADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQ4gNBuJQCQRw2AgAMBAsgBEEKRw0AIAVBMGsiC0EJTQRAQQAhBQNAIAVBCmwgC2oiBUGZs+bMAUkCfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEOMDC0EwayILQQlNcQ0ACyAFrSETCyALQQlLDQIgE0IKfiEUIAutIRUDQAJAAn8gAygCBCIFIAMoAmhHBEAgAyAFQQFqNgIEIAUtAAAMAQsgAxDjAwsiBUEwayIEQQlNIBQgFXwiE0Kas+bMmbPmzBlUcUUEQCAEQQlNDQEMBQsgE0IKfiIUIAStIhVCf4VYDQELC0EKIQQMAQsgBCAEQQFrcQRAIAVBwYoBai0AACIIIARJBEADQCAIIAQgC2xqIgtBx+PxOEkCfyADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AAAwBCyADEOMDCyIFQcGKAWotAAAiCCAESXENAAsgC60hEwsgBCAITQ0BIAStIRQDQCATIBR+IhUgCK1C/wGDIhdCf4VWDQIgFSAXfCETIAQCfyADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AAAwBCyADEOMDCyIFQcGKAWotAAAiCE0NAiAKIBRCACATQgAQ/gMgCikDCFANAAsMAQsgBEEXbEEFdkEHcUHBjAFqLAAAIQIgBUHBigFqLQAAIgsgBEkEQANAIAsgCCACdCIFciEIIAVBgICAwABJAn8gAygCBCIFIAMoAmhHBEAgAyAFQQFqNgIEIAUtAAAMAQsgAxDjAwsiBUHBigFqLQAAIgsgBElxDQALIAitIRMLIAQgC00NAEJ/IAKtIhWIIhcgE1QNAANAIAutQv8BgyATIBWGhCETIAQCfyADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AAAwBCyADEOMDCyIFQcGKAWotAAAiC00NASATIBdYDQALCyAEIAVBwYoBai0AAE0NAANAIAQCfyADKAIEIgUgAygCaEcEQCADIAVBAWo2AgQgBS0AAAwBCyADEOMDC0HBigFqLQAASw0AC0G4lAJBxAA2AgBBACEGQn8hEwsgAykDcEIAWQRAIAMgAygCBEEBazYCBAsCQCATQn9SDQALIBMgBqwiFYUgFX0hFQsgCkEQaiQAIBUhFCADKQN4QgAgAygCBCADKAIsa6x9UQ0HAkAgDUHwAEcNACAJRQ0AIAkgFD4CAAwDCyAJIBEgFBDrAwwCCyAJRQ0BIBIpAwAhFCAHKQMIIRcCQAJAAkAgEQ4DAAECBAsgCSAXIBQQgQQ4AgAMAwsgCSAXIBQQgAQ5AwAMAgsgCSAXNwMAIAkgFDcDCAwBC0EfIAZBAWogDUHjAEciCBshAgJAIBFBAUYEQCAJIQYgDwRAIAJBAnQQ8AMiBkUNBwsgB0IANwKoAkEAIQQDQCAGIQACQANAAn8gAygCBCIGIAMoAmhHBEAgAyAGQQFqNgIEIAYtAAAMAQsgAxDjAwsiBiAHai0AIUUNASAHIAY6ABsgB0EcaiAHQRtqQQEgB0GoAmoQ6gMiBkF+Rg0AIAZBf0YEQEEAIQwMDAsgAARAIAAgBEECdGogBygCHDYCACAEQQFqIQQLIA9FDQAgAiAERw0AC0EBIQpBACEMIAAgAkEBdEEBciICQQJ0EPIDIgYNAQwLCwtBACEMIAAhAiAHQagCaiIKBH8gCigCAAVBAAsNCAwBCyAPBEBBACEEIAIQ8AMiBkUNBgNAIAYhAANAAn8gAygCBCIGIAMoAmhHBEAgAyAGQQFqNgIEIAYtAAAMAQsgAxDjAwsiBiAHai0AIUUEQEEAIQIgACEMDAQLIAAgBGogBjoAACAEQQFqIgQgAkcNAAtBASEKIAAgAkEBdEEBciICEPIDIgYNAAsgACEMQQAhAAwJC0EAIQQgCQRAA0ACfyADKAIEIgYgAygCaEcEQCADIAZBAWo2AgQgBi0AAAwBCyADEOMDCyIGIAdqLQAhBEAgBCAJaiAGOgAAIARBAWohBAwBBUEAIQIgCSEAIAkhDAwDCwALAAsDQAJ/IAMoAgQiBCADKAJoRwRAIAMgBEEBajYCBCAELQAADAELIAMQ4wMLIAdqLQAhDQALQQAhAEEAIQxBACECQQAhBAsgAygCBCEGIAMpA3BCAFkEQCADIAZBAWsiBjYCBAsgAykDeCAGIAMoAixrrHwiF1ANAiAIIBQgF1FyRQ0CIA8EQCAJIAA2AgALAkAgDUHjAEYNACACBEAgAiAEQQJ0akEANgIACyAMRQRAQQAhDAwBCyAEIAxqQQA6AAALIAIhAAsgAygCBCADKAIsa6wgAykDeCAWfHwhFiAOIAlBAEdqIQ4LIAFBAWohBCABLQABIgENAQwICwsgAiEADAELQQEhCkEAIQxBACEADAILIA8hCgwCCyAPIQoLIA5BfyAOGyEOCyAKRQ0BIAwQ8QMgABDxAwwBC0F/IQ4LIAdBsAJqJAAgA0GQAWokACAOC1UBAn8gASAAKAJUIgMgA0EAIAJBgAJqIgEQ7AMiBCADayABIAQbIgEgAiABIAJJGyICENcDGiAAIAEgA2oiATYCVCAAIAE2AgggACACIANqNgIEIAILUgECf0HwjgIoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQEQ0BC0G4lAJBMDYCAEF/DwtB8I4CIAA2AgAgAQvlKAELfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBBwJQCKAIAIgZBECAAQQtqQfgDcSAAQQtJGyIEQQN2IgF2IgBBA3EEQAJAIABBf3NBAXEgAWoiBEEDdCIBQeiUAmoiACABQfCUAmooAgAiASgCCCIDRgRAQcCUAiAGQX4gBHdxNgIADAELIAMgADYCDCAAIAM2AggLIAFBCGohACABIARBA3QiBEEDcjYCBCABIARqIgEgASgCBEEBcjYCBAwLCyAEQciUAigCACIHTQ0BIAAEQAJAIAAgAXRBAiABdCIAQQAgAGtycWgiAUEDdCIAQeiUAmoiAyAAQfCUAmooAgAiACgCCCICRgRAQcCUAiAGQX4gAXdxIgY2AgAMAQsgAiADNgIMIAMgAjYCCAsgACAEQQNyNgIEIAAgBGoiAiABQQN0IgEgBGsiBEEBcjYCBCAAIAFqIAQ2AgAgBwRAIAdBeHFB6JQCaiEDQdSUAigCACEBAn8gBkEBIAdBA3Z0IgVxRQRAQcCUAiAFIAZyNgIAIAMMAQsgAygCCAshBSADIAE2AgggBSABNgIMIAEgAzYCDCABIAU2AggLIABBCGohAEHUlAIgAjYCAEHIlAIgBDYCAAwLC0HElAIoAgAiC0UNASALaEECdEHwlgJqKAIAIgIoAgRBeHEgBGshASACIQMDQAJAIAMoAhAiAEUEQCADKAIUIgBFDQELIAAoAgRBeHEgBGsiAyABIAEgA0siAxshASAAIAIgAxshAiAAIQMMAQsLIAIoAhghCSACIAIoAgwiAEcEQCACKAIIIgMgADYCDCAAIAM2AggMCgsgAigCFCIDBH8gAkEUagUgAigCECIDRQ0DIAJBEGoLIQUDQCAFIQggAyIAQRRqIQUgACgCFCIDDQAgAEEQaiEFIAAoAhAiAw0ACyAIQQA2AgAMCQtBfyEEIABBv39LDQAgAEELaiIBQXhxIQRBxJQCKAIAIglFDQBBHyEHIABB9P//B00EQCAEQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQcLQQAgBGshAQJAAkACQCAHQQJ0QfCWAmooAgAiA0UEQEEAIQAMAQtBACEAIARBGSAHQQF2a0EAIAdBH0cbdCECA0ACQCADKAIEQXhxIARrIgYgAU8NACADIQUgBiIBDQBBACEBIAUhAAwDCyAAIAMoAhQiBiAGIAMgAkEddkEEcWooAhAiCEYbIAAgBhshACACQQF0IQIgCCIDDQALCyAAIAVyRQRAQQAhBUECIAd0IgBBACAAa3IgCXEiAEUNAyAAaEECdEHwlgJqKAIAIQALIABFDQELA0AgACgCBEF4cSAEayIGIAFJIQIgBiABIAIbIQEgACAFIAIbIQUgACgCECIDBH8gAwUgACgCFAsiAA0ACwsgBUUNACABQciUAigCACAEa08NACAFKAIYIQggBSAFKAIMIgBHBEAgBSgCCCIDIAA2AgwgACADNgIIDAgLIAUoAhQiAwR/IAVBFGoFIAUoAhAiA0UNAyAFQRBqCyECA0AgAiEGIAMiAEEUaiECIAAoAhQiAw0AIABBEGohAiAAKAIQIgMNAAsgBkEANgIADAcLIARByJQCKAIAIgBNBEBB1JQCKAIAIQECQCAAIARrIgNBEE8EQCABIARqIgIgA0EBcjYCBCAAIAFqIAM2AgAgASAEQQNyNgIEDAELIAEgAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBEEAIQJBACEDC0HIlAIgAzYCAEHUlAIgAjYCACABQQhqIQAMCQsgBEHMlAIoAgAiAkkEQEHMlAIgAiAEayIBNgIAQdiUAkHYlAIoAgAiACAEaiIDNgIAIAMgAUEBcjYCBCAAIARBA3I2AgQgAEEIaiEADAkLQQAhACAEQS9qIgcCf0GYmAIoAgAEQEGgmAIoAgAMAQtBpJgCQn83AgBBnJgCQoCggICAgAQ3AgBBmJgCIApBDGpBcHFB2KrVqgVzNgIAQayYAkEANgIAQfyXAkEANgIAQYAgCyIBaiIGQQAgAWsiCHEiBSAETQ0IQfiXAigCACIBBEBB8JcCKAIAIgMgBWoiCSADTQ0JIAEgCUkNCQsCQEH8lwItAABBBHFFBEACQAJAAkACQEHYlAIoAgAiAQRAQYCYAiEAA0AgASAAKAIAIgNPBEAgAyAAKAIEaiABSw0DCyAAKAIIIgANAAsLQQAQ7wMiAkF/Rg0DIAUhBkGcmAIoAgAiAEEBayIBIAJxBEAgBSACayABIAJqQQAgAGtxaiEGCyAEIAZPDQNB+JcCKAIAIgAEQEHwlwIoAgAiASAGaiIDIAFNDQQgACADSQ0ECyAGEO8DIgAgAkcNAQwFCyAGIAJrIAhxIgYQ7wMiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIARBMGogBk0EQCAAIQIMBAtBoJgCKAIAIgEgByAGa2pBACABa3EiARDvA0F/Rg0BIAEgBmohBiAAIQIMAwsgAkF/Rw0CC0H8lwJB/JcCKAIAQQRyNgIACyAFEO8DIQJBABDvAyEAIAJBf0YNBSAAQX9GDQUgACACTQ0FIAAgAmsiBiAEQShqTQ0FC0HwlwJB8JcCKAIAIAZqIgA2AgBB9JcCKAIAIABJBEBB9JcCIAA2AgALAkBB2JQCKAIAIgEEQEGAmAIhAANAIAIgACgCACIDIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQdCUAigCACIAQQAgACACTRtFBEBB0JQCIAI2AgALQQAhAEGEmAIgBjYCAEGAmAIgAjYCAEHglAJBfzYCAEHklAJBmJgCKAIANgIAQYyYAkEANgIAA0AgAEEDdCIBQfCUAmogAUHolAJqIgM2AgAgAUH0lAJqIAM2AgAgAEEBaiIAQSBHDQALQcyUAiAGQShrIgBBeCACa0EHcSIBayIDNgIAQdiUAiABIAJqIgE2AgAgASADQQFyNgIEIAAgAmpBKDYCBEHclAJBqJgCKAIANgIADAQLIAEgAk8NAiABIANJDQIgACgCDEEIcQ0CIAAgBSAGajYCBEHYlAIgAUF4IAFrQQdxIgBqIgM2AgBBzJQCQcyUAigCACAGaiICIABrIgA2AgAgAyAAQQFyNgIEIAEgAmpBKDYCBEHclAJBqJgCKAIANgIADAMLQQAhAAwGC0EAIQAMBAtB0JQCKAIAIAJLBEBB0JQCIAI2AgALIAIgBmohA0GAmAIhAAJAA0AgAyAAKAIAIgVHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQMLQYCYAiEAA0ACQCABIAAoAgAiA08EQCADIAAoAgRqIgMgAUsNAQsgACgCCCEADAELC0HMlAIgBkEoayIAQXggAmtBB3EiBWsiCDYCAEHYlAIgAiAFaiIFNgIAIAUgCEEBcjYCBCAAIAJqQSg2AgRB3JQCQaiYAigCADYCACABIANBJyADa0EHcWpBL2siACAAIAFBEGpJGyIFQRs2AgQgBUGImAIpAgA3AhAgBUGAmAIpAgA3AghBiJgCIAVBCGo2AgBBhJgCIAY2AgBBgJgCIAI2AgBBjJgCQQA2AgAgBUEYaiEAA0AgAEEHNgIEIABBCGohAiAAQQRqIQAgAiADSQ0ACyABIAVGDQAgBSAFKAIEQX5xNgIEIAEgBSABayICQQFyNgIEIAUgAjYCAAJ/IAJB/wFNBEAgAkF4cUHolAJqIQACf0HAlAIoAgAiA0EBIAJBA3Z0IgJxRQRAQcCUAiACIANyNgIAIAAMAQsgACgCCAshAyAAIAE2AgggAyABNgIMQQwhAkEIDAELQR8hACACQf///wdNBEAgAkEmIAJBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyABIAA2AhwgAUIANwIQIABBAnRB8JYCaiEDAkACQEHElAIoAgAiBUEBIAB0IgZxRQRAQcSUAiAFIAZyNgIAIAMgATYCACABIAM2AhgMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgAygCACEFA0AgBSIDKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACADIAVBBHFqQRBqIgYoAgAiBQ0ACyAGIAE2AgAgASADNgIYC0EIIQIgASEDIAEhAEEMDAELIAMoAggiACABNgIMIAMgATYCCCABIAA2AghBACEAQRghAkEMCyABaiADNgIAIAEgAmogADYCAAtBzJQCKAIAIgAgBE0NAEHMlAIgACAEayIBNgIAQdiUAkHYlAIoAgAiACAEaiIDNgIAIAMgAUEBcjYCBCAAIARBA3I2AgQgAEEIaiEADAQLQbiUAkEwNgIAQQAhAAwDCyAAIAI2AgAgACAAKAIEIAZqNgIEIAJBeCACa0EHcWoiCSAEQQNyNgIEIAVBeCAFa0EHcWoiBiAEIAlqIgFrIQICQEHYlAIoAgAgBkYEQEHYlAIgATYCAEHMlAJBzJQCKAIAIAJqIgQ2AgAgASAEQQFyNgIEDAELQdSUAigCACAGRgRAQdSUAiABNgIAQciUAkHIlAIoAgAgAmoiBDYCACABIARBAXI2AgQgASAEaiAENgIADAELIAYoAgQiBUEDcUEBRgRAIAVBeHEhByAGKAIMIQQCQCAFQf8BTQRAIAYoAggiACAERgRAQcCUAkHAlAIoAgBBfiAFQQN2d3E2AgAMAgsgACAENgIMIAQgADYCCAwBCyAGKAIYIQgCQCAEIAZHBEAgBigCCCIFIAQ2AgwgBCAFNgIIDAELAkAgBigCFCIFBH8gBkEUagUgBigCECIFRQ0BIAZBEGoLIQADQCAAIQMgBSIEQRRqIQAgBCgCFCIFDQAgBEEQaiEAIAQoAhAiBQ0ACyADQQA2AgAMAQtBACEECyAIRQ0AAkAgBigCHCIAQQJ0QfCWAmoiBSgCACAGRgRAIAUgBDYCACAEDQFBxJQCQcSUAigCAEF+IAB3cTYCAAwCCyAIQRBBFCAIKAIQIAZGG2ogBDYCACAERQ0BCyAEIAg2AhggBigCECIFBEAgBCAFNgIQIAUgBDYCGAsgBigCFCIFRQ0AIAQgBTYCFCAFIAQ2AhgLIAYgB2oiBigCBCEFIAIgB2ohAgsgBiAFQX5xNgIEIAEgAkEBcjYCBCABIAJqIAI2AgAgAkH/AU0EQCACQXhxQeiUAmohBAJ/QcCUAigCACIFQQEgAkEDdnQiAnFFBEBBwJQCIAIgBXI2AgAgBAwBCyAEKAIICyECIAQgATYCCCACIAE2AgwgASAENgIMIAEgAjYCCAwBC0EfIQQgAkH///8HTQRAIAJBJiACQQh2ZyIEa3ZBAXEgBEEBdGtBPmohBAsgASAENgIcIAFCADcCECAEQQJ0QfCWAmohBQJAAkBBxJQCKAIAIgBBASAEdCIGcUUEQEHElAIgACAGcjYCACAFIAE2AgAgASAFNgIYDAELIAJBGSAEQQF2a0EAIARBH0cbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSACRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIGKAIAIgANAAsgBiABNgIAIAEgBTYCGAsgASABNgIMIAEgATYCCAwBCyAFKAIIIgQgATYCDCAFIAE2AgggAUEANgIYIAEgBTYCDCABIAQ2AggLIAlBCGohAAwCCwJAIAhFDQACQCAFKAIcIgJBAnRB8JYCaiIDKAIAIAVGBEAgAyAANgIAIAANAUHElAIgCUF+IAJ3cSIJNgIADAILIAhBEEEUIAgoAhAgBUYbaiAANgIAIABFDQELIAAgCDYCGCAFKAIQIgMEQCAAIAM2AhAgAyAANgIYCyAFKAIUIgNFDQAgACADNgIUIAMgADYCGAsCQCABQQ9NBEAgBSABIARqIgBBA3I2AgQgACAFaiIAIAAoAgRBAXI2AgQMAQsgBSAEQQNyNgIEIAQgBWoiAiABQQFyNgIEIAEgAmogATYCACABQf8BTQRAIAFBeHFB6JQCaiEAAn9BwJQCKAIAIgRBASABQQN2dCIBcUUEQEHAlAIgASAEcjYCACAADAELIAAoAggLIQEgACACNgIIIAEgAjYCDCACIAA2AgwgAiABNgIIDAELQR8hACABQf///wdNBEAgAUEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyACIAA2AhwgAkIANwIQIABBAnRB8JYCaiEEAkACQCAJQQEgAHQiA3FFBEBBxJQCIAMgCXI2AgAgBCACNgIAIAIgBDYCGAwBCyABQRkgAEEBdmtBACAAQR9HG3QhACAEKAIAIQMDQCADIgQoAgRBeHEgAUYNAiAAQR12IQMgAEEBdCEAIAQgA0EEcWpBEGoiBigCACIDDQALIAYgAjYCACACIAQ2AhgLIAIgAjYCDCACIAI2AggMAQsgBCgCCCIAIAI2AgwgBCACNgIIIAJBADYCGCACIAQ2AgwgAiAANgIICyAFQQhqIQAMAQsCQCAJRQ0AAkAgAigCHCIFQQJ0QfCWAmoiAygCACACRgRAIAMgADYCACAADQFBxJQCIAtBfiAFd3E2AgAMAgsgCUEQQRQgCSgCECACRhtqIAA2AgAgAEUNAQsgACAJNgIYIAIoAhAiAwRAIAAgAzYCECADIAA2AhgLIAIoAhQiA0UNACAAIAM2AhQgAyAANgIYCwJAIAFBD00EQCACIAEgBGoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIARBA3I2AgQgAiAEaiIEIAFBAXI2AgQgASAEaiABNgIAIAcEQCAHQXhxQeiUAmohA0HUlAIoAgAhAAJ/QQEgB0EDdnQiBSAGcUUEQEHAlAIgBSAGcjYCACADDAELIAMoAggLIQUgAyAANgIIIAUgADYCDCAAIAM2AgwgACAFNgIIC0HUlAIgBDYCAEHIlAIgATYCAAsgAkEIaiEACyAKQRBqJAAgAAvwCwEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEEAkAgAUEBcQ0AIAFBAnFFDQEgAyADKAIAIgJrIgNB0JQCKAIASQ0BIAAgAmohAAJAAkACQEHUlAIoAgAgA0cEQCADKAIMIQEgAkH/AU0EQCABIAMoAggiBUcNAkHAlAJBwJQCKAIAQX4gAkEDdndxNgIADAULIAMoAhghBiABIANHBEAgAygCCCICIAE2AgwgASACNgIIDAQLIAMoAhQiAgR/IANBFGoFIAMoAhAiAkUNAyADQRBqCyEFA0AgBSEHIAIiAUEUaiEFIAEoAhQiAg0AIAFBEGohBSABKAIQIgINAAsgB0EANgIADAMLIAQoAgQiAUEDcUEDRw0DQciUAiAANgIAIAQgAUF+cTYCBCADIABBAXI2AgQgBCAANgIADwsgBSABNgIMIAEgBTYCCAwCC0EAIQELIAZFDQACQCADKAIcIgVBAnRB8JYCaiICKAIAIANGBEAgAiABNgIAIAENAUHElAJBxJQCKAIAQX4gBXdxNgIADAILIAZBEEEUIAYoAhAgA0YbaiABNgIAIAFFDQELIAEgBjYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAETw0AIAQoAgQiAkEBcUUNAAJAAkACQAJAIAJBAnFFBEBB2JQCKAIAIARGBEBB2JQCIAM2AgBBzJQCQcyUAigCACAAaiIANgIAIAMgAEEBcjYCBCADQdSUAigCAEcNBkHIlAJBADYCAEHUlAJBADYCAA8LQdSUAigCACAERgRAQdSUAiADNgIAQciUAkHIlAIoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAkF4cSAAaiEAIAQoAgwhASACQf8BTQRAIAQoAggiBSABRgRAQcCUAkHAlAIoAgBBfiACQQN2d3E2AgAMBQsgBSABNgIMIAEgBTYCCAwECyAEKAIYIQYgASAERwRAIAQoAggiAiABNgIMIAEgAjYCCAwDCyAEKAIUIgIEfyAEQRRqBSAEKAIQIgJFDQIgBEEQagshBQNAIAUhByACIgFBFGohBSABKAIUIgINACABQRBqIQUgASgCECICDQALIAdBADYCAAwCCyAEIAJBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAZFDQACQCAEKAIcIgVBAnRB8JYCaiICKAIAIARGBEAgAiABNgIAIAENAUHElAJBxJQCKAIAQX4gBXdxNgIADAILIAZBEEEUIAYoAhAgBEYbaiABNgIAIAFFDQELIAEgBjYCGCAEKAIQIgIEQCABIAI2AhAgAiABNgIYCyAEKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQdSUAigCAEcNAEHIlAIgADYCAA8LIABB/wFNBEAgAEF4cUHolAJqIQECf0HAlAIoAgAiAkEBIABBA3Z0IgBxRQRAQcCUAiAAIAJyNgIAIAEMAQsgASgCCAshACABIAM2AgggACADNgIMIAMgATYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QfCWAmohBAJ/AkACf0HElAIoAgAiAkEBIAF0IgVxRQRAQcSUAiACIAVyNgIAQRghASAEIQVBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQUDQCAFIgIoAgRBeHEgAEYNAiABQR12IQUgAUEBdCEBIAIgBUEEcWpBEGoiBCgCACIFDQALQRghASACIQVBCAshACADIQIgAwwBCyACKAIIIgUgAzYCDEEIIQEgAkEIaiEEQRghAEEACyEHIAQgAzYCACABIANqIAU2AgAgAyACNgIMIAAgA2ogBzYCAEHglAJB4JQCKAIAQQFrIgNBfyADGzYCAAsLhggBC38gAEUEQCABEPADDwsgAUFATwRAQbiUAkEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEDIABBCGsiBSgCBCIHQXhxIQICQCAHQQNxRQRAIANBgAJJDQEgA0EEaiACTQRAIAUhBCACIANrQaCYAigCAEEBdE0NAgtBAAwCCyACIAVqIQYCQCACIANPBEAgAiADayICQRBJDQEgBSAHQQFxIANyQQJyNgIEIAMgBWoiAyACQQNyNgIEIAYgBigCBEEBcjYCBCADIAIQ8wMMAQtB2JQCKAIAIAZGBEBBzJQCKAIAIAJqIgIgA00NAiAFIAdBAXEgA3JBAnI2AgQgAyAFaiIHIAIgA2siA0EBcjYCBEHMlAIgAzYCAEHYlAIgBzYCAAwBC0HUlAIoAgAgBkYEQEHIlAIoAgAgAmoiAiADSQ0CAkAgAiADayIEQRBPBEAgBSAHQQFxIANyQQJyNgIEIAMgBWoiAyAEQQFyNgIEIAIgBWoiAiAENgIAIAIgAigCBEF+cTYCBAwBCyAFIAdBAXEgAnJBAnI2AgQgAiAFaiIDIAMoAgRBAXI2AgRBACEEQQAhAwtB1JQCIAM2AgBByJQCIAQ2AgAMAQsgBigCBCIIQQJxDQEgCEF4cSACaiIJIANJDQEgCSADayELIAYoAgwhAgJAIAhB/wFNBEAgBigCCCIEIAJGBEBBwJQCQcCUAigCAEF+IAhBA3Z3cTYCAAwCCyAEIAI2AgwgAiAENgIIDAELIAYoAhghCgJAIAIgBkcEQCAGKAIIIgQgAjYCDCACIAQ2AggMAQsCQCAGKAIUIgQEfyAGQRRqBSAGKAIQIgRFDQEgBkEQagshCANAIAghDCAEIgJBFGohCCACKAIUIgQNACACQRBqIQggAigCECIEDQALIAxBADYCAAwBC0EAIQILIApFDQACQCAGKAIcIghBAnRB8JYCaiIEKAIAIAZGBEAgBCACNgIAIAINAUHElAJBxJQCKAIAQX4gCHdxNgIADAILIApBEEEUIAooAhAgBkYbaiACNgIAIAJFDQELIAIgCjYCGCAGKAIQIgQEQCACIAQ2AhAgBCACNgIYCyAGKAIUIgRFDQAgAiAENgIUIAQgAjYCGAsgC0EPTQRAIAUgB0EBcSAJckECcjYCBCAFIAlqIgMgAygCBEEBcjYCBAwBCyAFIAdBAXEgA3JBAnI2AgQgAyAFaiIDIAtBA3I2AgQgBSAJaiICIAIoAgRBAXI2AgQgAyALEPMDCyAFIQQLIAQLIgQEQCAEQQhqDwsgARDwAyIERQRAQQAPCyAEIABBfEF4IABBBGsoAgAiBUEDcRsgBUF4cWoiBSABIAEgBUsbENcDGiAAEPEDIAQLnAsBBn8gACABaiEEAkACQCAAKAIEIgJBAXENACACQQJxRQ0BIAAoAgAiAyABaiEBAkACQAJAIAAgA2siAEHUlAIoAgBHBEAgACgCDCECIANB/wFNBEAgAiAAKAIIIgVHDQJBwJQCQcCUAigCAEF+IANBA3Z3cTYCAAwFCyAAKAIYIQYgACACRwRAIAAoAggiAyACNgIMIAIgAzYCCAwECyAAKAIUIgMEfyAAQRRqBSAAKAIQIgNFDQMgAEEQagshBQNAIAUhByADIgJBFGohBSACKAIUIgMNACACQRBqIQUgAigCECIDDQALIAdBADYCAAwDCyAEKAIEIgJBA3FBA0cNA0HIlAIgATYCACAEIAJBfnE2AgQgACABQQFyNgIEIAQgATYCAA8LIAUgAjYCDCACIAU2AggMAgtBACECCyAGRQ0AAkAgACgCHCIFQQJ0QfCWAmoiAygCACAARgRAIAMgAjYCACACDQFBxJQCQcSUAigCAEF+IAV3cTYCAAwCCyAGQRBBFCAGKAIQIABGG2ogAjYCACACRQ0BCyACIAY2AhggACgCECIDBEAgAiADNgIQIAMgAjYCGAsgACgCFCIDRQ0AIAIgAzYCFCADIAI2AhgLAkACQAJAAkAgBCgCBCIDQQJxRQRAQdiUAigCACAERgRAQdiUAiAANgIAQcyUAkHMlAIoAgAgAWoiATYCACAAIAFBAXI2AgQgAEHUlAIoAgBHDQZByJQCQQA2AgBB1JQCQQA2AgAPC0HUlAIoAgAgBEYEQEHUlAIgADYCAEHIlAJByJQCKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIANBeHEgAWohASAEKAIMIQIgA0H/AU0EQCAEKAIIIgUgAkYEQEHAlAJBwJQCKAIAQX4gA0EDdndxNgIADAULIAUgAjYCDCACIAU2AggMBAsgBCgCGCEGIAIgBEcEQCAEKAIIIgMgAjYCDCACIAM2AggMAwsgBCgCFCIDBH8gBEEUagUgBCgCECIDRQ0CIARBEGoLIQUDQCAFIQcgAyICQRRqIQUgAigCFCIDDQAgAkEQaiEFIAIoAhAiAw0ACyAHQQA2AgAMAgsgBCADQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACECCyAGRQ0AAkAgBCgCHCIFQQJ0QfCWAmoiAygCACAERgRAIAMgAjYCACACDQFBxJQCQcSUAigCAEF+IAV3cTYCAAwCCyAGQRBBFCAGKAIQIARGG2ogAjYCACACRQ0BCyACIAY2AhggBCgCECIDBEAgAiADNgIQIAMgAjYCGAsgBCgCFCIDRQ0AIAIgAzYCFCADIAI2AhgLIAAgAUEBcjYCBCAAIAFqIAE2AgAgAEHUlAIoAgBHDQBByJQCIAE2AgAPCyABQf8BTQRAIAFBeHFB6JQCaiECAn9BwJQCKAIAIgNBASABQQN2dCIBcUUEQEHAlAIgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyECIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQILIAAgAjYCHCAAQgA3AhAgAkECdEHwlgJqIQMCQAJAQcSUAigCACIFQQEgAnQiBHFFBEBBxJQCIAQgBXI2AgAgAyAANgIAIAAgAzYCGAwBCyABQRkgAkEBdmtBACACQR9HG3QhAiADKAIAIQUDQCAFIgMoAgRBeHEgAUYNAiACQR12IQUgAkEBdCECIAMgBUEEcWpBEGoiBCgCACIFDQALIAQgADYCACAAIAM2AhgLIAAgADYCDCAAIAA2AggPCyADKAIIIgEgADYCDCADIAA2AgggAEEANgIYIAAgAzYCDCAAIAE2AggLC9wJAgR+BH8jAEHwAGsiCiQAIARC////////////AIMhBgJAAkAgAVAiCSACQv///////////wCDIgVCgICAgICAwP//AH1CgICAgICAwICAf1QgBVAbRQRAIANCAFIgBkKAgICAgIDA//8AfSIIQoCAgICAgMCAgH9WIAhCgICAgICAwICAf1EbDQELIAkgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQQgASEDDAILIANQIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEEDAILIAEgBUKAgICAgIDA//8AhYRQBEBCgICAgICA4P//ACACIAEgA4UgAiAEhUKAgICAgICAgIB/hYRQIgkbIQRCACABIAkbIQMMAgsgAyAGQoCAgICAgMD//wCFhFANASABIAWEUARAIAMgBoRCAFINAiABIAODIQMgAiAEgyEEDAILIAMgBoRCAFINACABIQMgAiEEDAELIAMgASABIANUIAUgBlQgBSAGURsiCxshBiAEIAIgCxsiCEL///////8/gyEFIAIgBCALGyIHQjCIp0H//wFxIQwgCEIwiKdB//8BcSIJRQRAIApB4ABqIAYgBSAGIAUgBVAiCRt5IAlBBnStfKciCUEPaxD1A0EQIAlrIQkgCikDYCEGIAopA2ghBQsgASADIAsbIQMgB0L///////8/gyEBIAwEfiABBSAKQdAAaiADIAEgAyABIAFQIgsbeSALQQZ0rXynIgtBD2sQ9QNBECALayEMIAopA1AhAyAKKQNYC0IDhiADQj2IhEKAgICAgICABIQhASAFQgOGIAZCPYiEIQcgA0IDhiEFIAIgBIUhAwJAIAkgDEYNACAJIAxrIgtB/wBLBEBCACEBQgEhBQwBCyAKQUBrIAUgAUGAASALaxD1AyAKQTBqIAUgASALEPwDIAopAzAgCikDQCAKKQNIhEIAUq2EIQUgCikDOCEBCyAHQoCAgICAgIAEhCEHIAZCA4YhBgJAIANCAFMEQEIAIQNCACEEIAUgBoUgASAHhYRQDQIgBiAFfSECIAcgAX0gBSAGVq19IgRC/////////wNWDQEgCkEgaiACIAQgAiAEIARQIgsbeSALQQZ0rXynQQxrIgsQ9QMgCSALayEJIAopAyghBCAKKQMgIQIMAQsgBSAGfCICIAVUrSABIAd8fCIEQoCAgICAgIAIg1ANACAFQgGDIARCP4YgAkIBiISEIQIgCUEBaiEJIARCAYghBAsgCEKAgICAgICAgIB/gyEFIAlB//8BTgRAIAVCgICAgICAwP//AIQhBEIAIQMMAQtBACELAkAgCUEASgRAIAkhCwwBCyAKQRBqIAIgBCAJQf8AahD1AyAKIAIgBEEBIAlrEPwDIAopAwAgCikDECAKKQMYhEIAUq2EIQIgCikDCCEECyAEQj2GIAJCA4iEIQMgBEIDiEL///////8/gyALrUIwhoQgBYQhBAJAAkAgAqdBB3EiCUEERwRAIAQgAyAJQQRLrXwiBSADVK18IQQgBSEDDAELIAQgAyADQgGDfCIFIANUrXwhBCAFIQMMAQsgCUUNAQsLIAAgAzcDACAAIAQ3AwggCkHwAGokAAtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC8ABAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AUnENACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEAgASACUiABIAJTcQ0BIAAgASAChYRCAFIPCyAAQgBSIAEgAlUgASACURsNACAAIAEgAoWEQgBSIQMLIAMLwA8CBX8PfiMAQdACayIFJAAgBEL///////8/gyELIAJC////////P4MhCiACIASFQoCAgICAgICAgH+DIQwgBEIwiKdB//8BcSEGAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgBkH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDAwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEMIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDAwDCyAMQoCAgICAgMD//wCEIQxCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDYRQBEBCgICAgICA4P//ACAMIAIgA4RQGyEMQgAhAQwCCyACIAOEUARAIAxCgICAgICAwP//AIQhDEIAIQEMAgsgDUL///////8/WARAIAVBwAJqIAEgCiABIAogClAiBxt5IAdBBnStfKciB0EPaxD1A0EQIAdrIQcgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIIG3kgCEEGdK18pyIIQQ9rEPUDIAcgCGpBEGshByAFKQO4AiELIAUpA7ACIQMLIAVBoAJqIAtCgICAgICAwACEIhFCD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAEP4DIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEP4DIAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAEP4DIAVB8AFqIARCAEIAIAUpA4gCfUIAEP4DIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEP4DIAVB0AFqIARCAEIAIAUpA+gBfUIAEP4DIAVBwAFqIAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAEP4DIAVBsAFqIARCAEIAIAUpA8gBfUIAEP4DIAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI/iIRCAX0iBEIAEP4DIAVBkAFqIANCD4ZCACAEQgAQ/gMgBUHwAGogBEIAQgAgBSkDqAEgBSkDoAEiCyAFKQOYAXwiAiALVK18IAJCAVatfH1CABD+AyAFQYABakIBIAJ9QgAgBEIAEP4DIAcgCSAGa2ohBgJ+IAUpA3AiEkIBhiIOIAUpA4gBIg9CAYYgBSkDgAFCP4iEfCINQufsAH0iE0IgiCICIApCgICAgICAwACEIhVCAYYiF0IgiCIEfiIQIAFCAYYiFEIgiCILIA0gE1atIA0gDlStIAUpA3hCAYYgEkI/iIQgD0I/iHx8fEIBfSISQiCIIg1+fCIOIBBUrSAOIBJC/////w+DIhIgAUI/iCIYIApCAYaEQv////8PgyIKfnwiDyAOVK18IAQgDX58IAQgEn4iECAKIA1+fCIOIBBUrUIghiAOQiCIhHwgDyAOQiCGfCIOIA9UrXwgDiATQv////8PgyITIAp+IhAgAiALfnwiDyAQVK0gDyASIBRC/v///w+DIhB+fCIWIA9UrXx8Ig8gDlStfCAPIAQgE34iDiANIBB+fCIEIAIgCn58IgogCyASfnwiDUIgiCAKIA1WrSAEIA5UrSAEIApWrXx8QiCGhHwiBCAPVK18IAQgFiACIBB+IgIgCyATfnwiCkIgiCACIApWrUIghoR8IgIgFlStIAIgDUIghnwgAlStfHwiAiAEVK18IgRC/////////wBYBEAgFyAYhCEVIAVB0ABqIAIgBCADIBEQ/gMgAUIxhiAFKQNYfSAFKQNQIgFCAFKtfSELIAZB/v8AaiEGQgAgAX0MAQsgBUHgAGogBEI/hiACQgGIhCICIARCAYgiBCADIBEQ/gMgAUIwhiAFKQNofSAFKQNgIgpCAFKtfSELIAZB//8AaiEGIAEhFEIAIAp9CyEKIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiAKQj+IhCEBIARC////////P4MgBq1CMIaEIQsgCkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEPwDIAVBMGogFCAVIAZB8ABqEPUDIAVBIGogAyARIAUpA0AiAiAFKQNIIgsQ/gMgBSkDOCAFKQMoQgGGIAUpAyAiAUI/iIR9IAUpAzAiBCABQgGGIgpUrX0hASAEIAp9CyEEIAVBEGogAyARQgNCABD+AyAFIAMgEUIFQgAQ/gMgCyACIAJCAYMiCiAEfCIEIANWIAEgBCAKVK18IgEgEVYgASARURutfCIDIAJUrXwiAiADIAJCgICAgICAwP//AFQgBCAFKQMQViABIAUpAxgiAlYgASACURtxrXwiAiADVK18IgMgAiADQoCAgICAgMD//wBUIAQgBSkDAFYgASAFKQMIIgRWIAEgBFEbca18IgEgAlStfCAMhCEMCyAAIAE3AwAgACAMNwMIIAVB0AJqJAAL5AECBH4CfyMAQRBrIgYkACABvSIFQv////////8HgyECIAACfiAFQjSIQv8PgyIDQgBSBEAgA0L/D1IEQCACQgSIIQQgA0KA+AB8IQMgAkI8hgwCCyACQgSIIQRC//8BIQMgAkI8hgwBCyACUARAQgAhA0IADAELIAYgAkIAIAWnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgdBMWoQ9QNBjPgAIAdrrSEDIAYpAwhCgICAgICAwACFIQQgBikDAAs3AwAgACAFQoCAgICAgICAgH+DIANCMIaEIASENwMIIAZBEGokAAt/AgJ/AX4jAEEQayIDJAAgAAJ+IAFFBEBCAAwBCyADIAEgAUEfdSICcyACayICrUIAIAJnIgJB0QBqEPUDIAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQAC2cCAX8BfiMAQRBrIgIkACAAAn4gAUUEQEIADAELIAIgAa1CAEHwACABZyIBQR9zaxD1AyACKQMIQoCAgICAgMAAhUGegAEgAWutQjCGfCEDIAIpAwALNwMAIAAgAzcDCCACQRBqJAALUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLyQoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDyAEQjCIp0H//wFxIQYCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAGQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIHG3kgB0EGdK18pyIHQQ9rEPUDQRAgB2shByAFKQNYIg1CIIghDyAFKQNQIQELIAJC////////P1YNACAFQUBrIAMgDCADIAwgDFAiCRt5IAlBBnStfKciCUEPaxD1AyAHIAlrQRBqIQcgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iESALQiCIIgsgAUL/////D4MiAX58IhBCIIYiEiABIAJ+fCIOIBJUrSACIA1C/////w+DIg1+IhUgBCALfnwiEiAMQg+GIhMgA0IxiIRC/////w+DIgMgAX58IhQgECARVK1CIIYgEEIgiIR8IhAgAiAPQoCABIQiDH4iFiALIA1+fCIPIBNCIIhCgICAgAiEIgIgAX58IhEgAyAEfnwiE0IghnwiF3whASAGIAhqIAdqQf//AGshBgJAIAIgBH4iGCALIAx+fCIEIBhUrSAEIAMgDX58IgsgBFStfCACIAx+fCALIBIgFVStIBIgFFatfHwiBCALVK18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiARIBNWrSAPIBZUrSAPIBFWrXx8QiCGIBNCIIiEfCIEIAJUrXwgBCAQIBRUrSAQIBdWrXx8IgIgBFStfCIEQoCAgICAgMAAg0IAUgRAIAZBAWohBgwBCyAOQj+IIQMgBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiAOQgGGIQ4gAyABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiCEH/AE0EQCAFQTBqIA4gASAGQf8AaiIGEPUDIAVBIGogAiAEIAYQ9QMgBUEQaiAOIAEgCBD8AyAFIAIgBCAIEPwDIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQ4gBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv///////z+DIAatQjCGhAsgCoQhCiAOUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgDiABQoCAgICAgICAgH+FhEIAUgRAIAIhAQwBCyAKIAIgAkIBg3wiASACVK18IQoLIAAgATcDACAAIAo3AwggBUHgAGokAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALRQEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQ9AMgBSkDACEEIAAgBSkDCDcDCCAAIAQ3AwAgBUEQaiQAC/UDAgJ+BX8jAEEgayIFJAAgAUL///////8/gyECAn4gAUIwiEL//wGDIgOnIgRBgfgAa0H9D00EQCACQgSGIABCPIiEIQIgBEGA+ABrrSEDAkAgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACFINACACQgGDIAJ8IQILQgAgAiACQv////////8HViIEGyEAIAStIAN8DAELAkAgACAChFANACADQv//AVINACACQgSGIABCPIiEQoCAgICAgIAEhCEAQv8PDAELIARB/ocBSwRAQgAhAEL/DwwBC0GA+ABBgfgAIANQIgcbIgggBGsiBkHwAEoEQEIAIQBCAAwBCyAFQRBqIAAgAiACQoCAgICAgMAAhCAHGyICQYABIAZrEPUDIAUgACACIAYQ/AMgBSkDCEIEhiAFKQMAIgJCPIiEIQACQCAEIAhHIAUpAxAgBSkDGIRCAFJxrSACQv//////////D4OEIgJCgYCAgICAgIAIWgRAIABCAXwhAAwBCyACQoCAgICAgICACFINACAAQgGDIAB8IQALIABCgICAgICAgAiFIAAgAEL/////////B1YiBBshACAErQshAiAFQSBqJAAgAUKAgICAgICAgIB/gyACQjSGhCAAhL8L3AMCBX8CfiMAQSBrIgQkACABQv///////z+DIQcCQCABQjCIQv//AYMiCKciA0GB/wBrQf0BTQRAIAdCGYinIQICQCAAUCABQv///w+DIgdCgICACFQgB0KAgIAIURtFBEAgAkEBaiECDAELIAAgB0KAgIAIhYRCAFINACACQQFxIAJqIQILQQAgAiACQf///wNLIgUbIQJBgYF/QYCBfyAFGyADaiEDDAELAkAgACAHhFANACAIQv//AVINACAHQhmIp0GAgIACciECQf8BIQMMAQsgA0H+gAFLBEBB/wEhAwwBC0GA/wBBgf8AIAhQIgUbIgYgA2siAkHwAEoEQEEAIQJBACEDDAELIARBEGogACAHIAdCgICAgICAwACEIAUbIgdBgAEgAmsQ9QMgBCAAIAcgAhD8AyAEKQMIIgBCGYinIQICQCAEKQMAIAMgBkcgBCkDECAEKQMYhEIAUnGthCIHUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAcgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIAJBgICABHMgAiACQf///wNLIgMbIQILIARBIGokACABQiCIp0GAgICAeHEgA0EXdHIgAnK+C/IBAQN/AkACQAJAIAFB/wFxIgQEQCAAQQNxBEAgAUH/AXEhAgNAIAAtAAAiA0UNBSACIANGDQUgAEEBaiIAQQNxDQALC0GAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0BIARBgYKECGwhBANAQYCChAggAiAEcyIDayADckGAgYKEeHFBgIGChHhHDQIgACgCBCECIABBBGoiAyEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwCCyAAEN0DIABqDwsgACEDCwNAIAMiAC0AACICRQ0BIABBAWohAyACIAFB/wFxRw0ACwsgAAsaACAAIAEQggQiAEEAIAAtAAAgAUH/AXFGGwsWACAARQRAQQAPC0G4lAIgADYCAEF/C0YBAX8gACgCPCEDIwBBEGsiACQAIAMgAacgAUIgiKcgAkH/AXEgAEEIahAeEIQEIQIgACkDCCEBIABBEGokAEJ/IAEgAhsL2wIBB38jAEEgayIDJAAgAyAAKAIcIgQ2AhAgACgCFCEFIAMgAjYCHCADIAE2AhggAyAFIARrIgE2AhQgASACaiEGIANBEGohBEECIQcCfwJAAkACQCAAKAI8IANBEGpBAiADQQxqEBUQhAQEQCAEIQUMAQsDQCAGIAMoAgwiAUYNAiABQQBIBEAgBCEFDAQLIAQgASAEKAIEIghLIglBA3RqIgUgASAIQQAgCRtrIgggBSgCAGo2AgAgBEEMQQQgCRtqIgQgBCgCACAIazYCACAGIAFrIQYgACgCPCAFIgQgByAJayIHIANBDGoQFRCEBEUNAAsLIAZBf0cNAQsgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCECACDAELIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgB0ECRg0AGiACIAUoAgRrCyEBIANBIGokACABC9kBAQR/IwBBIGsiAyQAIAMgATYCECADIAIgACgCMCIEQQBHazYCFCAAKAIsIQYgAyAENgIcIAMgBjYCGEEgIQQCQAJAIAAgACgCPCADQRBqQQIgA0EMahAWEIQEBH8gBAUgAygCDCIEQQBKDQFBIEEQIAQbCyAAKAIAcjYCAAwBCyAEIQUgBCADKAIUIgZNDQAgACAAKAIsIgU2AgQgACAFIAQgBmtqNgIIIAAoAjAEQCAAIAVBAWo2AgQgASACakEBayAFLQAAOgAACyACIQULIANBIGokACAFCwwAIAAoAjwQFxCEBAubAQEBfwJAIAJBA08EQEG4lAJBHDYCAAwBCwJAIAJBAUcNACAAKAIIIgNFDQAgASADIAAoAgRrrH0hAQsgACgCFCAAKAIcRwRAIABBAEEAIAAoAiQRBAAaIAAoAhRFDQELIABBADYCHCAAQgA3AxAgACABIAIgACgCKBEaAEIAUw0AIABCADcCBCAAIAAoAgBBb3E2AgBBAA8LQX8LIAAgACgCTEEASARAIAAgASACEIkEDwsgACABIAIQiQQL7wEBA38gAEUEQEGYkQIoAgAEQEGYkQIoAgAQiwQhAQtBsJICKAIABEBBsJICKAIAEIsEIAFyIQELQbSUAigCACIABEADQCAAKAJMGiAAKAIUIAAoAhxHBEAgABCLBCABciEBCyAAKAI4IgANAAsLIAEPCyAAKAJMQQBIIQICQAJAIAAoAhQgACgCHEYNACAAQQBBACAAKAIkEQQAGiAAKAIUDQBBfyEBDAELIAAoAgQiASAAKAIIIgNHBEAgACABIANrrEEBIAAoAigRGgAaC0EAIQEgAEEANgIcIABCADcDECAAQgA3AgQgAg0ACyABC3UBBH8gACgCTBogABCLBCEDIAAgACgCDBEAACEEIAAtAABBAXFFBEAgACgCOCEBIAAoAjQiAgRAIAIgATYCOAsgAQRAIAEgAjYCNAsgAEG0lAIoAgBGBEBBtJQCIAE2AgALIAAoAmAQ8QMgABDxAwsgAyAEcgvoAgECfwJAIAAgAUYNACABIAAgAmoiA2tBACACQQF0a00EQCAAIAEgAhDXAxoPCyAAIAFzQQNxIQQCQAJAIAAgAUkEQCAEBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgBA0AIANBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsiAmogASACaigCADYCACACQQNLDQALCyACRQ0CA0AgACACQQFrIgJqIAEgAmotAAA6AAAgAg0ACwwCCyACQQNNDQADQCADIAEoAgA2AgAgAUEEaiEBIANBBGohAyACQQRrIgJBA0sNAAsLIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLC6EBAQJ/IAIoAkwaIAIgAigCSCIEQQFrIARyNgJIIAIoAgQiBCACKAIIIgNGBH8gAQUgACAEIAMgBGsiAyABIAEgA0sbIgMQ1wMaIAIgAigCBCADajYCBCAAIANqIQAgASADawsiBARAA0ACQCACEOADRQRAIAIgACAEIAIoAiARBAAiAw0BCyABIARrDwsgACADaiEAIAQgA2siBA0ACwsgAQsFABAYAAtZAQF/IAAgACgCSCIBQQFrIAFyNgJIIAAoAgAiAUEIcQRAIAAgAUEgcjYCAEF/DwsgAEIANwIEIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhBBAAvEAQEDfwJAIAEgAigCECIDBH8gAwUgAhCQBA0BIAIoAhALIAIoAhQiBGtLBEAgAiAAIAEgAigCJBEEAA8LAkACQCACKAJQQQBIDQAgAUUNACABIQMDQCAAIANqIgVBAWstAABBCkcEQCADQQFrIgMNAQwCCwsgAiAAIAMgAigCJBEEACIEIANJDQIgASADayEBIAIoAhQhBAwBCyAAIQVBACEDCyAEIAUgARDXAxogAiACKAIUIAFqNgIUIAEgA2ohBAsgBAtGAQF/IAEgAmwhBAJAIAMoAkxBAEgEQCAAIAQgAxCRBCEADAELIAAgBCADEJEEIQALIAAgBEYEQCACQQAgARsPCyAAIAFuC20CAn8BfiAAKAIoIQJBASEBAkAgAEIAIAAtAABBgAFxBH9BAUECIAAoAhQgACgCHEYbBSABCyACERoAIgNCAFMNACADIAAoAggiAQR/QQQFIAAoAhwiAUUNAUEUCyAAaigCACABa6x8IQMLIAMLBwAgABC0BQsNACAAELQFGiAAEPEDCxUAIABBpI4BNgIAIABBBGoQiQYgAAsNACAAEJYEGiAAEPEDCyoAIABBpI4BNgIAIABBBGoQzwcgAEIANwIYIABCADcCECAAQgA3AgggAAsEACAACwoAIABCfxCbBBoLEgAgACABNwMIIABCADcDACAACwoAIABCfxCbBBoLuAEBBH8jAEEQayIEJAADQAJAIAIgBUwNAAJAIAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIARBDGogBEEIaiAEQQRqEJ4EEJ4EIQMgASAAKAIMIAMoAgAiAxCfBCAAIAMQoAQMAQsgACAAKAIAKAIoEQAAIgNBf0YNASABIAPAOgAAQQEhAwsgASADaiEBIAMgBWohBQwBCwsgBEEQaiQAIAULJAECfyMAQRBrIgIkACABIAAQkAUhAyACQRBqJAAgASAAIAMbC30BAn8jAEEQayIEJAAjAEEgayIDJAAgA0EYaiABIAEgAmoQkQUgA0EQaiADKAIYIAMoAhwgABCSBSADIAEgAygCEBCTBTYCDCADIAAgAygCFBCUBTYCCCAEQQhqIANBDGogA0EIahCVBSADQSBqJAAgBCgCDBogBEEQaiQACw8AIAAgACgCDCABajYCDAsEAEF/Cy8AIAAgACgCACgCJBEAAEF/RgRAQX8PCyAAIAAoAgwiAEEBajYCDCAALAAAEKMECwgAIABB/wFxCwQAQX8LsgEBBH8jAEEQayIFJAADQAJAIAIgBEwNACAAKAIYIgMgACgCHCIGTwRAIAAgASwAABCjBCAAKAIAKAI0EQMAQX9GDQEgBEEBaiEEIAFBAWohAQwCBSAFIAYgA2s2AgwgBSACIARrNgIIIAVBDGogBUEIahCeBCEDIAAoAhggASADKAIAIgMQnwQgACADIAAoAhhqNgIYIAMgBGohBCABIANqIQEMAgsACwsgBUEQaiQAIAQLDQAgAEEIahC0BRogAAsTACAAIAAoAgBBDGsoAgBqEKYECwoAIAAQpgQQ8QMLEwAgACAAKAIAQQxrKAIAahCoBAuBAQEDfyMAQRBrIgMkACAAQQA6AAAgASABKAIAQQxrKAIAahCzBCEEIAEgASgCAEEMaygCAGohAgJAIAQEQCACKAJIBEAgASABKAIAQQxrKAIAaigCSBCrBAsgACABIAEoAgBBDGsoAgBqELMEOgAADAELIAJBBBCyBAsgA0EQaiQAC3IBAX8jAEEQayIBJAAgACAAKAIAQQxrKAIAaigCGARAIAFBCGogABDABBoCQCABLQAIRQ0AIAAgACgCAEEMaygCAGooAhgQtARBf0cNACAAIAAoAgBBDGsoAgBqQQEQsgQLIAFBCGoQwQQLIAFBEGokAAsLACAAQbC1AhCOBgsaACAAIAEgASgCAEEMaygCAGooAhg2AgAgAAsQACAAEKsFIAEQqwVzQQFzCwsAIAAoAgAQtQTACyMBAX8gAkEATgR/IAAoAgggAkECdGooAgAgAXFBAEcFIAMLCw0AIAAoAgAQtgQaIAALDwAgACAAKAIQIAFyELMFCwgAIAAoAhBFCw8AIAAgACgCACgCGBEAAAsqAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEsAAAQowQLNAEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBAWo2AgwgASwAABCjBAsHACAAIAFGCz0BAX8gACgCGCICIAAoAhxGBEAgACABEKMEIAAoAgAoAjQRAwAPCyAAIAJBAWo2AhggAiABOgAAIAEQowQLHgAgACgCBEH/////B0cEQCAAIAAoAgRBAWo2AgQLC+ABAQN/IwBBEGsiAyQAIABBADYCBCADQQ9qIAAQqgQCQCADLQAPRQ0AA38gACAAKAIAQQxrKAIAaigCGBC1BCIEQX8QtwQEQEECIQUMAgsgBMAiBCACELcEBEAgACAAKAIAQQxrKAIAaigCGBC2BBogABC5BAwCCyAAKAIEQf8HTgR/QQQFIAEgBDoAACAAIAAoAgBBDGsoAgBqKAIYELYEGiAAELkEIAFBAWohAQwBCwshBQsgAUEAOgAAIAAgACgCAEEMaygCAGogBSAFQQRyIAAoAgQbELIEIANBEGokAAt5AQJ/IwBBEGsiBCQAIABBADYCBCAEQQ9qIAAQqgRBBCEDIAQtAA8EQCAAIAAgACgCAEEMaygCAGooAhgiAyABIAIgAygCACgCIBEEACIDNgIEQQZBACACIANHGyEDCyAAIAAoAgBBDGsoAgBqIAMQsgQgBEEQaiQACw0AIABBBGoQtAUaIAALEwAgACAAKAIAQQxrKAIAahC8BAsKACAAELwEEPEDCxMAIAAgACgCAEEMaygCAGoQvgQLVQAgACABNgIEIABBADoAACABIAEoAgBBDGsoAgBqELMEBEAgASABKAIAQQxrKAIAaigCSARAIAEgASgCAEEMaygCAGooAkgQqwQLIABBAToAAAsgAAuNAQEBfwJAIAAoAgQiASABKAIAQQxrKAIAaigCGEUNACAAKAIEIgEgASgCAEEMaygCAGoQswRFDQAgACgCBCIBIAEoAgBBDGsoAgBqKAIEQYDAAHFFDQAgACgCBCIBIAEoAgBBDGsoAgBqKAIYELQEQX9HDQAgACgCBCIBIAEoAgBBDGsoAgBqQQEQsgQLCwsAIABB8LICEI4GC1kBAX8CQEF/IAAoAkwQtwRFBEAgACgCTCEADAELIAAjAEEQayIBJAAgAUEMaiAAELIFIAFBDGoQrARBIBCsBSEAIAFBDGoQiQYgAUEQaiQAIAA2AkwLIADACwgAIAAoAgBFC7gBAQV/IwBBEGsiAiQAIAJBCGogABDABBoCQCACQQhqLQAARQ0AIAJBBGogACAAKAIAQQxrKAIAahCyBSACQQRqEMIEIQMgAkEEahCJBiACIAAQrQQhBCAAIAAoAgBBDGsoAgBqIgUQwwQhBiACIAMgBCgCACAFIAYgASADKAIAKAIYEQcANgIEIAJBBGoQxARFDQAgACAAKAIAQQxrKAIAakEFELIECyACQQhqEMEEIAJBEGokACAAC7gBAQV/IwBBEGsiAiQAIAJBCGogABDABBoCQCACQQhqLQAARQ0AIAJBBGogACAAKAIAQQxrKAIAahCyBSACQQRqEMIEIQMgAkEEahCJBiACIAAQrQQhBCAAIAAoAgBBDGsoAgBqIgUQwwQhBiACIAMgBCgCACAFIAYgASADKAIAKAIgER8ANgIEIAJBBGoQxARFDQAgACAAKAIAQQxrKAIAakEFELIECyACQQhqEMEEIAJBEGokACAACycBAX8CQCAAKAIAIgJFDQAgAiABELgEQX8QtwRFDQAgAEEANgIACwsTACAAIAEgAiAAKAIAKAIwEQQACxUAIABBxI8BNgIAIABBBGoQiQYgAAsNACAAEMkEGiAAEPEDCyoAIABBxI8BNgIAIABBBGoQzwcgAEIANwIYIABCADcCECAAQgA3AgggAAvLAQEEfyMAQRBrIgQkAANAAkAgAiAFTA0AAn8gACgCDCIDIAAoAhAiBkkEQCAEQf////8HNgIMIAQgBiADa0ECdTYCCCAEIAIgBWs2AgQgBEEMaiAEQQhqIARBBGoQngQQngQhAyABIAAoAgwgAygCACIDEM0EIAAgACgCDCADQQJ0ajYCDCABIANBAnRqDAELIAAgACgCACgCKBEAACIDQX9GDQEgASADNgIAQQEhAyABQQRqCyEBIAMgBWohBQwBCwsgBEEQaiQAIAULgAEBAn8jAEEQayIEJAAjAEEgayIDJAAgA0EYaiABIAEgAkECdGoQkQUgA0EQaiADKAIYIAMoAhwgABCYBSADIAEgAygCEBCTBTYCDCADIAAgAygCFBCUBTYCCCAEQQhqIANBDGogA0EIahCVBSADQSBqJAAgBCgCDBogBEEQaiQACywAIAAgACgCACgCJBEAAEF/RgRAQX8PCyAAIAAoAgwiAEEEajYCDCAAKAIAC7cBAQR/IwBBEGsiBSQAA0ACQCACIANMDQAgACgCGCIEIAAoAhwiBk8EQCAAIAEoAgAgACgCACgCNBEDAEF/Rg0BIANBAWohAyABQQRqIQEMAgUgBSAGIARrQQJ1NgIMIAUgAiADazYCCCAFQQxqIAVBCGoQngQhBCAAKAIYIAEgBCgCACIEEM0EIAAgBEECdCIGIAAoAhhqNgIYIAMgBGohAyABIAZqIQEMAgsACwsgBUEQaiQAIAMLvQEBAn8jAEEQayIBJAAgACAAKAIAQQxrKAIAaigCGARAIAFBCGoiAiAANgIEIAJBADoAACAAIAAoAgBBDGsoAgBqELMEBEAgACAAKAIAQQxrKAIAaigCSARAIAAgACgCAEEMaygCAGooAkgQ0AQLIAJBAToAAAsCQCABLQAIRQ0AIAAgACgCAEEMaygCAGooAhgQtARBf0cNACAAIAAoAgBBDGsoAgBqQQEQsgQLIAFBCGoQwQQLIAFBEGokAAsLACAAQai1AhCOBgsQACAAEK0FIAEQrQVzQQFzCwoAIAAoAgAQ1gQLEwAgACABIAIgACgCACgCDBEEAAsNACAAKAIAENcEGiAACycBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIkEQAADwsgASgCAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEEajYCDCABKAIAC1cBAn8CQCAAKAIAIgJFDQACfyACKAIYIgMgAigCHEYEQCACIAEgAigCACgCNBEDAAwBCyACIANBBGo2AhggAyABNgIAIAELQX8QtwRFDQAgAEEANgIACwsdAQF/IwBBEGsiASQAIAAQmgUhACABQRBqJAAgAAsHACAAKAIIC48BAQN/IwBBEGsiAiQAIAAQ4gQEQCAAKAIAIQMgABDvBBogAxCbBQsgARDnBBogARDiBCEEIAAgASgCCDYCCCAAIAEpAgA3AgAgAUEAEJwFIAJBADoADyABIAJBD2oQnQUCQCAAIAFGIgMNACAEDQALIAAQ4gQhAQJAIAMNACABDQAgABDjBBoLIAJBEGokAAsXACAAIAM2AhAgACACNgIMIAAgATYCCAsXACAAIAI2AhwgACABNgIUIAAgATYCGAsPACAAIAAoAhggAWo2AhgLDAAgACABQQRqEM0HCxIAIAAQ4gQEQCAAKAIADwsgAAscAQF/IAAoAgAhAiAAIAEoAgA2AgAgASACNgIACwoAIAAtAAtBB3YLCwAgAC0AC0H/AHELfgECfyMAQRBrIgIkAAJAIAEoAjAiA0EQcQRAIAEoAhggASgCLEsEQCABIAEoAhg2AiwLIAAgASgCFCABKAIsEOUEGgwBCyADQQhxBEAgACABKAIIIAEoAhAQ5QQaDAELIwBBEGsiASQAIAAQmgUaIAFBEGokAAsgAkEQaiQACx8BAX8jAEEQayIDJAAgACABIAIQ5gQgA0EQaiQAIAALsAEBA38CQCABIAIQoAUhBCMAQRBrIgMkACAEQff///8HTQRAAkAgBBCiBQRAIAAgBBCcBSAAIQUMAQsgA0EIaiAEEKMFQQFqEKQFIAMoAgwaIAAgAygCCCIFEKUFIAAgAygCDBCmBSAAIAQQpwULA0AgASACRwRAIAUgARCdBSAFQQFqIQUgAUEBaiEBDAELCyADQQA6AAcgBSADQQdqEJ0FIANBEGokAAwBCxCoBQALCxUAIAAQ4gQEQCAAKAIEDwsgABDjBAsbAQF/QQohASAAEOIEBH8gABDvBEEBawUgAQsLlQEBA38CQCAAEOcEIgIgAUkEQCMAQRBrIgQkACABIAJrIgIEQCACIAAQ6AQiAyAAEOcEIgFrSwRAIAAgAyACIANrIAFqIAEgARCbBwsgASAAEOAEIgNqIAJBABDJCCAAIAEgAmoiAhCcByAEQQA6AA8gAiADaiAEQQ9qEJ0FCyAEQRBqJAAMAQsgACAAEOAEIAEQrAgLC2UAIAAoAhggACgCLEsEQCAAIAAoAhg2AiwLAkAgAC0AMEEIcUUNACAAKAIQIAAoAixJBEAgACAAKAIIIAAoAgwgACgCLBDcBAsgACgCDCAAKAIQTw0AIAAoAgwsAAAQowQPC0F/C5gBACAAKAIYIAAoAixLBEAgACAAKAIYNgIsCwJAIAAoAgggACgCDE8NACABQX8QtwQEQCAAIAAoAgggACgCDEEBayAAKAIsENwEIAEQ7AQPCyAALQAwQRBxRQRAIAHAIAAoAgxBAWssAAAQtwRFDQELIAAgACgCCCAAKAIMQQFrIAAoAiwQ3AQgACgCDCABwDoAACABDwtBfwsOAEEAIAAgAEF/ELcEGwuIAgEJfyMAQRBrIgMkAAJ/IAFBfxC3BEUEQCAAKAIMIQQgACgCCCEFIAAoAhggACgCHEYEQEF/IAAtADBBEHFFDQIaIAAoAhghBiAAKAIUIQcgACgCLCEIIAAoAhQhCSAAQSBqIgJBABDKCCACIAIQ6AQQ6QQgACACEOAEIgogAhDnBCAKahDdBCAAIAYgB2sQ3gQgACAAKAIUIAggCWtqNgIsCyADIAAoAhhBAWo2AgwgACADQQxqIABBLGoQ7gQoAgA2AiwgAC0AMEEIcQRAIAAgAEEgahDgBCICIAIgBCAFa2ogACgCLBDcBAsgACABwBC4BAwBCyABEOwECyEAIANBEGokACAACyQBAn8jAEEQayICJAAgACABEKoFIQMgAkEQaiQAIAEgACADGwsOACAAKAIIQf////8HcQuYAgIBfwN+IAEoAhggASgCLEsEQCABIAEoAhg2AiwLQn8hCAJAIARBGHEiBUUNACADQQFGIAVBGEZxDQAgASgCLCIFBEAgBSABQSBqEOAEa6whBgsCQAJAAkAgAw4DAgABAwsgBEEIcQRAIAEoAgwgASgCCGusIQcMAgsgASgCGCABKAIUa6whBwwBCyAGIQcLIAIgB3wiAkIAUw0AIAIgBlUNACAEQQhxIQMCQCACUA0AIAMEQCABKAIMRQ0CCyAEQRBxRQ0AIAEoAhhFDQELIAMEQCABIAEoAgggASgCCCACp2ogASgCLBDcBAsgBEEQcQRAIAEgASgCFCABKAIcEN0EIAEgAqcQ3gQLIAIhCAsgACAIEJsEGgsLACAAQbi1AhCOBgsPACAAIAAoAgAoAhwRAAAL1AEBA38gAEGkkQE2AgAjAEEQayIBJAAgACgCQCICBH8gAUGhBDYCBCABQQhqIAIgAUEEahD0BCECIAAgACgCACgCGBEAABogAhD1BBCMBBogAEEANgJAIABBAEEAIAAoAgAoAgwRBAAaIAIoAgAhAyACQQA2AgAgAwRAIAMgAhCwBSgCABEAABoLQQAFQQALGiABQRBqJAACQCAALQBgQQFHDQAgACgCICIBRQ0AIAEQ8QMLAkAgAC0AYUEBRw0AIAAoAjgiAUUNACABEPEDCyAAEJYECzIBAX8jAEEQayIDJAAgAyABNgIMIAAgA0EMahCvBSIAQQRqIAIQrwUaIANBEGokACAACxQBAX8gACgCACEBIABBADYCACABCw0AIAAQ8wQaIAAQ8QMLxwUBBn8jAEEQayIDJAACQAJAIAAoAkBFBEBBfyEEDAELIAAoAlxBCHEiBEUEQCAAQQBBABDdBCAAIABBIEE4IAAtAGIiARtqKAIAIgIgAiAAQTRBPCABG2ooAgBqIgEgARDcBCAAQQg2AlwLIARFIQQgACgCDEUEQCAAIANBD2ogA0EQaiIBIAEQ3AQLQQAhASAERQRAIAAoAhAhBCAAKAIIIQEgA0EENgIEIAMgBCABa0ECbTYCCCADQQhqIANBBGoQ+AQoAgAhAQtBfyEEAkAgACgCDCAAKAIQRgRAIAAoAgggACgCECABayABEI0EIAAtAGJBAUYEQCABIAAoAghqIAAoAhAgACgCCCABamsgACgCQBCOBCICRQ0CIAAgACgCCCABIAAoAghqIAEgACgCCGogAmoQ3AQgACgCDCwAABCjBCEEDAILAn8gACgCKCICIAAoAiQiBUYEQCACDAELIAAoAiAgBSACIAVrEI0EIAAoAiQhAiAAKAIoCyEGIAAgACgCICIFIAYgAmsiAmo2AiQgACAFQQggACgCNCAFIABBLGpGGyIGajYCKCADIAAoAjwgAWs2AgggAyAGIAJrNgIEIANBCGogA0EEahD4BCgCACECIAAgACkCSDcCUCAAKAIkIAIgACgCQBCOBCICRQ0BIAAoAkQiBUUNAyAAIAAoAiQgAmoiAjYCKAJAIAUgAEHIAGogACgCICACIABBJGogASAAKAIIaiAAKAIIIAAoAjxqIANBCGoQ+QRBA0YEQCAAIAAoAiAiBCAEIAAoAigQ3AQMAQsgAygCCCABIAAoAghqRg0CIAAgACgCCCABIAAoAghqIAMoAggQ3AQLIAAoAgwsAAAQowQhBAwBCyAAKAIMLAAAEKMEIQQLIAAoAgggA0EPakcNACAAQQBBAEEAENwECyADQRBqJAAgBA8LEPoEAAskAQJ/IwBBEGsiAiQAIAEgABCqBSEDIAJBEGokACABIAAgAxsLHQAgACABIAIgAyAEIAUgBiAHIAAoAgAoAhARDQALBgAQjwQAC2gAAkAgACgCQEUNACAAKAIIIAAoAgxPDQAgAUF/ELcEBEAgAEF/EKAEIAEQ7AQPCyAALQBYQRBxRQRAIAHAIAAoAgxBAWssAAAQtwRFDQELIABBfxCgBCAAKAIMIAHAOgAAIAEPC0F/C4EEAQZ/IwBBEGsiAyQAAn8CQCAAKAJARQ0AIAAtAFxBEHFFBEAgAEEAQQBBABDcBAJAIAAoAjQiAkEJTwRAIAAtAGJBAUYEQCAAIAAoAiAiBCACIARqQQFrEN0EDAILIAAgACgCOCICIAIgACgCPGpBAWsQ3QQMAQsgAEEAQQAQ3QQLIABBEDYCXAsgACgCFCEFIAAoAhwhBiABQX8QtwRFBEAgACgCGEUEQCAAIANBD2ogA0EQahDdBAsgACgCGCABwDoAACAAQQEQ3gQLIAAoAhggACgCFEcEQAJAIAAtAGJBAUYEQCAAKAIUQQEgACgCGCAAKAIUayICIAAoAkAQkgQgAkcNAwwBCyADIAAoAiA2AgggAEHIAGohBwNAIAAoAkQiAgRAIAIgByAAKAIUIAAoAhggA0EEaiAAKAIgIgQgBCAAKAI0aiADQQhqEP0EIQIgACgCFCADKAIERg0EIAJBA0YEQCAAKAIUQQEgACgCGCAAKAIUayICIAAoAkAQkgQgAkcNBQwDCyACQQFLDQQgACgCICIEQQEgAygCCCAEayIEIAAoAkAQkgQgBEcNBCACQQFHDQIgACADKAIEIAAoAhgQ3QQgACAAKAIcIAAoAhRrEN4EDAELCxD6BAALIAAgBSAGEN0ECyABEOwEDAELQX8LIQAgA0EQaiQAIAALHQAgACABIAIgAyAEIAUgBiAHIAAoAgAoAgwRDQALwQIBA38jAEEQayIEJAAgBCACNgIMIABBAEEAQQAQ3AQgAEEAQQAQ3QQCQCAALQBgQQFHDQAgACgCICIDRQ0AIAMQ8QMLAkAgAC0AYUEBRw0AIAAoAjgiA0UNACADEPEDCyAAIAI2AjQgAAJ/AkACQAJAIAJBCU8EQCAALQBiIQMgAUUNASADQQFxIgVFDQEgAEEAOgBgIAAgATYCICAFRQ0DDAILIABBADoAYCAAQQg2AjQgACAAQSxqNgIgIAAtAGJBAXENAQwCCyACEMQIIQIgAEEBOgBgIAAgAjYCICADQQFxRQ0BC0EAIQEgAEEANgI8QQAMAQsgBEEINgIIIAAgBEEMaiAEQQhqEP8EKAIAIgM2AjwgAQRAQQAgA0EISw0BGgsgAxDECCEBQQELOgBhIAAgATYCOCAEQRBqJAAgAAskAQJ/IwBBEGsiAiQAIAAgARCQBSEDIAJBEGokACABIAAgAxsL3AEBAX8jAEEQayIFJAAgASgCRCIEBEAgBBC0BCEEAkACQAJAIAEoAkBFDQAgBEEATCACQgBScQ0AIAEgASgCACgCGBEAAEUNAQsgAEJ/EJsEGgwBCyADQQNPBEAgAEJ/EJsEGgwBCyABKAJAIAStIAJ+QgAgBEEAShsgAxCKBARAIABCfxCbBBoMAQsgAAJ+IAEoAkAiACgCTEEASARAIAAQkwQMAQsgABCTBAsQmwQhACAFIAEpAkgiAjcDACAFIAI3AwggACAFKQIANwMACyAFQRBqJAAPCxD6BAALgQEAIwBBEGsiAyQAAkACQCABKAJABEAgASABKAIAKAIYEQAARQ0BCyAAQn8QmwQaDAELIAEoAkAgAikDCEEAEIoEBEAgAEJ/EJsEGgwBCyADQQhqIAIpAwA3AgAgASADKQMINwJIIAAgAikDCDcDCCAAIAIpAwA3AwALIANBEGokAAvcAwIEfwF+IwBBEGsiAiQAAkAgACgCQEUNAAJAIAAoAkQiAwRAIAAoAlwiBEEQcQRAIAAoAhggACgCFEcEQEF/IQEgAEF/IAAoAgAoAjQRAwBBf0YNBAsgAEHIAGohAwNAIAAoAkQgAyAAKAIgIgEgASAAKAI0aiACQQxqEIMFIQQgACgCICIBQQEgAigCDCABayIBIAAoAkAQkgQgAUcNAwJAIARBAWsOAgEEAAsLQQAhASAAKAJAEIsERQ0DDAILIARBCHFFDQIgAiAAKQJQNwMAAn8CQAJAIAAtAGJBAUYEQCAAKAIQIAAoAgxrrCEFDAELIAMQtAQhASAAKAIoIAAoAiRrrCEFIAFBAEoEQCAAKAIQIAAoAgxrIAFsrCAFfCEFDAELIAAoAgwgACgCEEcNAQtBAAwBCyAAKAJEIgEgAiAAKAIgIAAoAiQgACgCDCAAKAIIayABKAIAKAIgEQcAIQEgACgCJCABIAAoAiBqa6wgBXwhBUEBCyEBIAAoAkBCACAFfUEBEIoEDQEgAQRAIAAgAikDADcCSAsgACAAKAIgIgE2AiggACABNgIkQQAhASAAQQBBAEEAENwEIABBADYCXAwCCxD6BAALQX8hAQsgAkEQaiQAIAELFwAgACABIAIgAyAEIAAoAgAoAhQRBwALlAIBAX8gACAAKAIAKAIYEQAAGiAAIAEQ8QQiATYCRCAALQBiIQIgACABEPIEIgE6AGIgASACRwRAIABBAEEAQQAQ3AQgAEEAQQAQ3QQgAC0AYCEBIAAtAGJBAUYEQAJAIAFBAXFFDQAgACgCICIBRQ0AIAEQ8QMLIAAgAC0AYToAYCAAIAAoAjw2AjQgACgCOCEBIABCADcCOCAAIAE2AiAgAEEAOgBhDwsCQCABQQFxDQAgACgCICIBIABBLGpGDQAgAEEAOgBhIAAgATYCOCAAIAAoAjQiATYCPCABEMQIIQEgAEEBOgBgIAAgATYCIA8LIAAgACgCNCIBNgI8IAEQxAghASAAQQE6AGEgACABNgI4CwsZACAAQeSQATYCACAAQSBqEMgIGiAAEJYECwoAIAAQhQUQ8QMLGgAgACABIAIpAwhBACADIAEoAgAoAhARGwALOwEBfyAAQfyWASgCACIBNgIAIAAgAUEMaygCAGpBiJcBKAIANgIAIABBBGoQhQUaIABBOGoQtAUaIAALCgAgABCIBRDxAwsTACAAIAAoAgBBDGsoAgBqEIgFCxMAIAAgACgCAEEMaygCAGoQiQULPAEBfyAAQbCYASgCACIBNgIAIAAgAUEMaygCAGpBvJgBKAIANgIAIABBCGoQ8wQaIABB7ABqELQFGiAACwoAIAAQjAUQ8QMLEwAgACAAKAIAQQxrKAIAahCMBQsTACAAIAAoAgBBDGsoAgBqEI0FCw0AIAAoAgAgASgCAEgLMQEBfyMAQRBrIgMkACADIAE2AgwgAyACNgIIIAAgA0EMaiADQQhqEJYFIANBEGokAAtCAQF/IwBBEGsiBCQAIAQgAjYCDCADIAEgAiABayICEJcFIAQgAiADajYCCCAAIARBDGogBEEIahCVBSAEQRBqJAALCQAgACABEJQFCwoAIAAgASAAa2oLCwAgACABIAIQlgULFgAgACABKAIANgIAIAAgAigCADYCBAsQACACBEAgACABIAIQjQQLC0UBAX8jAEEQayIEJAAgBCACNgIMIAMgASACIAFrIgJBAnUQmQUgBCACIANqNgIIIAAgBEEMaiAEQQhqEJUFIARBEGokAAsTACACBEAgACABIAJBAnQQjQQLCxIAIABCADcCACAAQQA2AgggAAsJACAAQQEQngULJQAgACAALQALQYABcSABQf8AcXI6AAsgACAALQALQf8AcToACwsMACAAIAEtAAA6AAALFQAgARCfBQRAIAAQ8QMPCyAAEPEDCwcAIABBCEsLCQAgACABEKEFCwcAIAEgAGsLBwAgAEELSQskACAAQQtPBH8gAEEIakF4cSIAIABBAWsiACAAQQtGGwVBCgsLGwEBfyABQQEQqQUhAiAAIAE2AgQgACACNgIACwkAIAAgATYCAAsuACAAIAAoAghBgICAgHhxIAFB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIICwkAIAAgATYCBAsGABD6BAALtAUBCX8gARCfBQRAQQQgASABQQRNGyEIQQEgACAAQQFNGyEAA0ACQCAIIgIgAGpBAWtBACACa3EiASAAIAAgAUkbIQFBACEDIwBBEGsiBiQAAkAgAkEDcQ0AIAEgAnANAAJ/IAZBDGohCQJAQTACfyACQQhGBEAgARDwAwwBC0EcIQMgAkEESQ0BIAJBA3ENASACQQJ2IgQgBEEBa3ENAUEwIAFBQCACa0sNAhoCfyABIQRBECEDAkBBEEEQIAIgAkEQTRsiAiACQRBNGyIBIAFBAWtxRQRAIAEhAgwBCwNAIAMiAkEBdCEDIAEgAksNAAsLIARBQCACa08EQEG4lAJBMDYCAEEADAELQQBBECAEQQtqQXhxIARBC0kbIgQgAmpBDGoQ8AMiA0UNABogA0EIayEBAkAgAkEBayADcUUEQCABIQIMAQsgA0EEayIHKAIAIgpBeHEgAiADakEBa0EAIAJrcUEIayIDIAJBACADIAFrQQ9NG2oiAiABayIDayEFIApBA3FFBEAgASgCACEBIAIgBTYCBCACIAEgA2o2AgAMAQsgAiAFIAIoAgRBAXFyQQJyNgIEIAIgBWoiBSAFKAIEQQFyNgIEIAcgAyAHKAIAQQFxckECcjYCACABIANqIgUgBSgCBEEBcjYCBCABIAMQ8wMLAkAgAigCBCIDQQNxRQ0AIANBeHEiASAEQRBqTQ0AIAIgBCADQQFxckECcjYCBCACIARqIgMgASAEayIEQQNyNgIEIAEgAmoiASABKAIEQQFyNgIEIAMgBBDzAwsgAkEIagsLIgJFDQEaIAkgAjYCAEEAIQMLIAMLIQJBACAGKAIMIAIbIQMLIAZBEGokACADIgINAEG8wQIoAgAiAUUNACABEREADAELCyACIgFFBEAQqAULIAEPCyAAEMQICw0AIAAoAgAgASgCAEkLLAEBfyAAKAIAIgEEQCABELUEQX8QtwRFBEAgACgCAEUPCyAAQQA2AgALQQELEQAgACABIAAoAgAoAhwRAwALLAEBfyAAKAIAIgEEQCABENYEQX8QtwRFBEAgACgCAEUPCyAAQQA2AgALQQELEQAgACABIAAoAgAoAiwRAwALDgAgACABKAIANgIAIAALBwAgAEEEaguoAQEEfyMAQRBrIgUkACABEN0DIQIjAEEQayIDJAACQCACQff///8HTQRAAkAgAhCiBQRAIAAgAhCcBSAAIQQMAQsgA0EIaiACEKMFQQFqEKQFIAMoAgwaIAAgAygCCCIEEKUFIAAgAygCDBCmBSAAIAIQpwULIAQgASACEJ8EIANBADoAByACIARqIANBB2oQnQUgA0EQaiQADAELEKgFAAsgBUEQaiQACwwAIAAgAUEcahDNBwshACAAIAAoAhhFIAFyIgE2AhAgACgCFCABcQRAEPoEAAsLbwECfyAAQeiZATYCACAAKAIoIQEDQCABBEBBACAAIAFBAWsiAUECdCICIAAoAiRqKAIAIAAoAiAgAmooAgARBQAMAQsLIABBHGoQiQYgACgCIBDxAyAAKAIkEPEDIAAoAjAQ8QMgACgCPBDxAyAACwoAIAAQtAUQ8QMLQAAgAEEANgIUIAAgATYCGCAAQQA2AgwgAEKCoICA4AA3AgQgACABRTYCECAAQSBqQQBBKBDYAxogAEEcahDPBwsEAEIAC3sBA39BfyECAkAgAEF/Rg0AIAEoAkxBAEghBAJAAkAgASgCBCIDRQRAIAEQ4AMaIAEoAgQiA0UNAQsgAyABKAIsQQhrSw0BCyAEDQFBfw8LIAEgA0EBayICNgIEIAIgADoAACABIAEoAgBBb3E2AgAgAEH/AXEhAgsgAguWAQECfwJ/AkAgACgCTCIBQQBOBEAgAUUNAUHEkwIoAgAgAUH/////A3FHDQELIAAoAgQiASAAKAIIRwRAIAAgAUEBajYCBCABLQAADAILIAAQ4QMMAQsgAEHMAGoiAhC6BRoCfyAAKAIEIgEgACgCCEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEOEDCyEAIAIQ9QQaIAALCxkAIAAgACgCACIAQf////8DIAAbNgIAIAALOwAgACgCTBogACgCiAFFBEAgAEHwmgFB2JoBQYyUAigCACgCABs2AogBCyAAKAJIRQRAIABBATYCSAsLvwIBAn8gAUUEQEEADwsCfwJAIAJFDQAgAS0AACIEwCIDQQBOBEAgAARAIAAgBDYCAAsgA0EARw8LQYyUAigCACgCAEUEQEEBIABFDQIaIAAgA0H/vwNxNgIAQQEPCyAEQcIBayIDQTJLDQAgA0ECdEHQjAFqKAIAIQMgAkEDTQRAIAMgAkEGbEEGa3RBAEgNAQsgAS0AASIEQQN2IgJBEGsgAiADQRp1anJBB0sNACAEQYABayADQQZ0ciICQQBOBEBBAiAARQ0CGiAAIAI2AgBBAg8LIAEtAAJBgAFrIgNBP0sNACADIAJBBnQiAnIhAyACQQBOBEBBAyAARQ0CGiAAIAM2AgBBAw8LIAEtAANBgAFrIgJBP0sNAEEEIABFDQEaIAAgAiADQQZ0cjYCAEEEDwtBuJQCQRk2AgBBfwsL0wIBBX9BjJQCKAIAIQUgACgCSEEATARAIAAQuwULQYyUAiAAKAKIATYCACMAQSBrIgIkAAJAAkACQCAAIgEoAgQiACABKAIIIgNGDQAgAkEcaiAAIAMgAGsQvAUiAEF/Rg0AIAEgASgCBEEBIAAgAEEBTRtqNgIEDAELIAJCADcDEEEAIQADQCAAIQQCQCABKAIEIgAgASgCCEcEQCABIABBAWo2AgQgAiAALQAAOgAPDAELIAIgARDhAyIAOgAPIABBAE4NAEF/IQAgBEEBcUUNAyABIAEoAgBBIHI2AgBBuJQCQRk2AgAMAwtBASEAIAJBHGogAkEPakEBIAJBEGoQ6gMiA0F+Rg0AC0F/IQAgA0F/Rw0AIARBAXFFDQEgASABKAIAQSByNgIAIAItAA8gARC4BRoMAQsgAigCHCEACyACQSBqJABBjJQCIAU2AgAgAAuSAgACQCAABH8gAUH/AE0NAQJAQYyUAigCACgCAEUEQCABQYB/cUGAvwNGDQNBuJQCQRk2AgAMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAg8LIAFBgEBxQYDAA0cgAUGAsANPcUUEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQPC0G4lAJBGTYCAAtBfwVBAQsPCyAAIAE6AABBAQuUAQEDfyMAQRBrIgMkACADIAE6AA8CQAJAIAAoAhAiAgR/IAIFIAAQkAQEQEF/IQIMAwsgACgCEAsgACgCFCIERg0AIAFB/wFxIgIgACgCUEYNACAAIARBAWo2AhQgBCABOgAADAELIAAgA0EPakEBIAAoAiQRBABBAUcEQEF/IQIMAQsgAy0ADyECCyADQRBqJAAgAgsSACAARQRAQQAPCyAAIAEQvgUL+wEBA38jAEEQayIDJABBjJQCKAIAIQQgASgCSEEATARAIAEQuwULQYyUAiABKAKIATYCAAJAAkACQCAAQf8ATQRAAkAgASgCUCAARg0AIAEoAhQiAiABKAIQRg0AIAEgAkEBajYCFCACIAA6AAAMBAsgASAAEL8FIQAMAQsgASgCECABKAIUIgJBBGpLBEAgAiAAEMAFIgJBAEgNAiABIAEoAhQgAmo2AhQMAQsgA0EMaiAAEMAFIgJBAEgNASADQQxqIAIgARCRBCACSQ0BCyAAQX9HDQELIAEgASgCAEEgcjYCAEF/IQALQYyUAiAENgIAIANBEGokACAAC10BAX8jAEEQayIDJAAgABCYBCIAIAE2AiAgAEH0mwE2AgAgA0EMaiAAEN8EIANBDGoQ8QQhASADQQxqEIkGIAAgAjYCKCAAIAE2AiQgACABEPIEOgAsIANBEGokAAsvAQF/IABBBGoQxwUhAiAAQZiPATYCACACQayPATYCACAAQYyPASgCAGogARDIBQsPACAAKAJIGiAAIAE2AkgLXQEBfyMAQRBrIgMkACAAEMsEIgAgATYCICAAQcCdATYCACADQQxqIAAQ3wQgA0EMahDLBSEBIANBDGoQiQYgACACNgIoIAAgATYCJCAAIAEQ8gQ6ACwgA0EQaiQACy8BAX8gAEEEahDKBSECIABBuJABNgIAIAJBzJABNgIAIABBrJABKAIAaiABEMgFCxIAIAAQ1AUiAEHkkQE2AgAgAAsXACAAIAEQtgUgAEEANgJIIABBfzYCTAsRACAAIAAoAgRBgMAAcjYCBAsSACAAENQFIgBB+JMBNgIAIAALCwAgAEHAtQIQjgYLHgBBgKoCEKsEQdCsAhCrBEHUqgIQ0ARBpK0CENAECwoAIAAQlgQQ8QMLNAAgACABEPEEIgE2AiQgACABELQENgIsIAAgACgCJBDyBDoANSAAKAIsQQlOBEAQ+gQACwsJACAAQQAQ0AUL4gMCBX8BfiMAQSBrIgIkAAJAIAAtADRBAUYEQCAAKAIwIQMgAUUNASAAQQA6ADQgAEF/NgIwDAELAkAgAC0ANUEBRgRAIAJBGGohBCAAKAIgELkFIgNBf0cEQCAEIAM6AAALIANBf0YNASACLAAYEKMEIQMCQCABRQRAIAIsABgaIAMgACgCIBDTBUUNAwwBCyAAIAM2AjALIAIsABgQowQhAwwCCyACQQE2AhggAkEYaiAAQSxqEP8EKAIAIgRBACAEQQBKGyEFA0AgAyAFRwRAIAAoAiAQuQUiBkF/Rg0CIAJBGGogA2ogBjoAACADQQFqIQMMAQsLIAJBGGohBQJAA0ACQCAAKAIoIgMpAgAhBwJAIAAoAiQgAyACQRhqIAJBGGogBGoiBiACQRBqIAJBF2ogBSACQQxqEPkEQQFrDgMABAEDCyAAKAIoIAc3AgAgBEEIRg0DIAAoAiAQuQUiA0F/Rg0DIAYgAzoAACAEQQFqIQQMAQsLIAIgAi0AGDoAFwsCQCABRQRAA0AgBEEATA0CIARBAWsiBCACQRhqaiwAABCjBCAAKAIgELgFQX9HDQAMAwsACyAAIAIsABcQowQ2AjALIAIsABcQowQhAwwBC0F/IQMLIAJBIGokACADCwkAIABBARDQBQujAgECfyMAQSBrIgIkAAJAIAFBfxC3BARAIAAtADQNASAAIAAoAjAiAUF/ELcEQQFzOgA0DAELIAAtADQhAwJAAkACQCAALQA1RQRAIANBAXENAQwDCyADQQFxIgMEQCAAKAIwIAAoAiAQ0wUNAwwCCyADRQ0CCyACIAAoAjDAOgATAkACQCAAKAIkIAAoAiggAkETaiACQRRqIAJBDGogAkEYaiACQSBqIAJBFGoQ/QRBAWsOAwICAAELIAAoAjAhAyACIAJBGWo2AhQgAiADOgAYCwNAIAIoAhQiAyACQRhqTQ0CIAIgA0EBayIDNgIUIAMsAAAgACgCIBC4BUF/Rw0ACwtBfyEBDAELIABBAToANCAAIAE2AjALIAJBIGokACABCwwAIAAgARC4BUF/RwsNACAAQeiZATYCACAACyYAIAAgACgCACgCGBEAABogACABEPEEIgE2AiQgACABEPIEOgAsC38BBX8jAEEQayIBJAAgAUEQaiEDAkADQCAAKAIkIAAoAiggAUEIaiADIAFBBGoQgwUhBEF/IQIgAUEIakEBIAEoAgQgAUEIamsiBSAAKAIgEJIEIAVHDQECQCAEQQFrDgIBAgALC0F/QQAgACgCIBCLBBshAgsgAUEQaiQAIAILaQEBfwJAIAAtACxFBEAgAkEAIAJBAEobIQIDQCACIANGDQIgACABLAAAEKMEIAAoAgAoAjQRAwBBf0YEQCADDwUgAUEBaiEBIANBAWohAwwBCwALAAsgAUEBIAIgACgCIBCSBCECCyACC6ICAQV/IwBBIGsiAiQAAn8CQAJAIAFBfxC3BA0AIAIgAcAiBDoAFyAALQAsQQFGBEAgACgCICEDIwBBEGsiACQAIAAgBDoADyAAQQ9qQQFBASADEJIEIQQgAEEQaiQAIARBAUcNAgwBCyACIAJBGGo2AhAgAkEgaiEFIAJBGGohBiACQRdqIQMDQCAAKAIkIAAoAiggAyAGIAJBDGogAkEYaiAFIAJBEGoQ/QQhBCACKAIMIANGDQIgBEEDRgRAIANBAUEBIAAoAiAQkgRBAUYNAgwDCyAEQQFLDQIgAkEYakEBIAIoAhAgAkEYamsiAyAAKAIgEJIEIANHDQIgAigCDCEDIARBAUYNAAsLIAEQ7AQMAQtBfwshACACQSBqJAAgAAsKACAAEMkEEPEDCzQAIAAgARDLBSIBNgIkIAAgARC0BDYCLCAAIAAoAiQQ8gQ6ADUgACgCLEEJTgRAEPoEAAsLCQAgAEEAENwFC+oDAgV/AX4jAEEgayIDJAACQCAALQA0QQFGBEAgACgCMCECIAFFDQEgAEEAOgA0IABBfzYCMAwBCwJAIAAtADVBAUYEQCADQRhqIQQCfyAAKAIgIgIoAkxBAEgEQCACEL0FDAELIAIQvQULIgJBf0cEQCAEIAI2AgALIAJBf0YNASADKAIYIQICQCABRQRAIAMoAhgaIAIgACgCIBDfBUUNAwwBCyAAIAI2AjALIAMoAhghAgwCCyADQQE2AhggA0EYaiAAQSxqEP8EKAIAIgRBACAEQQBKGyEFA0AgAiAFRwRAIAAoAiAQuQUiBkF/Rg0CIANBGGogAmogBjoAACACQQFqIQIMAQsLIANBGGohBQJAA0ACQCAAKAIoIgIpAgAhBwJAIAAoAiQgAiADQRhqIANBGGogBGoiBiADQRBqIANBFGogBSADQQxqEPkEQQFrDgMABAEDCyAAKAIoIAc3AgAgBEEIRg0DIAAoAiAQuQUiAkF/Rg0DIAYgAjoAACAEQQFqIQQMAQsLIAMgAywAGDYCFAsCQCABRQRAA0AgBEEATA0CIARBAWsiBCADQRhqaiwAACAAKAIgELgFQX9HDQAMAwsACyAAIAMoAhQ2AjALIAMoAhQhAgwBC0F/IQILIANBIGokACACCwkAIABBARDcBQuiAgECfyMAQSBrIgIkAAJAIAFBfxC3BARAIAAtADQNASAAIAAoAjAiAUF/ELcEQQFzOgA0DAELIAAtADQhAwJAAkACQCAALQA1RQRAIANBAXENAQwDCyADQQFxIgMEQCAAKAIwIAAoAiAQ3wUNAwwCCyADRQ0CCyACIAAoAjA2AhACQAJAIAAoAiQgACgCKCACQRBqIAJBFGogAkEMaiACQRhqIAJBIGogAkEUahD9BEEBaw4DAgIAAQsgACgCMCEDIAIgAkEZajYCFCACIAM6ABgLA0AgAigCFCIDIAJBGGpNDQIgAiADQQFrIgM2AhQgAywAACAAKAIgELgFQX9HDQALC0F/IQEMAQsgAEEBOgA0IAAgATYCMAsgAkEgaiQAIAEL6AEBBX8jAEEQayIEJABBjJQCKAIAIQYgASgCTBogASgCSEEATARAIAEQuwULQYyUAiABKAKIATYCACABKAIERQRAIAEQ4AMaIAEoAgRFIQILQX8hAwJAIABBf0YNACACDQAgBEEMaiAAEL4FIgJBAEgNACABKAIEIgUgASgCLCACakEIa0kNAAJAIABB/wBNBEAgASAFQQFrIgM2AgQgAyAAOgAADAELIAEgBSACayIDNgIEIAMgBEEMaiACENcDGgsgASABKAIAQW9xNgIAIAAhAwtBjJQCIAY2AgAgBEEQaiQAIANBf0cLJgAgACAAKAIAKAIYEQAAGiAAIAEQywUiATYCJCAAIAEQ8gQ6ACwLZgEBfwJAIAAtACxFBEAgAkEAIAJBAEobIQIDQCACIANGDQIgACABKAIAIAAoAgAoAjQRAwBBf0YEQCADDwUgAUEEaiEBIANBAWohAwwBCwALAAsgAUEEIAIgACgCIBCSBCECCyACC5QCAQV/IwBBIGsiAiQAAn8CQAJAIAFBfxC3BA0AIAIgASIDNgIUIAAtACxBAUYEQAJ/IAAoAiAiACgCTEEASARAIAMgABDBBQwBCyADIAAQwQULQX9GDQIMAQsgAiACQRhqNgIQIAJBIGohBSACQRhqIQYgAkEUaiEEA0AgACgCJCAAKAIoIAQgBiACQQxqIAJBGGogBSACQRBqEP0EIQMgAigCDCAERg0CIANBA0YEQCAEQQFBASAAKAIgEJIEQQFGDQIMAwsgA0EBSw0CIAJBGGpBASACKAIQIAJBGGprIgQgACgCIBCSBCAERw0CIAIoAgwhBCADQQFGDQALCyABEOwEDAELQX8LIQAgAkEgaiQAIAAL2wEBCH8gACAAQT0QggQiAkYEQEEADwsCQCAAIAIgAGsiBWotAAANAEHgsAIoAgAiAkUNACACKAIAIgFFDQADQAJAAn8gACEEQQAgBSIGRQ0AGiAALQAAIgMEfwJAA0AgAyABLQAAIgdHDQEgB0UNASAGQQFrIgZFDQEgAUEBaiEBIAQtAAEhAyAEQQFqIQQgAw0AC0EAIQMLIAMFQQALIAEtAABrC0UEQCACKAIAIAVqIgEtAABBPUYNAQsgAigCBCEBIAJBBGohAiABDQEMAgsLIAFBAWohCAsgCAtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawvoAgEDfwJAIAEtAAANAEHfFxDjBSIBBEAgAS0AAA0BCyAAQQxsQaCeAWoQ4wUiAQRAIAEtAAANAQtBgBgQ4wUiAQRAIAEtAAANAQtBgiIhAQsCQANAAkAgASACai0AACIERQ0AIARBL0YNAEEXIQQgAkEBaiICQRdHDQEMAgsLIAIhBAtBgiIhAwJAAkACQAJAAkAgAS0AACICQS5GDQAgASAEai0AAA0AIAEhAyACQcMARw0BCyADLQABRQ0BCyADQYIiEOQFRQ0AIANBthYQ5AUNAQsgAEUEQEG0mgEhAiADLQABQS5GDQILQQAPC0HosAIoAgAiAgRAA0AgAyACQQhqEOQFRQ0CIAIoAiAiAg0ACwtBJBDwAyICBEAgAkG0mgEpAgA3AgAgAkEIaiIBIAMgBBDXAxogASAEakEAOgAAIAJB6LACKAIANgIgQeiwAiACNgIACyACQbSaASAAIAJyGyECCyACCycAIABBAEcgAEHYmgFHcSAAQfCaAUdxIABB7LACR3EgAEGEsQJHcQsUACAAQd8AcSAAIABB4QBrQRpJGwsTACAAQSByIAAgAEHBAGtBGkkbC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEOkFIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLlhMCEn8BfiMAQUBqIgYkACAGIAE2AjwgBkEnaiEWIAZBKGohEAJAAkACQAJAA0BBACEFA0AgASELIAUgDEH/////B3NKDQIgBSAMaiEMAkACQAJAAkAgASIFLQAAIgoEQANAAkACQCAKQf8BcSIKRQRAIAUhAQwBCyAKQSVHDQEgBSEKA0AgCi0AAUElRwRAIAohAQwCCyAFQQFqIQUgCi0AAiEHIApBAmoiASEKIAdBJUYNAAsLIAUgC2siBSAMQf////8HcyIKSg0JIAAEQCAAIAsgBRDrBQsgBQ0HIAYgATYCPCABQQFqIQVBfyEOAkAgASwAAUEwayIHQQlLDQAgAS0AAkEkRw0AIAFBA2ohBUEBIRIgByEOCyAGIAU2AjxBACEJAkAgBSwAACIRQSBrIgFBH0sEQCAFIQcMAQsgBSEHQQEgAXQiAUGJ0QRxRQ0AA0AgBiAFQQFqIgc2AjwgASAJciEJIAUsAAEiEUEgayIBQSBPDQEgByEFQQEgAXQiAUGJ0QRxDQALCwJAIBFBKkYEQAJ/AkAgBywAAUEwayIFQQlLDQAgBy0AAkEkRw0AAn8gAEUEQCAEIAVBAnRqQQo2AgBBAAwBCyADIAVBA3RqKAIACyENIAdBA2ohAUEBDAELIBINBiAHQQFqIQEgAEUEQCAGIAE2AjxBACESQQAhDQwDCyACIAIoAgAiBUEEajYCACAFKAIAIQ1BAAshEiAGIAE2AjwgDUEATg0BQQAgDWshDSAJQYDAAHIhCQwBCyAGQTxqEOwFIg1BAEgNCiAGKAI8IQELQQAhBUF/IQgCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACQTBrIgdBCUsNACABLQADQSRHDQAgAUEEaiEBAn8gAEUEQCAEIAdBAnRqQQo2AgBBAAwBCyADIAdBA3RqKAIACwwBCyASDQYgAUECaiEBQQAgAEUNABogAiACKAIAIgdBBGo2AgAgBygCAAshCCAGIAE2AjwgCEEATgwBCyAGIAFBAWo2AjwgBkE8ahDsBSEIIAYoAjwhAUEBCyETA0AgBSEHQRwhDyABIhEsAAAiBUH7AGtBRkkNCyABQQFqIQEgBSAHQTpsakGvngFqLQAAIgVBAWtBCEkNAAsgBiABNgI8AkAgBUEbRwRAIAVFDQwgDkEATgRAIABFBEAgBCAOQQJ0aiAFNgIADAwLIAYgAyAOQQN0aikDADcDMAwCCyAARQ0IIAZBMGogBSACEO0FDAELIA5BAE4NC0EAIQUgAEUNCAsgAC0AAEEgcQ0LIAlB//97cSIUIAkgCUGAwABxGyEJQQAhDkGWCSEVIBAhDwJAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgESwAACIFQVNxIAUgBUEPcUEDRhsgBSAHGyIFQdgAaw4hBBYWFhYWFhYWEBYJBhAQEBYGFhYWFgIFAxYWChYBFhYEAAsCQCAFQcEAaw4HEBYLFhAQEAALIAVB0wBGDQsMFQsgBikDMCEXQZYJDAULQQAhBQJAAkACQAJAAkACQAJAIAdB/wFxDggAAQIDBBwFBhwLIAYoAjAgDDYCAAwbCyAGKAIwIAw2AgAMGgsgBigCMCAMrDcDAAwZCyAGKAIwIAw7AQAMGAsgBigCMCAMOgAADBcLIAYoAjAgDDYCAAwWCyAGKAIwIAysNwMADBULQQggCCAIQQhNGyEIIAlBCHIhCUH4ACEFCyAQIQEgBUEgcSELIAYpAzAiF0IAUgRAA0AgAUEBayIBIBenQQ9xQcCiAWotAAAgC3I6AAAgF0IPViEHIBdCBIghFyAHDQALCyABIQsgBikDMFANAyAJQQhxRQ0DIAVBBHZBlglqIRVBAiEODAMLIBAhASAGKQMwIhdCAFIEQANAIAFBAWsiASAXp0EHcUEwcjoAACAXQgdWIQUgF0IDiCEXIAUNAAsLIAEhCyAJQQhxRQ0CIAggECABayIFQQFqIAUgCEgbIQgMAgsgBikDMCIXQgBTBEAgBkIAIBd9Ihc3AzBBASEOQZYJDAELIAlBgBBxBEBBASEOQZcJDAELQZgJQZYJIAlBAXEiDhsLIRUgFyAQEO4FIQsLIBMgCEEASHENESAJQf//e3EgCSATGyEJAkAgBikDMCIXQgBSDQAgCA0AIBAhC0EAIQgMDgsgCCAXUCAQIAtraiIFIAUgCEgbIQgMDQsgBikDMCEXDAsLIAYoAjAiBUHeIiAFGyILIgFBAEH/////ByAIIAhB/////wdPGyIFEOwDIgcgAWsgBSAHGyIFIAtqIQ8gCEEATgRAIBQhCSAFIQgMDAsgFCEJIAUhCCAPLQAADQ8MCwsgBikDMCIXQgBSDQFCACEXDAkLIAgEQCAGKAIwDAILQQAhBSAAQSAgDUEAIAkQ7wUMAgsgBkEANgIMIAYgFz4CCCAGIAZBCGo2AjBBfyEIIAZBCGoLIQpBACEFA0ACQCAKKAIAIgdFDQAgBkEEaiAHEMAFIgdBAEgNDyAHIAggBWtLDQAgCkEEaiEKIAUgB2oiBSAISQ0BCwtBPSEPIAVBAEgNDCAAQSAgDSAFIAkQ7wUgBUUEQEEAIQUMAQtBACEHIAYoAjAhCgNAIAooAgAiC0UNASAGQQRqIAsQwAUiCyAHaiIHIAVLDQEgACAGQQRqIAsQ6wUgCkEEaiEKIAUgB0sNAAsLIABBICANIAUgCUGAwABzEO8FIA0gBSAFIA1IGyEFDAgLIBMgCEEASHENCUE9IQ8gACAGKwMwIA0gCCAJIAUQ8QUiBUEATg0HDAoLIAUtAAEhCiAFQQFqIQUMAAsACyAADQkgEkUNA0EBIQUDQCAEIAVBAnRqKAIAIgoEQCADIAVBA3RqIAogAhDtBUEBIQwgBUEBaiIFQQpHDQEMCwsLIAVBCk8EQEEBIQwMCgsDQCAEIAVBAnRqKAIADQFBASEMIAVBAWoiBUEKRw0ACwwJC0EcIQ8MBgsgBiAXPAAnQQEhCCAWIQsgFCEJCyAIIA8gC2siASABIAhIGyIRIA5B/////wdzSg0DQT0hDyANIA4gEWoiByAHIA1IGyIFIApKDQQgAEEgIAUgByAJEO8FIAAgFSAOEOsFIABBMCAFIAcgCUGAgARzEO8FIABBMCARIAFBABDvBSAAIAsgARDrBSAAQSAgBSAHIAlBgMAAcxDvBSAGKAI8IQEMAQsLC0EAIQwMAwtBPSEPC0G4lAIgDzYCAAtBfyEMCyAGQUBrJAAgDAsYACAALQAAQSBxRQRAIAEgAiAAEJEEGgsLcwEFfyAAKAIAIgMsAABBMGsiAkEJSwRAQQAPCwNAQX8hBCABQcyZs+YATQRAQX8gAiABQQpsIgFqIAIgAUH/////B3NLGyEECyAAIANBAWoiAjYCACADLAABIQUgBCEBIAIhAyAFQTBrIgJBCkkNAAsgAQu0BAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIAAQIFAwQGBwgJCgsMDQ4PEBESCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIQ8gULC4gBAgN/AX4CQCAAQoCAgIAQVARAIAAhBQwBCwNAIAFBAWsiASAAIABCCoAiBUIKfn2nQTByOgAAIABC/////58BViECIAUhACACDQALCyAFQgBSBEAgBachAgNAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC24BAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgASACIANrIgNBgAIgA0GAAkkiAhsQ2AMaIAJFBEADQCAAIAVBgAIQ6wUgA0GAAmsiA0H/AUsNAAsLIAAgBSADEOsFCyAFQYACaiQAC8UCAQR/IwBB0AFrIgMkACADIAI2AswBIANBoAFqQQBBKBDYAxogAyADKALMATYCyAECQEEAIAEgA0HIAWogA0HQAGogA0GgAWoQ6gVBAEgEQEF/IQEMAQsgACgCTEEASCEFIAAgACgCACIGQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBCAAIAM2AiwMAQsgACgCEA0BC0F/IAAQkAQNARoLIAAgASADQcgBaiADQdAAaiADQaABahDqBQshAiAGQSBxIQEgBARAIABBAEEAIAAoAiQRBAAaIABBADYCMCAAIAQ2AiwgAEEANgIcIAAoAhQhBCAAQgA3AxAgAkF/IAQbIQILIAAgACgCACIEIAFyNgIAQX8gAiAEQSBxGyEBIAUNAAsgA0HQAWokACABC6sYAxJ/AXwDfiMAQbAEayIMJAAgDEEANgIsAkAgAb0iGUIAUwRAQQEhEUGgCSETIAGaIgG9IRkMAQsgBEGAEHEEQEEBIRFBowkhEwwBC0GmCUGhCSAEQQFxIhEbIRMgEUUhFwsCQCAZQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEEgIAIgEUEDaiIGIARB//97cRDvBSAAIBMgERDrBSAAQZ4QQY0XIAVBIHEiBxtBnhJBjhggBxsgASABYhtBAxDrBSAAQSAgAiAGIARBgMAAcxDvBSAGIAIgAiAGSBshCQwBCyAMQRBqIRICQAJ/AkAgASAMQSxqEOkFIgEgAaAiAUQAAAAAAAAAAGIEQCAMIAwoAiwiBkEBazYCLCAFQSByIhVB4QBHDQEMAwsgBUEgciIVQeEARg0CIAwoAiwhFEEGIAMgA0EASBsMAQsgDCAGQR1rIhQ2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQsgDEEwakGgAkEAIBRBAE4baiIPIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiBjYCACAHQQRqIQcgASAGuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgFEEATARAIBQhAyAHIQYgDyEIDAELIA8hCCAUIQMDQEEdIAMgA0EdTxshAwJAIAdBBGsiBiAISQ0AIAOtIRtCACEZA0AgBiAZQv////8PgyAGNQIAIBuGfCIaIBpCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGkKAlOvcA1QNACAIQQRrIgggGT4CAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyAMIAwoAiwgA2siAzYCLCAGIQcgA0EASg0ACwsgA0EASARAIAtBGWpBCW5BAWohECAVQeYARiEWA0BBCUEAIANrIgcgB0EJTxshCgJAIAYgCE0EQCAIKAIARUECdCEHDAELQYCU69wDIAp2IQ1BfyAKdEF/cyEOQQAhAyAIIQcDQCAHIAcoAgAiCSAKdiADajYCACAJIA5xIA1sIQMgB0EEaiIHIAZJDQALIAgoAgBFQQJ0IQcgA0UNACAGIAM2AgAgBkEEaiEGCyAMIAwoAiwgCmoiAzYCLCAPIAcgCGoiCCAWGyIHIBBBAnRqIAYgBiAHa0ECdSAQShshBiADQQBIDQALC0EAIQMCQCAGIAhNDQAgDyAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIAsgA0EAIBVB5gBHG2sgFUHnAEYgC0EAR3FrIgcgBiAPa0ECdUEJbEEJa0gEQCAMQTBqQYRgQaRiIBRBAEgbaiAHQYDIAGoiCUEJbSINQQJ0aiEKQQohByAJIA1BCWxrIglBB0wEQANAIAdBCmwhByAJQQFqIglBCEcNAAsLAkAgCigCACIJIAkgB24iECAHbGsiDUUgCkEEaiIOIAZGcQ0AAkAgEEEBcUUEQEQAAAAAAABAQyEBIAdBgJTr3ANHDQEgCCAKTw0BIApBBGstAABBAXFFDQELRAEAAAAAAEBDIQELRAAAAAAAAOA/RAAAAAAAAPA/RAAAAAAAAPg/IAYgDkYbRAAAAAAAAPg/IA0gB0EBdiIORhsgDSAOSRshGAJAIBcNACATLQAAQS1HDQAgGJohGCABmiEBCyAKIAkgDWsiCTYCACABIBigIAFhDQAgCiAHIAlqIgc2AgAgB0GAlOvcA08EQANAIApBADYCACAIIApBBGsiCksEQCAIQQRrIghBADYCAAsgCiAKKAIAQQFqIgc2AgAgB0H/k+vcA0sNAAsLIA8gCGtBAnVBCWwhA0EKIQcgCCgCACIJQQpJDQADQCADQQFqIQMgCSAHQQpsIgdPDQALCyAKQQRqIgcgBiAGIAdLGyEGCwNAIAYiByAITSIJRQRAIAZBBGsiBigCAEUNAQsLAkAgFUHnAEcEQCAEQQhxIQoMAQsgA0F/c0F/IAtBASALGyIGIANKIANBe0pxIgobIAZqIQtBf0F+IAobIAVqIQUgBEEIcSIKDQBBdyEGAkAgCQ0AIAdBBGsoAgAiCkUNAEEKIQlBACEGIApBCnANAANAIAYiDUEBaiEGIAogCUEKbCIJcEUNAAsgDUF/cyEGCyAHIA9rQQJ1QQlsIQkgBUFfcUHGAEYEQEEAIQogCyAGIAlqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsMAQtBACEKIAsgAyAJaiAGakEJayIGQQAgBkEAShsiBiAGIAtKGyELC0F/IQkgC0H9////B0H+////ByAKIAtyIg0bSg0BIAsgDUEAR2pBAWohDgJAIAVBX3EiFkHGAEYEQCADIA5B/////wdzSg0DIANBACADQQBKGyEGDAELIBIgAyADQR91IgZzIAZrrSASEO4FIgZrQQFMBEADQCAGQQFrIgZBMDoAACASIAZrQQJIDQALCyAGQQJrIhAgBToAACAGQQFrQS1BKyADQQBIGzoAACASIBBrIgYgDkH/////B3NKDQILIAYgDmoiBiARQf////8Hc0oNASAAQSAgAiAGIBFqIg4gBBDvBSAAIBMgERDrBSAAQTAgAiAOIARBgIAEcxDvBQJAAkACQCAWQcYARgRAIAxBEGpBCXIhAyAPIAggCCAPSxsiCSEIA0AgCDUCACADEO4FIQYCQCAIIAlHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyADIAZHDQAgBkEBayIGQTA6AAALIAAgBiADIAZrEOsFIAhBBGoiCCAPTQ0ACyANBEAgAEGVIkEBEOsFCyAHIAhNDQEgC0EATA0BA0AgCDUCACADEO4FIgYgDEEQaksEQANAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsLIAAgBkEJIAsgC0EJThsQ6wUgC0EJayEGIAhBBGoiCCAHTw0DIAtBCUohCSAGIQsgCQ0ACwwCCwJAIAtBAEgNACAHIAhBBGogByAISxshDSAMQRBqQQlyIQMgCCEHA0AgAyAHNQIAIAMQ7gUiBkYEQCAGQQFrIgZBMDoAAAsCQCAHIAhHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAAIAZBARDrBSAGQQFqIQYgCiALckUNACAAQZUiQQEQ6wULIAAgBiADIAZrIgkgCyAJIAtIGxDrBSALIAlrIQsgB0EEaiIHIA1PDQEgC0EATg0ACwsgAEEwIAtBEmpBEkEAEO8FIAAgECASIBBrEOsFDAILIAshBgsgAEEwIAZBCWpBCUEAEO8FCyAAQSAgAiAOIARBgMAAcxDvBSAOIAIgAiAOSBshCQwBCyATIAVBGnRBH3VBCXFqIQ4CQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRgDQCAYRAAAAAAAADBAoiEYIAZBAWsiBg0ACyAOLQAAQS1GBEAgGCABmiAYoaCaIQEMAQsgASAYoCAYoSEBCyASIAwoAiwiBiAGQR91IgZzIAZrrSASEO4FIgZGBEAgBkEBayIGQTA6AAALIBFBAnIhCiAFQSBxIQggDCgCLCEHIAZBAmsiDSAFQQ9qOgAAIAZBAWtBLUErIAdBAEgbOgAAIARBCHEhCSAMQRBqIQcDQCAHIgYCfyABmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAsiB0HAogFqLQAAIAhyOgAAIAEgB7ehRAAAAAAAADBAoiEBAkAgBkEBaiIHIAxBEGprQQFHDQACQCAJDQAgA0EASg0AIAFEAAAAAAAAAABhDQELIAZBLjoAASAGQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hCUH9////ByAKIBIgDWsiCGoiEGsgA0gNACAAQSAgAiAQIANBAmogByAMQRBqayIGIAZBAmsgA0gbIAYgAxsiA2oiByAEEO8FIAAgDiAKEOsFIABBMCACIAcgBEGAgARzEO8FIAAgDEEQaiAGEOsFIABBMCADIAZrQQBBABDvBSAAIA0gCBDrBSAAQSAgAiAHIARBgMAAcxDvBSAHIAIgAiAHSBshCQsgDEGwBGokACAJCykAIAEgASgCAEEHakF4cSIBQRBqNgIAIAAgASkDACABKQMIEIAEOQMAC4gBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZABENgDIgRBfzYCTCAEQYYFNgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEPAFIQEgBEGgAWokACABC6oBAQV/IAAoAlQiAygCACEFIAMoAgQiBCAAKAIUIAAoAhwiB2siBiAEIAZJGyIGBEAgBSAHIAYQ1wMaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEENcDGiADIAMoAgAgBGoiBTYCACADIAMoAgQgBGs2AgQLIAVBADoAACAAIAAoAiwiAzYCHCAAIAM2AhQgAgsXACAAQTBrQQpJIABBIHJB4QBrQQZJcgsKACAAQTBrQQpJCysBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACEPMFIQIgA0EQaiQAIAILwgEBAn8gAEEORgRAQYQiQfoXIAEoAgAbDwsgAEEQdSEDAkAgAEH//wNxIgJB//8DRw0AIANBBUoNACABIANBAnRqKAIAIgBBCGpBwRggABsPC0GxLCEAAkACfwJAAkACQCADQQFrDgUAAQQEAgQLIAJBAUsNA0GAowEMAgsgAkExSw0CQZCjAQwBCyACQQNLDQFB0KUBCyEAIAJFBEAgAA8LA0AgAC0AACEBIABBAWohACABDQAgAkEBayICDQALCyAAC58EAgd/BH4jAEEQayIIJAACQAJAAkAgAkEkTARAIAAtAAAiBQ0BIAAhBAwCC0G4lAJBHDYCAEIAIQMMAgsgACEEAkADQCAFwBDoA0UNASAELQABIQUgBEEBaiEEIAUNAAsMAQsCQCAFQf8BcSIFQStrDgMAAQABC0F/QQAgBUEtRhshByAEQQFqIQQLAn8CQCACQRByQRBHDQAgBC0AAEEwRw0AQQEhCSAELQABQd8BcUHYAEYEQCAEQQJqIQRBEAwCCyAEQQFqIQQgAkEIIAIbDAELIAJBCiACGwsiCq0hC0EAIQIDQAJAAkAgBC0AACIGQTBrIgVB/wFxQQpJDQAgBkHhAGtB/wFxQRlNBEAgBkHXAGshBQwBCyAGQcEAa0H/AXFBGUsNASAGQTdrIQULIAogBUH/AXFMDQAgCCALQgAgDEIAEP4DQQEhBgJAIAgpAwhCAFINACALIAx+Ig0gBa1C/wGDIg5Cf4VWDQAgDSAOfCEMQQEhCSACIQYLIARBAWohBCAGIQIMAQsLIAEEQCABIAQgACAJGzYCAAsCQAJAIAIEQEG4lAJBxAA2AgAgB0EAIANCAYMiC1AbIQcgAyEMDAELIAMgDFYNASADQgGDIQsLAkAgC6cNACAHDQBBuJQCQcQANgIAIANCAX0hAwwCCyADIAxaDQBBuJQCQcQANgIADAELIAwgB6wiC4UgC30hAwsgCEEQaiQAIAMLngEBA39BNSEBAkAgACgCHCICIAAoAhgiA0EGakEHcGtBB2pBB24gAyACayIDQfECakEHcEEDSWoiAkE1RwRAIAIhASACDQFBNCEBAkACQCADQQZqQQdwQQRrDgIBAAMLIAAoAhRBkANvQQFrEPwFRQ0CC0E1DwsCQAJAIANB8wJqQQdwQQNrDgIAAgELIAAoAhQQ/AUNAQtBASEBCyABC9MTAhF/BH4jAEGAAWsiCiQAAkACQCABRQ0AAn8CQANAAn8gAi0AACIHQSVHBEAgCSAHRQ0EGiAAIAlqIAc6AAAgCUEBagwBC0EAIQVBASEIAkACQAJAIAItAAEiB0Etaw4EAQICAQALIAdB3wBHDQELIAchBSACLQACIQdBAiEIC0EAIQ8CQAJ/IAIgCGogB0H/AXEiFUErRmoiBiwAAEEwa0EJTQRAIAYgCkEMakEKQv////8PEPkFpyECIAooAgwMAQsgCiAGNgIMQQAhAiAGCyIILQAAIgdBwwBrIhBBFksNAEEBIBB0QZmAgAJxRQ0AIAIhDyACDQAgBiAIRyEPCwJ/AkAgB0HPAEYNACAHQcUARg0AIAgMAQsgCC0AASEHIAhBAWoLIQIgCkEQaiEIIAMhBiAFIRBBACEFIwBB0ABrIgskAEGICSEMQTAhE0GogAghDQJAIApB/ABqIg4CfwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACfgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgB8AiB0Elaw5WIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQEDBCctBwgJCi0tLQ0tLS0tEBIUFhgXHB4gLS0tLS0tAAImBgUtCAItCy0tDA4tDy0lERMVLRkbHR8tCyAGKAIYIgVBBk0NIgwqCyAGKAIYIgVBBksNKSAFQYeACGoMIgsgBigCECIFQQtLDSggBUGOgAhqDCELIAYoAhAiBUELSw0nIAVBmoAIagwgCyAGNAIUQuwOfELkAH8hFgwjC0HfACETCyAGNAIMIRYMIQtB/RQhDAwfCyAGNAIUIhdC7A58IRYCQCAGKAIcIgVBAkwEQCAWIBdC6w58IAYQ+gVBAUYbIRYMAQsgBUHpAkkNACAXQu0OfCAWIAYQ+gVBAUYbIRYLIAdB5wBGDRkMIAsgBjQCCCEWDB4LQQIhBSAGKAIIIgZFBEBCDCEWDCALIAasIhZCDH0gFiAGQQxKGyEWDB8LIAYoAhxBAWqsIRZBAyEFDB4LIAYoAhBBAWqsIRYMGwsgBjQCBCEWDBoLIA5BATYCAEGuLCEFDB4LQaeACEGmgAggBigCCEELShsMFAtBlxchDAwWC0EAIRFBACEUIwBBEGsiEiQAIAY0AhQhFgJ+IBJBDGohDSAGKAIQIgxBDE8EQCAMIAxBDG0iB0EMbGsiBUEMaiAFIAVBAEgbIQwgByAFQR91aqwgFnwhFgsgFkICfUKIAVgEQCAWpyIFQcQAa0ECdSEHAkAgDQJ/IAVBA3FFBEAgB0EBayEHIA1FDQJBAQwBCyANRQ0BQQALNgIACyAFQYDnhA9sIAdBgKMFbGpBgNav4wdqrAwBCyAWQuQAfSIWIBZCkAN/IhhCkAN+fSIXQj+HpyAYp2ohBwJAAkACQCAXpyIFQZADaiAFIBdCAFMbIgUEfwJ/IAVByAFOBEAgBUGsAk8EQEEDIREgBUGsAmsMAgtBAiERIAVByAFrDAELIAVB5ABrIAUgBUHjAEoiERsLIgUNAUEABUEBCyEFIA0NAQwCCyAFQQJ2IRQgBUEDcUUhBSANRQ0BCyANIAU2AgALIBZCgOeED34gFCARQRhsIAdB4QBsamogBWusQoCjBX58QoCqusMDfAshFiAMQQJ0QdCiAWooAgAiBUGAowVqIAUgEigCDBsgBSAMQQFKGyEMIAYoAgwhBSAGNAIIIRcgBjQCBCEYIAY0AgAhGSASQRBqJAAgGSAWIAysfCAFQQFrrEKAowV+fCAXQpAcfnwgGEI8fnx8IAY0AiR9DAgLIAY0AgAhFgwVCyAOQQE2AgBBsCwhBQwZC0HlFiEMDBILIAYoAhgiBUEHIAUbrAwECyAGKAIcIAYoAhhrQQdqQQdurSEWDBELIAYoAhwgBigCGEEGakEHcGtBB2pBB26tIRYMEAsgBhD6Ba0hFgwPCyAGNAIYCyEWQQEhBQwPC0GpgAghDQwKC0GqgAghDQwJCyAGNAIUQuwOfELkAIEiFiAWQj+HIhaFIBZ9IRYMCgsgBjQCFCIXQuwOfCEWIBdCpD9TDQogCyAWNwMwIA4gCEHMFCALQTBqEPcFNgIAIAghBQwOCyAGKAIgQQBIBEAgDkEANgIAQbEsIQUMDgsgCyAGKAIkIgVBkBxtIgZB5ABsIAUgBkGQHGxrwUE8bcFqNgJAIA4gCEHSFCALQUBrEPcFNgIAIAghBQwNCyAGKAIgQQBIBEAgDkEANgIAQbEsIQUMDQsgBigCKCEGQcyxAi0AAEEBcUUEQEHMsQItAABBAXFFBEBBoLECQaSxAkHQsQJB8LECEBtBrLECQfCxAjYCAEGosQJB0LECNgIAQcyxAkEBOgAACwsgBgwLCyAOQQE2AgBBmSMhBQwLCyAWQuQAgSEWDAULIAVBgIAIcgsgBBD4BQwHC0GrgAghDQsgDSAEEPgFIQwLIA4gCEHkACAMIAYgBBD7BSIFNgIAIAhBACAFGyEFDAULQQIhBQwBC0EEIQULAkAgECATIBAbIgZB3wBHBEAgBkEtRw0BIAsgFjcDECAOIAhBzRQgC0EQahD3BTYCACAIIQUMBAsgCyAWNwMoIAsgBTYCICAOIAhBxhQgC0EgahD3BTYCACAIIQUMAwsgCyAWNwMIIAsgBTYCACAOIAhBvxQgCxD3BTYCACAIIQUMAgtBlyILIgUQ3QM2AgALIAtB0ABqJAAgBSIGRQ0CAkAgD0UEQCAKKAJ8IQUMAQsCfwJAAkAgBi0AACIHQStrDgMBAAEACyAKKAJ8DAELIAYtAAEhByAGQQFqIQYgCigCfEEBawshBQJAIAdB/wFxQTBHDQADQCAGLAABIgdBMGtBCUsNASAGQQFqIQYgBUEBayEFIAdBMEYNAAsLIAogBTYCfEEAIQcDQCAHIghBAWohByAGIAhqLAAAQTBrQQpJDQALIA8gBSAFIA9JGyEHAkAgACAJaiADKAIUQZRxSAR/QS0FIBVBK0cNASAHIAVrIAhqQQNBBSAKKAIMLQAAQcMARhtJDQFBKws6AAAgB0EBayEHIAlBAWohCQsgBSAHTw0AIAEgCU0NAANAIAAgCWpBMDoAACAJQQFqIQkgB0EBayIHIAVNDQEgASAJSw0ACwsgCiAFIAEgCWsiByAFIAdJGyIHNgJ8IAAgCWogBiAHENcDGiAKKAJ8IAlqCyEJIAJBAWohAiABIAlLDQALIAFFDQILIAFBAWsgCSABIAlGGyEJQQALIQcgACAJakEAOgAADAELQQAhBwsgCkGAAWokACAHCzgAIABB0A9rIAAgAEGT8f//B0obIgBBA3EEQEEADwsgAEHsDmoiAEHkAG8EQEEBDwsgAEGQA29FCw8AIAAQ5gUEQCAAEPEDCwu3CAEGfyABKAIAIQQCQAJAAkACQAJAAkACQAJ/AkACQAJAAkAgA0UNACADKAIAIgZFDQAgAEUEQCACIQMMAwsgA0EANgIAIAIhAwwBCwJAQYyUAigCACgCAEUEQCAARQ0BIAJFDQwgAiEGA0AgBCwAACIDBEAgACADQf+/A3E2AgAgAEEEaiEAIARBAWohBCAGQQFrIgYNAQwOCwsgAEEANgIAIAFBADYCACACIAZrDwsgAiEDIABFDQMMBQsgBBDdAw8LQQEhBQwDC0EADAELQQELIQUDQCAFRQRAIAQtAABBA3YiBUEQayAGQRp1IAVqckEHSw0DAn8gBEEBaiIFIAZBgICAEHFFDQAaIAUtAABBwAFxQYABRwRAIARBAWshBAwHCyAEQQJqIgUgBkGAgCBxRQ0AGiAFLQAAQcABcUGAAUcEQCAEQQFrIQQMBwsgBEEDagshBCADQQFrIQNBASEFDAELA0AgBC0AACEGAkAgBEEDcQ0AIAZBAWtB/gBLDQAgBCgCACIGQYGChAhrIAZyQYCBgoR4cQ0AA0AgA0EEayEDIAQoAgQhBiAEQQRqIQQgBiAGQYGChAhrckGAgYKEeHFFDQALCyAGQf8BcSIFQQFrQf4ATQRAIANBAWshAyAEQQFqIQQMAQsLIAVBwgFrIgVBMksNAyAEQQFqIQQgBUECdEHQjAFqKAIAIQZBACEFDAALAAsDQCAFRQRAIANFDQcDQAJAAkACQCAELQAAIgVBAWsiB0H+AEsEQCAFIQYMAQsgA0EFSQ0BIARBA3ENAQJAA0AgBCgCACIGQYGChAhrIAZyQYCBgoR4cQ0BIAAgBkH/AXE2AgAgACAELQABNgIEIAAgBC0AAjYCCCAAIAQtAAM2AgwgAEEQaiEAIARBBGohBCADQQRrIgNBBEsNAAsgBC0AACEGCyAGQf8BcSIFQQFrIQcLIAdB/gBLDQELIAAgBTYCACAAQQRqIQAgBEEBaiEEIANBAWsiAw0BDAkLCyAFQcIBayIFQTJLDQMgBEEBaiEEIAVBAnRB0IwBaigCACEGQQEhBQwBCyAELQAAIgdBA3YiBUEQayAFIAZBGnVqckEHSw0BAkACQAJ/IARBAWoiCCAHQYABayAGQQZ0ciIFQQBODQAaIAgtAABBgAFrIgdBP0sNASAHIAVBBnQiCXIhBSAEQQJqIgggCUEATg0AGiAILQAAQYABayIHQT9LDQEgByAFQQZ0ciEFIARBA2oLIQQgACAFNgIAIANBAWshAyAAQQRqIQAMAQtBuJQCQRk2AgAgBEEBayEEDAULQQAhBQwACwALIARBAWshBCAGDQEgBC0AACEGCyAGQf8BcQ0AIAAEQCAAQQA2AgAgAUEANgIACyACIANrDwtBuJQCQRk2AgAgAEUNAQsgASAENgIAC0F/DwsgASAENgIAIAILMQEBf0GMlAIoAgAhASAABEBBjJQCQZSTAiAAIABBf0YbNgIAC0F/IAEgAUGUkwJGGwuAAQIBfwJ+IwBBoAFrIgQkACAEIAE2AjwgBCABNgIUIARBfzYCGCAEQRBqQgAQ4gMgBCAEQRBqIANBARDnAyAEKQMIIQUgBCkDACEGIAIEQCACIAQoAogBIAEgBCgCFCAEKAI8a2pqNgIACyAAIAU3AwggACAGNwMAIARBoAFqJAALXgEDfyABIAQgA2tqIQUCQANAIAMgBEcEQEF/IQAgASACRg0CIAEsAAAiBiADLAAAIgdIDQIgBiAHSgRAQQEPBSADQQFqIQMgAUEBaiEBDAILAAsLIAIgBUchAAsgAAsbACMAQRBrIgEkACAAIAIgAxDmBCABQRBqJAALQAEBf0EAIQADfyABIAJGBH8gAAUgASwAACAAQQR0aiIAQYCAgIB/cSIDQRh2IANyIABzIQAgAUEBaiEBDAELCwtUAQJ/AkADQCADIARHBEBBfyEAIAEgAkYNAiABKAIAIgUgAygCACIGSA0CIAUgBkoEQEEBDwUgA0EEaiEDIAFBBGohAQwCCwALCyABIAJHIQALIAALGwAjAEEQayIBJAAgACACIAMQhgYgAUEQaiQAC7ABAQN/AkAgASACEKoHIQQjAEEQayIDJAAgBEH3////A00EQAJAIAQQqAgEQCAAIAQQnAUgACEFDAELIANBCGogBBCpCEEBahCqCCADKAIMGiAAIAMoAggiBRClBSAAIAMoAgwQpgUgACAEEKcFCwNAIAEgAkcEQCAFIAEQqAcgBUEEaiEFIAFBBGohAQwBCwsgA0EANgIEIAUgA0EEahCoByADQRBqJAAMAQsQqAUACwtAAQF/QQAhAAN/IAEgAkYEfyAABSABKAIAIABBBHRqIgBBgICAgH9xIgNBGHYgA3IgAHMhACABQQRqIQEMAQsLC/IBAQF/IwBBIGsiBiQAIAYgATYCHAJAIAMoAgRBAXFFBEAgBkF/NgIAIAAgASACIAMgBCAGIAAoAgAoAhARCQAhAQJAAkACQCAGKAIADgIAAQILIAVBADoAAAwDCyAFQQE6AAAMAgsgBUEBOgAAIARBBDYCAAwBCyAGIAMQsgUgBhCsBCEBIAYQiQYgBiADELIFIAYQigYhAyAGEIkGIAYgAxCLBiAGQQxyIAMQjAYgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQjQYgBkY6AAAgBigCHCEBA0AgA0EMaxDICCIDIAZHDQALCyAGQSBqJAAgAQsWACAAKAIAIgBB+LMCRwRAIAAQyAcLCwsAIABB6LUCEI4GCxEAIAAgASABKAIAKAIYEQIACxEAIAAgASABKAIAKAIcEQIAC6cEAQt/IwBBgAFrIggkACAIIAE2AnwgAiADEI8GIQkgCEGHBTYCECAIQQhqQQAgCEEQahD0BCERIAhBEGohCgJAAkACQCAJQeUATwRAIAkQ8AMiCkUNASARIAoQkAYLIAohByACIQEDQCABIANGBEADQCAAIAhB/ABqEK4EQQEgCRsEQCAAIAhB/ABqEK4EBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAKLQAAQQJGDQcgCkEBaiEKIAJBDGohAgwACwALIAAQrwQhDiAGRQRAIAQgDhCRBiEOCyANQQFqIQ9BACEQIAohByACIQEDQCABIANGBEAgDyENIBBFDQIgABCxBBogCiEHIAIhASAJIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARDnBCAPRg0AIAdBADoAACALQQFrIQsLIAdBAWohByABQQxqIQEMAQsACwAFAkAgBy0AAEEBRw0AIAEgDRCSBiwAACEMAkAgBgR/IAwFIAQgDBCRBgsgDkYEQEEBIRAgARDnBCAPRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAJQQFrIQkLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARCTBiIMGzoAACAHQQFqIQcgAUEMaiEBIAsgDGohCyAJIAxrIQkMAQsACwALEPoEAAsgBSAFKAIAQQRyNgIACyAREJQGIAhBgAFqJAAgAgsoACAAKAIAIgAgARDEByIBEMwHRQRAEPoEAAsgAEEIaiABEMYHKAIACwoAIAEgAGtBDG0LJAEBfyAAKAIAIQIgACABNgIAIAIEQCACIAAQsAUoAgARAQALCxEAIAAgASAAKAIAKAIMEQMACwoAIAAQ4AQgAWoLCAAgABDnBEULCQAgAEEAEJAGC6UDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxCWBiEBIABBxAFqIAMgAEH3AWoQlwYgAEG4AWoQ2QQiAyADEOgEEOkEIAAgA0EAEJIGIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqEK4EDQAgACgCtAEgAxDnBCACakYEQCADEOcEIQYgAyADEOcEQQF0EOkEIAMgAxDoBBDpBCAAIAYgA0EAEJIGIgJqNgK0AQsgAEH8AWoQrwQgASACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQYC+ARCYBg0AIABB/AFqELEEGgwBCwsCQCAAQcQBahDnBEUNACAAKAIMIgYgAEEQamtBnwFKDQAgACAGQQRqNgIMIAYgACgCCDYCAAsgBSACIAAoArQBIAQgARCZBjYCACAAQcQBaiAAQRBqIAAoAgwgBBCaBiAAQfwBaiAAQfgBahCuBARAIAQgBCgCAEECcjYCAAsgACgC/AEhAiADEMgIGiAAQcQBahDICBogAEGAAmokACACCy4AAkAgACgCBEHKAHEiAARAIABBwABGBEBBCA8LIABBCEcNAUEQDwtBAA8LQQoLPwEBfyMAQRBrIgMkACADQQxqIAEQsgUgAiADQQxqEIoGIgEQxwY6AAAgACABEMgGIANBDGoQiQYgA0EQaiQAC/QCAQN/IwBBEGsiCiQAIAogADoADwJAAkACQCADKAIAIgsgAkcNACAAQf8BcSIMIAktABhGBH9BKwUgCS0AGSAMRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCwJAIAYQ5wRFDQAgACAFRw0AQQAhACAIKAIAIgkgB2tBnwFKDQIgBCgCACEAIAggCUEEajYCACAJIAA2AgAMAQtBfyEAIAkgCUEaaiAKQQ9qEK8GIAlrIglBF0oNAQJAAkACQCABQQhrDgMAAgABCyABIAlKDQEMAwsgAUEQRw0AIAlBFkgNACADKAIAIgYgAkYNAiAGIAJrQQJKDQIgBkEBay0AAEEwRw0CQQAhACAEQQA2AgAgAyAGQQFqNgIAIAYgCUGAvgFqLQAAOgAADAILIAMgAygCACIAQQFqNgIAIAAgCUGAvgFqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQAMAQtBACEAIARBADYCAAsgCkEQaiQAIAAL0gECAn8BfiMAQRBrIgQkAAJ/AkACQAJAIAAgAUcEQEG4lAIoAgAhBUG4lAJBADYCABCtBhogACAEQQxqIAMQwgghBgJAQbiUAigCACIABEAgBCgCDCABRw0BIABBxABGDQUMBAtBuJQCIAU2AgAgBCgCDCABRg0DCyACQQQ2AgAMAQsgAkEENgIAC0EADAILIAZCgICAgHhTDQAgBkL/////B1UNACAGpwwBCyACQQQ2AgBB/////wcgBkIAVQ0AGkGAgICAeAshASAEQRBqJAAgAQusAQECfyAAEOcEIQQCQCACIAFrQQVIDQAgBEUNACABIAIQ7wYgAkEEayEEIAAQ4AQiAiAAEOcEaiEFAkADQAJAIAIsAAAhACABIARPDQACQCAAQQBMDQAgAEH/AE4NACABKAIAIAIsAABHDQMLIAFBBGohASACIAUgAmtBAUpqIQIMAQsLIABBAEwNASAAQf8ATg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwulAwEBfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQlgYhASAAQcQBaiADIABB9wFqEJcGIABBuAFqENkEIgMgAxDoBBDpBCAAIANBABCSBiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahCuBA0AIAAoArQBIAMQ5wQgAmpGBEAgAxDnBCEGIAMgAxDnBEEBdBDpBCADIAMQ6AQQ6QQgACAGIANBABCSBiICajYCtAELIABB/AFqEK8EIAEgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakGAvgEQmAYNACAAQfwBahCxBBoMAQsLAkAgAEHEAWoQ5wRFDQAgACgCDCIGIABBEGprQZ8BSg0AIAAgBkEEajYCDCAGIAAoAgg2AgALIAUgAiAAKAK0ASAEIAEQnAY3AwAgAEHEAWogAEEQaiAAKAIMIAQQmgYgAEH8AWogAEH4AWoQrgQEQCAEIAQoAgBBAnI2AgALIAAoAvwBIQIgAxDICBogAEHEAWoQyAgaIABBgAJqJAAgAgvEAQIBfgJ/IwBBEGsiBSQAAkACQAJAIAAgAUcEQEG4lAIoAgAhBkG4lAJBADYCABCtBhogACAFQQxqIAMQwgghBAJAQbiUAigCACIABEAgBSgCDCABRw0BIABBxABGDQQMBQtBuJQCIAY2AgAgBSgCDCABRg0ECyACQQQ2AgAMAQsgAkEENgIAC0IAIQQMAQsgAkEENgIAIARCAFUEQEL///////////8AIQQMAQtCgICAgICAgICAfyEECyAFQRBqJAAgBAulAwEBfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQlgYhASAAQcQBaiADIABB9wFqEJcGIABBuAFqENkEIgMgAxDoBBDpBCAAIANBABCSBiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahCuBA0AIAAoArQBIAMQ5wQgAmpGBEAgAxDnBCEGIAMgAxDnBEEBdBDpBCADIAMQ6AQQ6QQgACAGIANBABCSBiICajYCtAELIABB/AFqEK8EIAEgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakGAvgEQmAYNACAAQfwBahCxBBoMAQsLAkAgAEHEAWoQ5wRFDQAgACgCDCIGIABBEGprQZ8BSg0AIAAgBkEEajYCDCAGIAAoAgg2AgALIAUgAiAAKAK0ASAEIAEQngY7AQAgAEHEAWogAEEQaiAAKAIMIAQQmgYgAEH8AWogAEH4AWoQrgQEQCAEIAQoAgBBAnI2AgALIAAoAvwBIQIgAxDICBogAEHEAWoQyAgaIABBgAJqJAAgAgvuAQIDfwF+IwBBEGsiBCQAAn8CQAJAAkACQCAAIAFHBEACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNACACQQQ2AgAMAgtBuJQCKAIAIQZBuJQCQQA2AgAQrQYaIAAgBEEMaiADEMMIIQcCQEG4lAIoAgAiAARAIAQoAgwgAUcNASAAQcQARg0FDAQLQbiUAiAGNgIAIAQoAgwgAUYNAwsgAkEENgIADAELIAJBBDYCAAtBAAwDCyAHQv//A1gNAQsgAkEENgIAQf//AwwBC0EAIAenIgBrIAAgBUEtRhsLIQAgBEEQaiQAIABB//8DcQulAwEBfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQlgYhASAAQcQBaiADIABB9wFqEJcGIABBuAFqENkEIgMgAxDoBBDpBCAAIANBABCSBiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahCuBA0AIAAoArQBIAMQ5wQgAmpGBEAgAxDnBCEGIAMgAxDnBEEBdBDpBCADIAMQ6AQQ6QQgACAGIANBABCSBiICajYCtAELIABB/AFqEK8EIAEgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakGAvgEQmAYNACAAQfwBahCxBBoMAQsLAkAgAEHEAWoQ5wRFDQAgACgCDCIGIABBEGprQZ8BSg0AIAAgBkEEajYCDCAGIAAoAgg2AgALIAUgAiAAKAK0ASAEIAEQoAY2AgAgAEHEAWogAEEQaiAAKAIMIAQQmgYgAEH8AWogAEH4AWoQrgQEQCAEIAQoAgBBAnI2AgALIAAoAvwBIQIgAxDICBogAEHEAWoQyAgaIABBgAJqJAAgAgvpAQIDfwF+IwBBEGsiBCQAAn8CQAJAAkACQCAAIAFHBEACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNACACQQQ2AgAMAgtBuJQCKAIAIQZBuJQCQQA2AgAQrQYaIAAgBEEMaiADEMMIIQcCQEG4lAIoAgAiAARAIAQoAgwgAUcNASAAQcQARg0FDAQLQbiUAiAGNgIAIAQoAgwgAUYNAwsgAkEENgIADAELIAJBBDYCAAtBAAwDCyAHQv////8PWA0BCyACQQQ2AgBBfwwBC0EAIAenIgBrIAAgBUEtRhsLIQAgBEEQaiQAIAALpQMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEJYGIQEgAEHEAWogAyAAQfcBahCXBiAAQbgBahDZBCIDIAMQ6AQQ6QQgACADQQAQkgYiAjYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQrgQNACAAKAK0ASADEOcEIAJqRgRAIAMQ5wQhBiADIAMQ5wRBAXQQ6QQgAyADEOgEEOkEIAAgBiADQQAQkgYiAmo2ArQBCyAAQfwBahCvBCABIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpBgL4BEJgGDQAgAEH8AWoQsQQaDAELCwJAIABBxAFqEOcERQ0AIAAoAgwiBiAAQRBqa0GfAUoNACAAIAZBBGo2AgwgBiAAKAIINgIACyAFIAIgACgCtAEgBCABEKIGNwMAIABBxAFqIABBEGogACgCDCAEEJoGIABB/AFqIABB+AFqEK4EBEAgBCAEKAIAQQJyNgIACyAAKAL8ASECIAMQyAgaIABBxAFqEMgIGiAAQYACaiQAIAIL2AECA38BfiMAQRBrIgQkAAJ+AkACQAJAIAAgAUcEQAJAIAAtAAAiBUEtRw0AIABBAWoiACABRw0AIAJBBDYCAAwCC0G4lAIoAgAhBkG4lAJBADYCABCtBhogACAEQQxqIAMQwwghBwJAQbiUAigCACIABEAgBCgCDCABRw0BIABBxABGDQQMBQtBuJQCIAY2AgAgBCgCDCABRg0ECyACQQQ2AgAMAQsgAkEENgIAC0IADAILIAJBBDYCAEJ/DAELQgAgB30gByAFQS1GGwshByAEQRBqJAAgBwvPAwAjAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASAAQcABaiADIABB0AFqIABBzwFqIABBzgFqEKQGIABBtAFqENkEIgIgAhDoBBDpBCAAIAJBABCSBiIBNgKwASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQfwBaiAAQfgBahCuBA0AIAAoArABIAIQ5wQgAWpGBEAgAhDnBCEDIAIgAhDnBEEBdBDpBCACIAIQ6AQQ6QQgACADIAJBABCSBiIBajYCsAELIABB/AFqEK8EIABBB2ogAEEGaiABIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEKUGDQAgAEH8AWoQsQQaDAELCwJAIABBwAFqEOcERQ0AIAAtAAdBAUcNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSABIAAoArABIAQQpgY4AgAgAEHAAWogAEEQaiAAKAIMIAQQmgYgAEH8AWogAEH4AWoQrgQEQCAEIAQoAgBBAnI2AgALIAAoAvwBIQEgAhDICBogAEHAAWoQyAgaIABBgAJqJAAgAQteAQF/IwBBEGsiBSQAIAVBDGogARCyBSAFQQxqEKwEQYC+AUGgvgEgAhCsBiADIAVBDGoQigYiARDGBjoAACAEIAEQxwY6AAAgACABEMgGIAVBDGoQiQYgBUEQaiQAC/MDAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACILQQFqNgIAIAtBLjoAACAHEOcERQ0CIAkoAgAiCyAIa0GfAUoNAiAKKAIAIQUgCSALQQRqNgIAIAsgBTYCAAwCCwJAAkAgACAGRw0AIAcQ5wRFDQAgAS0AAEEBRw0CIAkoAgAiACAIa0GfAUoNASAKKAIAIQsgCSAAQQRqNgIAIAAgCzYCAEEAIQAgCkEANgIADAMLIAsgC0EgaiAMQQ9qEK8GIAtrIgtBH0oNASALQYC+AWosAAAhBQJAAkACQAJAIAtBfnFBFmsOAwECAAILIAMgBCgCACILRwRAQX8hACALQQFrLAAAEOcFIAIsAAAQ5wVHDQYLIAQgC0EBajYCACALIAU6AAAMAwsgAkHQADoAAAwBCyAFEOcFIgAgAiwAAEcNACACIAAQ6AU6AAAgAS0AAEEBRw0AIAFBADoAACAHEOcERQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAFOgAAQQAhACALQRVKDQIgCiAKKAIAQQFqNgIADAILQQAhAAwBC0F/IQALIAxBEGokACAAC70BAgN/AX0jAEEQayIDJAACQAJAAkAgACABRwRAQbiUAigCACEFQbiUAkEANgIAEK0GGiMAQRBrIgQkACAEIAAgA0EMakEAEIAGIAQpAwAgBCkDCBCBBCEGIARBEGokAAJAQbiUAigCACIABEAgAygCDCABRg0BDAMLQbiUAiAFNgIAIAMoAgwgAUcNAgwECyAAQcQARw0DDAILIAJBBDYCAAwCC0MAAAAAIQYLIAJBBDYCAAsgA0EQaiQAIAYLzwMAIwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAEHAAWogAyAAQdABaiAAQc8BaiAAQc4BahCkBiAAQbQBahDZBCICIAIQ6AQQ6QQgACACQQAQkgYiATYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABgNAAkAgAEH8AWogAEH4AWoQrgQNACAAKAKwASACEOcEIAFqRgRAIAIQ5wQhAyACIAIQ5wRBAXQQ6QQgAiACEOgEEOkEIAAgAyACQQAQkgYiAWo2ArABCyAAQfwBahCvBCAAQQdqIABBBmogASAAQbABaiAALADPASAALADOASAAQcABaiAAQRBqIABBDGogAEEIaiAAQdABahClBg0AIABB/AFqELEEGgwBCwsCQCAAQcABahDnBEUNACAALQAHQQFHDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgASAAKAKwASAEEKgGOQMAIABBwAFqIABBEGogACgCDCAEEJoGIABB/AFqIABB+AFqEK4EBEAgBCAEKAIAQQJyNgIACyAAKAL8ASEBIAIQyAgaIABBwAFqEMgIGiAAQYACaiQAIAELwQECA38BfCMAQRBrIgMkAAJAAkACQCAAIAFHBEBBuJQCKAIAIQVBuJQCQQA2AgAQrQYaIwBBEGsiBCQAIAQgACADQQxqQQEQgAYgBCkDACAEKQMIEIAEIQYgBEEQaiQAAkBBuJQCKAIAIgAEQCADKAIMIAFGDQEMAwtBuJQCIAU2AgAgAygCDCABRw0CDAQLIABBxABHDQMMAgsgAkEENgIADAILRAAAAAAAAAAAIQYLIAJBBDYCAAsgA0EQaiQAIAYL5gMBAX4jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQdABaiADIABB4AFqIABB3wFqIABB3gFqEKQGIABBxAFqENkEIgIgAhDoBBDpBCAAIAJBABCSBiIBNgLAASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWA0ACQCAAQYwCaiAAQYgCahCuBA0AIAAoAsABIAIQ5wQgAWpGBEAgAhDnBCEDIAIgAhDnBEEBdBDpBCACIAIQ6AQQ6QQgACADIAJBABCSBiIBajYCwAELIABBjAJqEK8EIABBF2ogAEEWaiABIABBwAFqIAAsAN8BIAAsAN4BIABB0AFqIABBIGogAEEcaiAAQRhqIABB4AFqEKUGDQAgAEGMAmoQsQQaDAELCwJAIABB0AFqEOcERQ0AIAAtABdBAUcNACAAKAIcIgMgAEEgamtBnwFKDQAgACADQQRqNgIcIAMgACgCGDYCAAsgACABIAAoAsABIAQQqgYgACkDACEGIAUgACkDCDcDCCAFIAY3AwAgAEHQAWogAEEgaiAAKAIcIAQQmgYgAEGMAmogAEGIAmoQrgQEQCAEIAQoAgBBAnI2AgALIAAoAowCIQEgAhDICBogAEHQAWoQyAgaIABBkAJqJAAgAQu3AgIEfgV/IwBBIGsiCCQAAkACQAJAIAEgAkcEQEG4lAIoAgAhDEG4lAJBADYCACMAQRBrIgkkABCtBhojAEEQayIKJAAjAEEQayILJAAgCyABIAhBHGpBAhCABiALKQMAIQQgCiALKQMINwMIIAogBDcDACALQRBqJAAgCikDACEEIAkgCikDCDcDCCAJIAQ3AwAgCkEQaiQAIAkpAwAhBCAIQQhqIgEgCSkDCDcDCCABIAQ3AwAgCUEQaiQAIAgpAxAhBCAIKQMIIQVBuJQCKAIAIgFFDQEgCCgCHCACRw0CIAUhBiAEIQcgAUHEAEcNAwwCCyADQQQ2AgAMAgtBuJQCIAw2AgAgCCgCHCACRg0BCyADQQQ2AgAgBiEFIAchBAsgACAFNwMAIAAgBDcDCCAIQSBqJAALkQMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASAAQcQBahDZBCEGIABBEGogAxCyBSAAQRBqEKwEQYC+AUGavgEgAEHQAWoQrAYgAEEQahCJBiAAQbgBahDZBCICIAIQ6AQQ6QQgACACQQAQkgYiATYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQrgQNACAAKAK0ASACEOcEIAFqRgRAIAIQ5wQhAyACIAIQ5wRBAXQQ6QQgAiACEOgEEOkEIAAgAyACQQAQkgYiAWo2ArQBCyAAQfwBahCvBEEQIAEgAEG0AWogAEEIakEAIAYgAEEQaiAAQQxqIABB0AFqEJgGDQAgAEH8AWoQsQQaDAELCyACIAAoArQBIAFrEOkEIAIQ4AQhARCtBiEDIAAgBTYCACABIAMgABCuBkEBRwRAIARBBDYCAAsgAEH8AWogAEH4AWoQrgQEQCAEIAQoAgBBAnI2AgALIAAoAvwBIQEgAhDICBogBhDICBogAEGAAmokACABCxYAIAAgASACIAMgACgCACgCIBEGABoL2wIBBH9B9LMCLQAABEBB8LMCKAIADwsjAEEgayICJAACQAJAA0AgAkEIaiABQQJ0aiABQcEYQbEsQQEgAXRB/////wdxGxDlBSIDNgIAIANBf0YNASABQQFqIgFBBkcNAAtBABDmBUUEQEHYmgEhACACQQhqQdiaAUEYENkDRQ0CQfCaASEAIAJBCGpB8JoBQRgQ2QNFDQJBACEBQZyxAi0AAEUEQANAIAFBAnRB7LACaiABQbEsEOUFNgIAIAFBAWoiAUEGRw0AC0GcsQJBAToAAEGEsQJB7LACKAIANgIAC0HssAIhACACQQhqQeywAkEYENkDRQ0CQYSxAiEAIAJBCGpBhLECQRgQ2QNFDQJBGBDwAyIARQ0BCyAAIAIpAgg3AgAgACACKQIYNwIQIAAgAikCEDcCCAwBC0EAIQALIAJBIGokAEH0swJBAToAAEHwswIgADYCACAAC0cBAX8jAEEQayIDJAAgAyABNgIMIAMgAjYCCCADQQRqIANBDGoQsAYhAiAAQa8PIAMoAggQ7QMhASACELEGIANBEGokACABCzMBAX8jAEEQayIDJAAgACAAIAIsAAAgASAAaxDsAyIAIAEgABsQlAUhACADQRBqJAAgAAsRACAAIAEoAgAQ/wU2AgAgAAsSACAAKAIAIgAEQCAAEP8FGgsL8gEBAX8jAEEgayIGJAAgBiABNgIcAkAgAygCBEEBcUUEQCAGQX82AgAgACABIAIgAyAEIAYgACgCACgCEBEJACEBAkACQAJAIAYoAgAOAgABAgsgBUEAOgAADAMLIAVBAToAAAwCCyAFQQE6AAAgBEEENgIADAELIAYgAxCyBSAGENEEIQEgBhCJBiAGIAMQsgUgBhCzBiEDIAYQiQYgBiADEIsGIAZBDHIgAxCMBiAFIAZBHGogAiAGIAZBGGoiAyABIARBARC0BiAGRjoAACAGKAIcIQEDQCADQQxrEMwIIgMgBkcNAAsLIAZBIGokACABCwsAIABB8LUCEI4GC6cEAQt/IwBBgAFrIggkACAIIAE2AnwgAiADEI8GIQkgCEGHBTYCECAIQQhqQQAgCEEQahD0BCERIAhBEGohCgJAAkACQCAJQeUATwRAIAkQ8AMiCkUNASARIAoQkAYLIAohByACIQEDQCABIANGBEADQCAAIAhB/ABqENIEQQEgCRsEQCAAIAhB/ABqENIEBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAKLQAAQQJGDQcgCkEBaiEKIAJBDGohAgwACwALIAAQ0wQhDiAGRQRAIAQgDhCsBSEOCyANQQFqIQ9BACEQIAohByACIQEDQCABIANGBEAgDyENIBBFDQIgABDVBBogCiEHIAIhASAJIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARDnBCAPRg0AIAdBADoAACALQQFrIQsLIAdBAWohByABQQxqIQEMAQsACwAFAkAgBy0AAEEBRw0AIAEgDRC1BigCACEMAkAgBgR/IAwFIAQgDBCsBQsgDkYEQEEBIRAgARDnBCAPRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAJQQFrIQkLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARCTBiIMGzoAACAHQQFqIQcgAUEMaiEBIAsgDGohCyAJIAxrIQkMAQsACwALEPoEAAsgBSAFKAIAQQRyNgIACyAREJQGIAhBgAFqJAAgAgsNACAAEOAEIAFBAnRqC7ADAQJ/IwBB0AJrIgAkACAAIAI2AsgCIAAgATYCzAIgAxCWBiEBIAMgAEHQAWoQtwYhBiAAQcQBaiADIABBxAJqELgGIABBuAFqENkEIgMgAxDoBBDpBCAAIANBABCSBiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahDSBA0AIAAoArQBIAMQ5wQgAmpGBEAgAxDnBCEHIAMgAxDnBEEBdBDpBCADIAMQ6AQQ6QQgACAHIANBABCSBiICajYCtAELIABBzAJqENMEIAEgAiAAQbQBaiAAQQhqIAAoAsQCIABBxAFqIABBEGogAEEMaiAGELkGDQAgAEHMAmoQ1QQaDAELCwJAIABBxAFqEOcERQ0AIAAoAgwiBiAAQRBqa0GfAUoNACAAIAZBBGo2AgwgBiAAKAIINgIACyAFIAIgACgCtAEgBCABEJkGNgIAIABBxAFqIABBEGogACgCDCAEEJoGIABBzAJqIABByAJqENIEBEAgBCAEKAIAQQJyNgIACyAAKALMAiECIAMQyAgaIABBxAFqEMgIGiAAQdACaiQAIAILPQEBfyMAQRBrIgIkACACQQxqIAAQsgUgAkEMahDRBEGAvgFBmr4BIAEQxAYgAkEMahCJBiACQRBqJAAgAQs/AQF/IwBBEGsiAyQAIANBDGogARCyBSACIANBDGoQswYiARDHBjYCACAAIAEQyAYgA0EMahCJBiADQRBqJAAL8gIBAn8jAEEQayIKJAAgCiAANgIMAkACQAJAIAMoAgAiCyACRw0AIAAgCSgCYEYEf0ErBSAJKAJkIABHDQFBLQshACADIAtBAWo2AgAgCyAAOgAADAELAkAgBhDnBEUNACAAIAVHDQBBACEAIAgoAgAiCSAHa0GfAUoNAiAEKAIAIQAgCCAJQQRqNgIAIAkgADYCAAwBC0F/IQAgCSAJQegAaiAKQQxqEMUGIAlrQQJ1IglBF0oNAQJAAkACQCABQQhrDgMAAgABCyABIAlKDQEMAwsgAUEQRw0AIAlBFkgNACADKAIAIgYgAkYNAiAGIAJrQQJKDQIgBkEBay0AAEEwRw0CQQAhACAEQQA2AgAgAyAGQQFqNgIAIAYgCUGAvgFqLQAAOgAADAILIAMgAygCACIAQQFqNgIAIAAgCUGAvgFqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQAMAQtBACEAIARBADYCAAsgCkEQaiQAIAALsAMBAn8jAEHQAmsiACQAIAAgAjYCyAIgACABNgLMAiADEJYGIQEgAyAAQdABahC3BiEGIABBxAFqIAMgAEHEAmoQuAYgAEG4AWoQ2QQiAyADEOgEEOkEIAAgA0EAEJIGIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqENIEDQAgACgCtAEgAxDnBCACakYEQCADEOcEIQcgAyADEOcEQQF0EOkEIAMgAxDoBBDpBCAAIAcgA0EAEJIGIgJqNgK0AQsgAEHMAmoQ0wQgASACIABBtAFqIABBCGogACgCxAIgAEHEAWogAEEQaiAAQQxqIAYQuQYNACAAQcwCahDVBBoMAQsLAkAgAEHEAWoQ5wRFDQAgACgCDCIGIABBEGprQZ8BSg0AIAAgBkEEajYCDCAGIAAoAgg2AgALIAUgAiAAKAK0ASAEIAEQnAY3AwAgAEHEAWogAEEQaiAAKAIMIAQQmgYgAEHMAmogAEHIAmoQ0gQEQCAEIAQoAgBBAnI2AgALIAAoAswCIQIgAxDICBogAEHEAWoQyAgaIABB0AJqJAAgAguwAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQlgYhASADIABB0AFqELcGIQYgAEHEAWogAyAAQcQCahC4BiAAQbgBahDZBCIDIAMQ6AQQ6QQgACADQQAQkgYiAjYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEHMAmogAEHIAmoQ0gQNACAAKAK0ASADEOcEIAJqRgRAIAMQ5wQhByADIAMQ5wRBAXQQ6QQgAyADEOgEEOkEIAAgByADQQAQkgYiAmo2ArQBCyAAQcwCahDTBCABIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBhC5Bg0AIABBzAJqENUEGgwBCwsCQCAAQcQBahDnBEUNACAAKAIMIgYgAEEQamtBnwFKDQAgACAGQQRqNgIMIAYgACgCCDYCAAsgBSACIAAoArQBIAQgARCeBjsBACAAQcQBaiAAQRBqIAAoAgwgBBCaBiAAQcwCaiAAQcgCahDSBARAIAQgBCgCAEECcjYCAAsgACgCzAIhAiADEMgIGiAAQcQBahDICBogAEHQAmokACACC7ADAQJ/IwBB0AJrIgAkACAAIAI2AsgCIAAgATYCzAIgAxCWBiEBIAMgAEHQAWoQtwYhBiAAQcQBaiADIABBxAJqELgGIABBuAFqENkEIgMgAxDoBBDpBCAAIANBABCSBiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahDSBA0AIAAoArQBIAMQ5wQgAmpGBEAgAxDnBCEHIAMgAxDnBEEBdBDpBCADIAMQ6AQQ6QQgACAHIANBABCSBiICajYCtAELIABBzAJqENMEIAEgAiAAQbQBaiAAQQhqIAAoAsQCIABBxAFqIABBEGogAEEMaiAGELkGDQAgAEHMAmoQ1QQaDAELCwJAIABBxAFqEOcERQ0AIAAoAgwiBiAAQRBqa0GfAUoNACAAIAZBBGo2AgwgBiAAKAIINgIACyAFIAIgACgCtAEgBCABEKAGNgIAIABBxAFqIABBEGogACgCDCAEEJoGIABBzAJqIABByAJqENIEBEAgBCAEKAIAQQJyNgIACyAAKALMAiECIAMQyAgaIABBxAFqEMgIGiAAQdACaiQAIAILsAMBAn8jAEHQAmsiACQAIAAgAjYCyAIgACABNgLMAiADEJYGIQEgAyAAQdABahC3BiEGIABBxAFqIAMgAEHEAmoQuAYgAEG4AWoQ2QQiAyADEOgEEOkEIAAgA0EAEJIGIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqENIEDQAgACgCtAEgAxDnBCACakYEQCADEOcEIQcgAyADEOcEQQF0EOkEIAMgAxDoBBDpBCAAIAcgA0EAEJIGIgJqNgK0AQsgAEHMAmoQ0wQgASACIABBtAFqIABBCGogACgCxAIgAEHEAWogAEEQaiAAQQxqIAYQuQYNACAAQcwCahDVBBoMAQsLAkAgAEHEAWoQ5wRFDQAgACgCDCIGIABBEGprQZ8BSg0AIAAgBkEEajYCDCAGIAAoAgg2AgALIAUgAiAAKAK0ASAEIAEQogY3AwAgAEHEAWogAEEQaiAAKAIMIAQQmgYgAEHMAmogAEHIAmoQ0gQEQCAEIAQoAgBBAnI2AgALIAAoAswCIQIgAxDICBogAEHEAWoQyAgaIABB0AJqJAAgAgvPAwAjAEHwAmsiACQAIAAgAjYC6AIgACABNgLsAiAAQcwBaiADIABB4AFqIABB3AFqIABB2AFqEL8GIABBwAFqENkEIgIgAhDoBBDpBCAAIAJBABCSBiIBNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQewCaiAAQegCahDSBA0AIAAoArwBIAIQ5wQgAWpGBEAgAhDnBCEDIAIgAhDnBEEBdBDpBCACIAIQ6AQQ6QQgACADIAJBABCSBiIBajYCvAELIABB7AJqENMEIABBB2ogAEEGaiABIABBvAFqIAAoAtwBIAAoAtgBIABBzAFqIABBEGogAEEMaiAAQQhqIABB4AFqEMAGDQAgAEHsAmoQ1QQaDAELCwJAIABBzAFqEOcERQ0AIAAtAAdBAUcNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSABIAAoArwBIAQQpgY4AgAgAEHMAWogAEEQaiAAKAIMIAQQmgYgAEHsAmogAEHoAmoQ0gQEQCAEIAQoAgBBAnI2AgALIAAoAuwCIQEgAhDICBogAEHMAWoQyAgaIABB8AJqJAAgAQteAQF/IwBBEGsiBSQAIAVBDGogARCyBSAFQQxqENEEQYC+AUGgvgEgAhDEBiADIAVBDGoQswYiARDGBjYCACAEIAEQxwY2AgAgACABEMgGIAVBDGoQiQYgBUEQaiQAC/sDAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACILQQFqNgIAIAtBLjoAACAHEOcERQ0CIAkoAgAiCyAIa0GfAUoNAiAKKAIAIQUgCSALQQRqNgIAIAsgBTYCAAwCCwJAAkAgACAGRw0AIAcQ5wRFDQAgAS0AAEEBRw0CIAkoAgAiACAIa0GfAUoNASAKKAIAIQsgCSAAQQRqNgIAIAAgCzYCAEEAIQAgCkEANgIADAMLIAsgC0GAAWogDEEMahDFBiALayIAQQJ1IgtBH0oNASALQYC+AWosAAAhBQJAAkAgAEF7cSIAQdgARwRAIABB4ABHDQEgAyAEKAIAIgtHBEBBfyEAIAtBAWssAAAQ5wUgAiwAABDnBUcNBgsgBCALQQFqNgIAIAsgBToAAAwDCyACQdAAOgAADAELIAUQ5wUiACACLAAARw0AIAIgABDoBToAACABLQAAQQFHDQAgAUEAOgAAIAcQ5wRFDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAtBFUoNAiAKIAooAgBBAWo2AgAMAgtBACEADAELQX8hAAsgDEEQaiQAIAALzwMAIwBB8AJrIgAkACAAIAI2AugCIAAgATYC7AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahC/BiAAQcABahDZBCICIAIQ6AQQ6QQgACACQQAQkgYiATYCvAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABgNAAkAgAEHsAmogAEHoAmoQ0gQNACAAKAK8ASACEOcEIAFqRgRAIAIQ5wQhAyACIAIQ5wRBAXQQ6QQgAiACEOgEEOkEIAAgAyACQQAQkgYiAWo2ArwBCyAAQewCahDTBCAAQQdqIABBBmogASAAQbwBaiAAKALcASAAKALYASAAQcwBaiAAQRBqIABBDGogAEEIaiAAQeABahDABg0AIABB7AJqENUEGgwBCwsCQCAAQcwBahDnBEUNACAALQAHQQFHDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgASAAKAK8ASAEEKgGOQMAIABBzAFqIABBEGogACgCDCAEEJoGIABB7AJqIABB6AJqENIEBEAgBCAEKAIAQQJyNgIACyAAKALsAiEBIAIQyAgaIABBzAFqEMgIGiAAQfACaiQAIAEL5gMBAX4jAEGAA2siACQAIAAgAjYC+AIgACABNgL8AiAAQdwBaiADIABB8AFqIABB7AFqIABB6AFqEL8GIABB0AFqENkEIgIgAhDoBBDpBCAAIAJBABCSBiIBNgLMASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWA0ACQCAAQfwCaiAAQfgCahDSBA0AIAAoAswBIAIQ5wQgAWpGBEAgAhDnBCEDIAIgAhDnBEEBdBDpBCACIAIQ6AQQ6QQgACADIAJBABCSBiIBajYCzAELIABB/AJqENMEIABBF2ogAEEWaiABIABBzAFqIAAoAuwBIAAoAugBIABB3AFqIABBIGogAEEcaiAAQRhqIABB8AFqEMAGDQAgAEH8AmoQ1QQaDAELCwJAIABB3AFqEOcERQ0AIAAtABdBAUcNACAAKAIcIgMgAEEgamtBnwFKDQAgACADQQRqNgIcIAMgACgCGDYCAAsgACABIAAoAswBIAQQqgYgACkDACEGIAUgACkDCDcDCCAFIAY3AwAgAEHcAWogAEEgaiAAKAIcIAQQmgYgAEH8AmogAEH4AmoQ0gQEQCAEIAQoAgBBAnI2AgALIAAoAvwCIQEgAhDICBogAEHcAWoQyAgaIABBgANqJAAgAQuRAwEBfyMAQcACayIAJAAgACACNgK4AiAAIAE2ArwCIABBxAFqENkEIQYgAEEQaiADELIFIABBEGoQ0QRBgL4BQZq+ASAAQdABahDEBiAAQRBqEIkGIABBuAFqENkEIgIgAhDoBBDpBCAAIAJBABCSBiIBNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQbwCaiAAQbgCahDSBA0AIAAoArQBIAIQ5wQgAWpGBEAgAhDnBCEDIAIgAhDnBEEBdBDpBCACIAIQ6AQQ6QQgACADIAJBABCSBiIBajYCtAELIABBvAJqENMEQRAgASAAQbQBaiAAQQhqQQAgBiAAQRBqIABBDGogAEHQAWoQuQYNACAAQbwCahDVBBoMAQsLIAIgACgCtAEgAWsQ6QQgAhDgBCEBEK0GIQMgACAFNgIAIAEgAyAAEK4GQQFHBEAgBEEENgIACyAAQbwCaiAAQbgCahDSBARAIAQgBCgCAEECcjYCAAsgACgCvAIhASACEMgIGiAGEMgIGiAAQcACaiQAIAELFgAgACABIAIgAyAAKAIAKAIwEQYAGgtdAQJ/IwBBEGsiAyQAIAIoAgAhBCAAAn8gASAAa0ECdSICBEADQCAAIAQgACgCAEYNAhogAEEEaiEAIAJBAWsiAg0ACwtBAAsiACABIAAbEJQFIQAgA0EQaiQAIAALDwAgACAAKAIAKAIMEQAACw8AIAAgACgCACgCEBEAAAsRACAAIAEgASgCACgCFBECAAvaAQEBfyMAQSBrIgUkACAFIAE2AhwCQCACKAIEQQFxRQRAIAAgASACIAMgBCAAKAIAKAIYEQcAIQIMAQsgBUEQaiACELIFIAVBEGoQigYhAiAFQRBqEIkGAkAgBARAIAVBEGogAhCLBgwBCyAFQRBqIAIQjAYLIAUgBUEQahDKBjYCDANAIAUgBUEQahDLBjYCCCAFQQxqIAVBCGoQzAYEQCAFQRxqIAVBDGooAgAsAAAQxwQgBUEMahDNBgwBBSAFKAIcIQIgBUEQahDICBoLCwsgBUEgaiQAIAILCgAgABDgBBDOBgsQACAAEOAEIAAQ5wRqEM4GCw0AIAAoAgAgASgCAEcLDwAgACAAKAIAQQFqNgIACyUBAX8jAEEQayIBJAAgAUEMaiAAEMAHKAIAIQAgAUEQaiQAIAALsQEBAX8jAEFAaiIAJAAgAEIlNwM4IABBOGpBAXJByxBBASACKAIEENAGEK0GIQUgACAENgIAIABBK2ogAEErakENIAUgAEE4aiAAENEGIABBK2pqIgUgAhDSBiEEIABBBGogAhCyBSAAQStqIAQgBSAAQRBqIABBDGogAEEIaiAAQQRqENMGIABBBGoQiQYgASAAQRBqIAAoAgwgACgCCCACIAMQ1AYhAiAAQUBrJAAgAgusAQEBfwJAIANBgBBxRQ0AIANBygBxIgRBCEYNACAEQcAARg0AIAJFDQAgAEErOgAAIABBAWohAAsgA0GABHEEQCAAQSM6AAAgAEEBaiEACwNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn9B7wAgA0HKAHEiAUHAAEYNABpB2ABB+AAgA0GAgAFxGyABQQhGDQAaQeQAQfUAIAIbCzoAAAtIAQF/IwBBEGsiBSQAIAUgAjYCDCAFIAQ2AgggBUEEaiAFQQxqELAGIQQgACABIAMgBSgCCBDzBSECIAQQsQYgBUEQaiQAIAILZAAgAigCBEGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgASAAa0ECSA0AIAJBMEcNACAALQABQSByQfgARw0AIABBAmohAAsgAAvmAwEIfyMAQRBrIgokACAGEKwEIQsgCkEEaiAGEIoGIgYQyAYCQCAKQQRqEJMGBEAgCyAAIAIgAxCsBiAFIAMgAiAAa2oiBjYCAAwBCyAFIAM2AgACQAJAIAAiCS0AACIHQStrDgMAAQABCyALIAfAEKwFIQcgBSAFKAIAIghBAWo2AgAgCCAHOgAAIABBAWohCQsCQCACIAlrQQJIDQAgCS0AAEEwRw0AIAktAAFBIHJB+ABHDQAgC0EwEKwFIQcgBSAFKAIAIghBAWo2AgAgCCAHOgAAIAsgCSwAARCsBSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAJQQJqIQkLIAkgAhDuBkEAIQcgBhDHBiEMQQAhCCAJIQYDfyACIAZNBH8gAyAJIABraiAFKAIAEO4GIAUoAgAFAkAgCkEEaiAIEJIGLQAARQ0AIAcgCkEEaiAIEJIGLAAARw0AIAUgBSgCACIHQQFqNgIAIAcgDDoAACAIIAggCkEEahDnBEEBa0lqIQhBACEHCyALIAYsAAAQrAUhDSAFIAUoAgAiDkEBajYCACAOIA06AAAgBkEBaiEGIAdBAWohBwwBCwshBgsgBCAGIAMgASAAa2ogASACRhs2AgAgCkEEahDICBogCkEQaiQAC6oBAQN/IwBBEGsiCCQAAkACQCAARQ0AIAQoAgwhBiACIAFrIgdBAEoEQCAAIAEgBxDIBCAHRw0BCyAGIAMgAWsiAWtBACABIAZIGyIBQQBKBEAgACAIQQRqIAEgBRDeBiIGEOAEIAEQyAQhByAGEMgIGiABIAdHDQELIAMgAmsiAUEASgRAIAAgAiABEMgEIAFHDQELIAQQ3wYMAQtBACEACyAIQRBqJAAgAAu5AQECfyMAQfAAayIAJAAgAEIlNwNoIABB6ABqQQFyQbsQQQEgAigCBBDQBhCtBiEFIAAgBDcDACAAQdAAaiAAQdAAakEYIAUgAEHoAGogABDRBiAAQdAAamoiBSACENIGIQYgAEEUaiACELIFIABB0ABqIAYgBSAAQSBqIABBHGogAEEYaiAAQRRqENMGIABBFGoQiQYgASAAQSBqIAAoAhwgACgCGCACIAMQ1AYhAiAAQfAAaiQAIAILsQEBAX8jAEFAaiIAJAAgAEIlNwM4IABBOGpBAXJByxBBACACKAIEENAGEK0GIQUgACAENgIAIABBK2ogAEErakENIAUgAEE4aiAAENEGIABBK2pqIgUgAhDSBiEEIABBBGogAhCyBSAAQStqIAQgBSAAQRBqIABBDGogAEEIaiAAQQRqENMGIABBBGoQiQYgASAAQRBqIAAoAgwgACgCCCACIAMQ1AYhAiAAQUBrJAAgAgu5AQECfyMAQfAAayIAJAAgAEIlNwNoIABB6ABqQQFyQbsQQQAgAigCBBDQBhCtBiEFIAAgBDcDACAAQdAAaiAAQdAAakEYIAUgAEHoAGogABDRBiAAQdAAamoiBSACENIGIQYgAEEUaiACELIFIABB0ABqIAYgBSAAQSBqIABBHGogAEEYaiAAQRRqENMGIABBFGoQiQYgASAAQSBqIAAoAhwgACgCGCACIAMQ1AYhAiAAQfAAaiQAIAIL+AMBBn8CfyMAQdABayIAJAAgAEIlNwPIASAAQcgBakEBckGxLCACKAIEENkGIQcgACAAQaABajYCnAEQrQYhBQJ/IAcEQCACKAIIIQYgACAEOQMoIAAgBjYCICAAQaABakEeIAUgAEHIAWogAEEgahDRBgwBCyAAIAQ5AzAgAEGgAWpBHiAFIABByAFqIABBMGoQ0QYLIQUgAEGHBTYCUCAAQZQBakEAIABB0ABqEPQEIQggAEGgAWohBgJAIAVBHk4EQBCtBiEFAn8gBwRAIAIoAgghBiAAIAQ5AwggACAGNgIAIABBnAFqIAUgAEHIAWogABDaBgwBCyAAIAQ5AxAgAEGcAWogBSAAQcgBaiAAQRBqENoGCyIFQX9GDQEgCCAAKAKcARCQBiAAKAKcASEGCyAGIAUgBmoiCSACENIGIQogAEGHBTYCUCAAQcgAakEAIABB0ABqEPQEIQYCQCAAKAKcASIHIABBoAFqRgRAIABB0ABqIQUMAQsgBUEBdBDwAyIFRQ0BIAYgBRCQBiAAKAKcASEHCyAAQTxqIAIQsgUgByAKIAkgBSAAQcQAaiAAQUBrIABBPGoQ2wYgAEE8ahCJBiABIAUgACgCRCAAKAJAIAIgAxDUBiECIAYQlAYgCBCUBiAAQdABaiQAIAIMAQsQ+gQACwvQAQECfyACQYAQcQRAIABBKzoAACAAQQFqIQALIAJBgAhxBEAgAEEjOgAAIABBAWohAAsgAkGEAnEiA0GEAkcEQCAAQa7UADsAACAAQQJqIQALIAJBgIABcSEEA0AgAS0AACICBEAgACACOgAAIABBAWohACABQQFqIQEMAQsLIAACfwJAIANBgAJHBEAgA0EERw0BQcYAQeYAIAQbDAILQcUAQeUAIAQbDAELQcEAQeEAIAQbIANBhAJGDQAaQccAQecAIAQbCzoAACADQYQCRwugAQEDfyMAQRBrIgQkACAEIAE2AgwgBCADNgIIIARBBGogBEEMahCwBiEDIAQoAgghASMAQRBrIgUkACAFIAE2AgwgBSABNgIIQX8hBgJAQQBBACACIAEQ8wUiAUEASA0AIAAgAUEBaiIAEPADIgE2AgAgAUUNACABIAAgAiAFKAIMEPMFIQYLIAVBEGokACAGIQEgAxCxBiAEQRBqJAAgAQvCBQEOfyMAQRBrIgokACAGEKwEIQsgCkEEaiAGEIoGIg0QyAYgBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCyAGwBCsBSEGIAUgBSgCACIHQQFqNgIAIAcgBjoAACAAQQFqIQgLAkACQCACIAgiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACALQTAQrAUhBiAFIAUoAgAiB0EBajYCACAHIAY6AAAgCyAILAABEKwFIQYgBSAFKAIAIgdBAWo2AgAgByAGOgAAIAhBAmoiCCEGA0AgAiAGTQ0CIAYsAAAhERCtBiESIBEQ9QVFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAACETEK0GIRQgExD2BUUNASAGQQFqIQYMAAsACwJAIApBBGoQkwYEQCALIAggBiAFKAIAEKwGIAUgBSgCACAGIAhrajYCAAwBCyAIIAYQ7gYgDRDHBiEOIAghBwNAIAYgB00EQCADIAggAGtqIAUoAgAQ7gYFAkAgCkEEaiAMEJIGLAAAQQBMDQAgCSAKQQRqIAwQkgYsAABHDQAgBSAFKAIAIglBAWo2AgAgCSAOOgAAIAwgDCAKQQRqEOcEQQFrSWohDEEAIQkLIAsgBywAABCsBSEPIAUgBSgCACIQQQFqNgIAIBAgDzoAACAHQQFqIQcgCUEBaiEJDAELCwsDQAJAAkAgAiAGTQRAIAYhBwwBCyAGQQFqIQcgBiwAACIGQS5HDQEgDRDGBiEGIAUgBSgCACIJQQFqNgIAIAkgBjoAAAsgCyAHIAIgBSgCABCsBiAFIAUoAgAgAiAHa2oiBjYCACAEIAYgAyABIABraiABIAJGGzYCACAKQQRqEMgIGiAKQRBqJAAPCyALIAYQrAUhBiAFIAUoAgAiCUEBajYCACAJIAY6AAAgByEGDAALAAueBAEGfwJ/IwBBgAJrIgAkACAAQiU3A/gBIABB+AFqQQFyQfEXIAIoAgQQ2QYhCCAAIABB0AFqNgLMARCtBiEGAn8gCARAIAIoAgghByAAQUBrIAU3AwAgACAENwM4IAAgBzYCMCAAQdABakEeIAYgAEH4AWogAEEwahDRBgwBCyAAIAQ3A1AgACAFNwNYIABB0AFqQR4gBiAAQfgBaiAAQdAAahDRBgshBiAAQYcFNgKAASAAQcQBakEAIABBgAFqEPQEIQkgAEHQAWohBwJAIAZBHk4EQBCtBiEGAn8gCARAIAIoAgghByAAIAU3AxAgACAENwMIIAAgBzYCACAAQcwBaiAGIABB+AFqIAAQ2gYMAQsgACAENwMgIAAgBTcDKCAAQcwBaiAGIABB+AFqIABBIGoQ2gYLIgZBf0YNASAJIAAoAswBEJAGIAAoAswBIQcLIAcgBiAHaiIKIAIQ0gYhCyAAQYcFNgKAASAAQfgAakEAIABBgAFqEPQEIQcCQCAAKALMASIIIABB0AFqRgRAIABBgAFqIQYMAQsgBkEBdBDwAyIGRQ0BIAcgBhCQBiAAKALMASEICyAAQewAaiACELIFIAggCyAKIAYgAEH0AGogAEHwAGogAEHsAGoQ2wYgAEHsAGoQiQYgASAGIAAoAnQgACgCcCACIAMQ1AYhAiAHEJQGIAkQlAYgAEGAAmokACACDAELEPoEAAsLpQEBA38jAEHgAGsiACQAEK0GIQUgACAENgIAIABBQGsgAEFAa0EUIAVBrw8gABDRBiIGIABBQGtqIgQgAhDSBiEFIABBEGogAhCyBSAAQRBqEKwEIQcgAEEQahCJBiAHIABBQGsgBCAAQRBqEKwGIAEgAEEQaiAGIABBEGpqIgYgBSAAayAAakEwayAEIAVGGyAGIAIgAxDUBiECIABB4ABqJAAgAgujAQEDfyMAQRBrIgUkACMAQRBrIgMkAAJAIAFB9////wdNBEACQCABEKIFBEAgACABEJwFIAAhBAwBCyADQQhqIAEQowVBAWoQpAUgAygCDBogACADKAIIIgQQpQUgACADKAIMEKYFIAAgARCnBQsgBCABIAIQyQggA0EAOgAHIAEgBGogA0EHahCdBSADQRBqJAAMAQsQqAUACyAFQRBqJAAgAAsPACAAKAIMGiAAQQA2AgwL2gEBAX8jAEEgayIFJAAgBSABNgIcAkAgAigCBEEBcUUEQCAAIAEgAiADIAQgACgCACgCGBEHACECDAELIAVBEGogAhCyBSAFQRBqELMGIQIgBUEQahCJBgJAIAQEQCAFQRBqIAIQiwYMAQsgBUEQaiACEIwGCyAFIAVBEGoQygY2AgwDQCAFIAVBEGoQ4QY2AgggBUEMaiAFQQhqEMwGBEAgBUEcaiAFQQxqKAIAKAIAENgEIAVBDGoQ4gYMAQUgBSgCHCECIAVBEGoQzAgaCwsLIAVBIGokACACCxMAIAAQ4AQgABDnBEECdGoQzgYLDwAgACAAKAIAQQRqNgIAC7oBAQF/IwBBkAFrIgAkACAAQiU3A4gBIABBiAFqQQFyQcsQQQEgAigCBBDQBhCtBiEFIAAgBDYCACAAQfsAaiAAQfsAakENIAUgAEGIAWogABDRBiAAQfsAamoiBSACENIGIQQgAEEEaiACELIFIABB+wBqIAQgBSAAQRBqIABBDGogAEEIaiAAQQRqEOQGIABBBGoQiQYgASAAQRBqIAAoAgwgACgCCCACIAMQ5QYhAiAAQZABaiQAIAIL7wMBCH8jAEEQayIKJAAgBhDRBCELIApBBGogBhCzBiIGEMgGAkAgCkEEahCTBgRAIAsgACACIAMQxAYgBSADIAIgAGtBAnRqIgY2AgAMAQsgBSADNgIAAkACQCAAIgktAAAiB0Eraw4DAAEAAQsgCyAHwBCuBSEHIAUgBSgCACIIQQRqNgIAIAggBzYCACAAQQFqIQkLAkAgAiAJa0ECSA0AIAktAABBMEcNACAJLQABQSByQfgARw0AIAtBMBCuBSEHIAUgBSgCACIIQQRqNgIAIAggBzYCACALIAksAAEQrgUhByAFIAUoAgAiCEEEajYCACAIIAc2AgAgCUECaiEJCyAJIAIQ7gZBACEHIAYQxwYhDEEAIQggCSEGA38gAiAGTQR/IAMgCSAAa0ECdGogBSgCABDvBiAFKAIABQJAIApBBGogCBCSBi0AAEUNACAHIApBBGogCBCSBiwAAEcNACAFIAUoAgAiB0EEajYCACAHIAw2AgAgCCAIIApBBGoQ5wRBAWtJaiEIQQAhBwsgCyAGLAAAEK4FIQ0gBSAFKAIAIg5BBGo2AgAgDiANNgIAIAZBAWohBiAHQQFqIQcMAQsLIQYLIAQgBiADIAEgAGtBAnRqIAEgAkYbNgIAIApBBGoQyAgaIApBEGokAAuzAQEDfyMAQRBrIggkAAJAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIHQQBKBEAgACABIAcQyAQgB0cNAQsgBiADIAFrQQJ1IgFrQQAgASAGSBsiAUEASgRAIAAgCEEEaiABIAUQ7QYiBhDgBCABEMgEIQcgBhDMCBogASAHRw0BCyADIAJrQQJ1IgFBAEoEQCAAIAIgARDIBCABRw0BCyAEEN8GDAELQQAhAAsgCEEQaiQAIAALugEBAn8jAEGAAmsiACQAIABCJTcD+AEgAEH4AWpBAXJBuxBBASACKAIEENAGEK0GIQUgACAENwMAIABB4AFqIABB4AFqQRggBSAAQfgBaiAAENEGIABB4AFqaiIFIAIQ0gYhBiAAQRRqIAIQsgUgAEHgAWogBiAFIABBIGogAEEcaiAAQRhqIABBFGoQ5AYgAEEUahCJBiABIABBIGogACgCHCAAKAIYIAIgAxDlBiECIABBgAJqJAAgAgu6AQEBfyMAQZABayIAJAAgAEIlNwOIASAAQYgBakEBckHLEEEAIAIoAgQQ0AYQrQYhBSAAIAQ2AgAgAEH7AGogAEH7AGpBDSAFIABBiAFqIAAQ0QYgAEH7AGpqIgUgAhDSBiEEIABBBGogAhCyBSAAQfsAaiAEIAUgAEEQaiAAQQxqIABBCGogAEEEahDkBiAAQQRqEIkGIAEgAEEQaiAAKAIMIAAoAgggAiADEOUGIQIgAEGQAWokACACC7oBAQJ/IwBBgAJrIgAkACAAQiU3A/gBIABB+AFqQQFyQbsQQQAgAigCBBDQBhCtBiEFIAAgBDcDACAAQeABaiAAQeABakEYIAUgAEH4AWogABDRBiAAQeABamoiBSACENIGIQYgAEEUaiACELIFIABB4AFqIAYgBSAAQSBqIABBHGogAEEYaiAAQRRqEOQGIABBFGoQiQYgASAAQSBqIAAoAhwgACgCGCACIAMQ5QYhAiAAQYACaiQAIAIL+AMBBn8CfyMAQfACayIAJAAgAEIlNwPoAiAAQegCakEBckGxLCACKAIEENkGIQcgACAAQcACajYCvAIQrQYhBQJ/IAcEQCACKAIIIQYgACAEOQMoIAAgBjYCICAAQcACakEeIAUgAEHoAmogAEEgahDRBgwBCyAAIAQ5AzAgAEHAAmpBHiAFIABB6AJqIABBMGoQ0QYLIQUgAEGHBTYCUCAAQbQCakEAIABB0ABqEPQEIQggAEHAAmohBgJAIAVBHk4EQBCtBiEFAn8gBwRAIAIoAgghBiAAIAQ5AwggACAGNgIAIABBvAJqIAUgAEHoAmogABDaBgwBCyAAIAQ5AxAgAEG8AmogBSAAQegCaiAAQRBqENoGCyIFQX9GDQEgCCAAKAK8AhCQBiAAKAK8AiEGCyAGIAUgBmoiCSACENIGIQogAEGHBTYCUCAAQcgAakEAIABB0ABqEPQEIQYCQCAAKAK8AiIHIABBwAJqRgRAIABB0ABqIQUMAQsgBUEDdBDwAyIFRQ0BIAYgBRCQBiAAKAK8AiEHCyAAQTxqIAIQsgUgByAKIAkgBSAAQcQAaiAAQUBrIABBPGoQ6gYgAEE8ahCJBiABIAUgACgCRCAAKAJAIAIgAxDlBiECIAYQlAYgCBCUBiAAQfACaiQAIAIMAQsQ+gQACwvSBQEOfyMAQRBrIgokACAGENEEIQsgCkEEaiAGELMGIg0QyAYgBSADNgIAAkACQCAAIgktAAAiBkEraw4DAAEAAQsgCyAGwBCuBSEGIAUgBSgCACIHQQRqNgIAIAcgBjYCACAAQQFqIQkLAkACQCACIAkiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACALQTAQrgUhBiAFIAUoAgAiB0EEajYCACAHIAY2AgAgCyAJLAABEK4FIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIAlBAmoiCSEGA0AgAiAGTQ0CIAYsAAAhERCtBiESIBEQ9QVFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAACETEK0GIRQgExD2BUUNASAGQQFqIQYMAAsACwJAIApBBGoQkwYEQCALIAkgBiAFKAIAEMQGIAUgBSgCACAGIAlrQQJ0ajYCAAwBCyAJIAYQ7gYgDRDHBiEOIAkhBwNAIAYgB00EQCADIAkgAGtBAnRqIAUoAgAQ7wYFAkAgCkEEaiAMEJIGLAAAQQBMDQAgCCAKQQRqIAwQkgYsAABHDQAgBSAFKAIAIghBBGo2AgAgCCAONgIAIAwgDCAKQQRqEOcEQQFrSWohDEEAIQgLIAsgBywAABCuBSEPIAUgBSgCACIQQQRqNgIAIBAgDzYCACAHQQFqIQcgCEEBaiEIDAELCwsCQAJAA0AgAiAGTQ0BIAZBAWohByAGLAAAIgZBLkcEQCALIAYQrgUhBiAFIAUoAgAiCEEEajYCACAIIAY2AgAgByEGDAELCyANEMYGIQYgBSAFKAIAIgxBBGoiCDYCACAMIAY2AgAMAQsgBSgCACEIIAYhBwsgCyAHIAIgCBDEBiAFIAUoAgAgAiAHa0ECdGoiBjYCACAEIAYgAyABIABrQQJ0aiABIAJGGzYCACAKQQRqEMgIGiAKQRBqJAALngQBBn8CfyMAQaADayIAJAAgAEIlNwOYAyAAQZgDakEBckHxFyACKAIEENkGIQggACAAQfACajYC7AIQrQYhBgJ/IAgEQCACKAIIIQcgAEFAayAFNwMAIAAgBDcDOCAAIAc2AjAgAEHwAmpBHiAGIABBmANqIABBMGoQ0QYMAQsgACAENwNQIAAgBTcDWCAAQfACakEeIAYgAEGYA2ogAEHQAGoQ0QYLIQYgAEGHBTYCgAEgAEHkAmpBACAAQYABahD0BCEJIABB8AJqIQcCQCAGQR5OBEAQrQYhBgJ/IAgEQCACKAIIIQcgACAFNwMQIAAgBDcDCCAAIAc2AgAgAEHsAmogBiAAQZgDaiAAENoGDAELIAAgBDcDICAAIAU3AyggAEHsAmogBiAAQZgDaiAAQSBqENoGCyIGQX9GDQEgCSAAKALsAhCQBiAAKALsAiEHCyAHIAYgB2oiCiACENIGIQsgAEGHBTYCgAEgAEH4AGpBACAAQYABahD0BCEHAkAgACgC7AIiCCAAQfACakYEQCAAQYABaiEGDAELIAZBA3QQ8AMiBkUNASAHIAYQkAYgACgC7AIhCAsgAEHsAGogAhCyBSAIIAsgCiAGIABB9ABqIABB8ABqIABB7ABqEOoGIABB7ABqEIkGIAEgBiAAKAJ0IAAoAnAgAiADEOUGIQIgBxCUBiAJEJQGIABBoANqJAAgAgwBCxD6BAALC7ABAQN/IwBB0AFrIgAkABCtBiEFIAAgBDYCACAAQbABaiAAQbABakEUIAVBrw8gABDRBiIGIABBsAFqaiIEIAIQ0gYhBSAAQRBqIAIQsgUgAEEQahDRBCEHIABBEGoQiQYgByAAQbABaiAEIABBEGoQxAYgASAAQRBqIABBEGogBkECdGoiBiAFIABrQQJ0IABqQbAFayAEIAVGGyAGIAIgAxDlBiECIABB0AFqJAAgAgvlAQEGfyMAQRBrIgckACMAQRBrIgMkAAJAIAFB9////wNNBEACQCABEKgIBEAgACABEJwFIAAhBAwBCyADQQhqIAEQqQhBAWoQqgggAygCDBogACADKAIIIgQQpQUgACADKAIMEKYFIAAgARCnBQsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIgBUEMaiEIA0AgAgRAIAYgCCgCADYCACACQQFrIQIgBkEEaiEGDAELCyAFQRBqJAAgA0EANgIEIAQgAUECdGogA0EEahCoByADQRBqJAAMAQsQqAUACyAHQRBqJAAgAAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQiwcgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC2EBAX8jAEEQayICJAAgAiAANgIMAkAgACABRg0AA0AgAiABQQRrIgE2AgggACABTw0BIAIoAgwgAigCCBDhBCACIAIoAgxBBGoiADYCDCACKAIIIQEMAAsACyACQRBqJAAL1QMBBH8jAEEQayIIJAAgCCACNgIIIAggATYCDCAIQQRqIAMQsgUgCEEEahCsBCECIAhBBGoQiQYgBEEANgIAQQAhAQJAA0AgBiAHRg0BIAENAQJAIAhBDGogCEEIahCuBA0AAkAgAiAGLAAAEPEGQSVGBEAgBkEBaiIBIAdGDQJBACEJAkACQCACIAEsAAAQ8QYiAUHFAEYNAEEBIQogAUH/AXFBMEYNACABIQsMAQsgBkECaiIJIAdGDQNBAiEKIAIgCSwAABDxBiELIAEhCQsgCCAAIAgoAgwgCCgCCCADIAQgBSALIAkgACgCACgCJBENADYCDCAGIApqQQFqIQYMAQsgAkEBIAYsAAAQsAQEQANAIAcgBkEBaiIGRwRAIAJBASAGLAAAELAEDQELCwNAIAhBDGogCEEIahCuBA0CIAJBASAIQQxqEK8EELAERQ0CIAhBDGoQsQQaDAALAAsgAiAIQQxqEK8EEJEGIAIgBiwAABCRBkYEQCAGQQFqIQYgCEEMahCxBBoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqEK4EBEAgBCAEKAIAQQJyNgIACyAIKAIMIQYgCEEQaiQAIAYLEwAgACABQQAgACgCACgCJBEEAAsEAEECC0EBAX8jAEEQayIGJAAgBkKlkOmp0snOktMANwMIIAAgASACIAMgBCAFIAZBCGogBkEQahDwBiEFIAZBEGokACAFCzEAIAAgASACIAMgBCAFIABBCGogACgCCCgCFBEAACIAEOAEIAAQ4AQgABDnBGoQ8AYLVQEBfyMAQRBrIgYkACAGIAE2AgwgBkEIaiADELIFIAZBCGoQrAQhASAGQQhqEIkGIAAgBUEYaiAGQQxqIAIgBCABEPYGIAYoAgwhASAGQRBqJAAgAQtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQjQYgAGsiAEGnAUwEQCABIABBDG1BB282AgALC1UBAX8jAEEQayIGJAAgBiABNgIMIAZBCGogAxCyBSAGQQhqEKwEIQEgBkEIahCJBiAAIAVBEGogBkEMaiACIAQgARD4BiAGKAIMIQEgBkEQaiQAIAELQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEI0GIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtTAQF/IwBBEGsiBiQAIAYgATYCDCAGQQhqIAMQsgUgBkEIahCsBCEBIAZBCGoQiQYgBUEUaiAGQQxqIAIgBCABEPoGIAYoAgwhASAGQRBqJAAgAQtCACABIAIgAyAEQQQQ+wYhBCADLQAAQQRxRQRAIAAgBEHQD2ogBEHsDmogBCAEQeQASRsgBEHFAEgbQewOazYCAAsLvgEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahCuBA0AGkEEIANBwAAgABCvBCIGELAERQ0AGiADIAYQ8QYhAQNAAkAgABCxBBogAUEwayEBIAAgBUEMahCuBA0AIARBAkgNACADQcAAIAAQrwQiBhCwBEUNAyAEQQFrIQQgAyAGEPEGIAFBCmxqIQEMAQsLIAAgBUEMahCuBEUNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELhw0BAX8jAEEQayIHJAAgByABNgIMIARBADYCACAHIAMQsgUgBxCsBCEIIAcQiQYCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHBAGsOOQABFwQXBRcGBxcXFwoXFxcXDg8QFxcXExUXFxcXFxcXAAECAwMXFwEXCBcXCQsXDBcNFwsXFxESFBYLIAAgBUEYaiAHQQxqIAIgBCAIEPYGDBgLIAAgBUEQaiAHQQxqIAIgBCAIEPgGDBcLIABBCGogACgCCCgCDBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARDgBCABEOAEIAEQ5wRqEPAGNgIMDBYLIAVBDGohACAHQQxqIAIgBCAIQQIQ+wYhCCAEKAIAIQICQAJAIAhBAWtBHksNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMFQsgB0Kl2r2pwuzLkvkANwMAIAcgACABIAIgAyAEIAUgByAHQQhqEPAGNgIMDBQLIAdCpbK1qdKty5LkADcDACAHIAAgASACIAMgBCAFIAcgB0EIahDwBjYCDAwTCyAFQQhqIQAgB0EMaiACIAQgCEECEPsGIQggBCgCACECAkACQCAIQRdKDQAgAkEEcQ0AIAAgCDYCAAwBCyAEIAJBBHI2AgALDBILIAVBCGohACAHQQxqIAIgBCAIQQIQ+wYhCCAEKAIAIQICQAJAIAhBAWtBC0sNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMEQsgBUEcaiEAIAdBDGogAiAEIAhBAxD7BiEIIAQoAgAhAgJAAkAgCEHtAkoNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMEAsgBUEQaiEAIAdBDGogAiAEIAhBAhD7BiECIAQoAgAhCAJAAkAgAkEBayICQQtLDQAgCEEEcQ0AIAAgAjYCAAwBCyAEIAhBBHI2AgALDA8LIAVBBGohACAHQQxqIAIgBCAIQQIQ+wYhCCAEKAIAIQICQAJAIAhBO0oNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMDgsgB0EMaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqEK4EDQAgCEEBIAAQrwQQsARFDQAgABCxBBoMAQsLIAAgAUEMahCuBARAIAQgBCgCAEECcjYCAAsgAUEQaiQADA0LIAVBCGohASAHQQxqIQMCQCAAQQhqIAAoAggoAggRAAAiABDnBEEAIABBDGoQ5wRrRgRAIAQgBCgCAEEEcjYCAAwBCyADIAIgACAAQRhqIAggBEEAEI0GIQQgASgCACEIAkAgACAERw0AIAhBDEcNACABQQA2AgAMAQsCQCAEIABrQQxHDQAgCEELSg0AIAEgCEEMajYCAAsLDAwLIAdBqL4BKAAANgAHIAdBob4BKQAANwMAIAcgACABIAIgAyAEIAUgByAHQQtqEPAGNgIMDAsLIAdBsL4BLQAAOgAEIAdBrL4BKAAANgIAIAcgACABIAIgAyAEIAUgByAHQQVqEPAGNgIMDAoLIAdBDGogAiAEIAhBAhD7BiEIIAQoAgAhAgJAAkAgCEE8Sg0AIAJBBHENACAFIAg2AgAMAQsgBCACQQRyNgIACwwJCyAHQqWQ6anSyc6S0wA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQ8AY2AgwMCAsgBUEYaiEAIAdBDGogAiAEIAhBARD7BiEIIAQoAgAhAgJAAkAgCEEGSg0AIAJBBHENACAAIAg2AgAMAQsgBCACQQRyNgIACwwHCyAAIAEgAiADIAQgBSAAKAIAKAIUEQkADAcLIABBCGogACgCCCgCGBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARDgBCABEOAEIAEQ5wRqEPAGNgIMDAULIAVBFGogB0EMaiACIAQgCBD6BgwECyAFQRRqIQAgB0EMaiACIAQgCEEEEPsGIQggBC0AAEEEcUUEQCAAIAhB7A5rNgIACwwDCyAGQSVGDQELIAQgBCgCAEEEcjYCAAwBCyMAQRBrIgAkACAAIAI2AgwCQCAEAn9BBiAHQQxqIgEgAEEMahCuBA0AGkEEIAggARCvBBDxBkElRw0AGiABELEEIABBDGoQrgRFDQFBAgsgBCgCAHI2AgALIABBEGokAAsgBygCDAshBCAHQRBqJAAgBAvVAwEEfyMAQRBrIggkACAIIAI2AgggCCABNgIMIAhBBGogAxCyBSAIQQRqENEEIQIgCEEEahCJBiAEQQA2AgBBACEBAkADQCAGIAdGDQEgAQ0BAkAgCEEMaiAIQQhqENIEDQACQCACIAYoAgAQ/gZBJUYEQCAGQQRqIgEgB0YNAkEAIQkCQAJAIAIgASgCABD+BiIBQcUARg0AQQQhCiABQf8BcUEwRg0AIAEhCwwBCyAGQQhqIgkgB0YNA0EIIQogAiAJKAIAEP4GIQsgASEJCyAIIAAgCCgCDCAIKAIIIAMgBCAFIAsgCSAAKAIAKAIkEQ0ANgIMIAYgCmpBBGohBgwBCyACQQEgBigCABDUBARAA0AgByAGQQRqIgZHBEAgAkEBIAYoAgAQ1AQNAQsLA0AgCEEMaiAIQQhqENIEDQIgAkEBIAhBDGoQ0wQQ1ARFDQIgCEEMahDVBBoMAAsACyACIAhBDGoQ0wQQrAUgAiAGKAIAEKwFRgRAIAZBBGohBiAIQQxqENUEGgwBCyAEQQQ2AgALIAQoAgAhAQwBCwsgBEEENgIACyAIQQxqIAhBCGoQ0gQEQCAEIAQoAgBBAnI2AgALIAgoAgwhBiAIQRBqJAAgBgsTACAAIAFBACAAKAIAKAI0EQQAC14BAX8jAEEgayIGJAAgBkHovwEpAwA3AxggBkHgvwEpAwA3AxAgBkHYvwEpAwA3AwggBkHQvwEpAwA3AwAgACABIAIgAyAEIAUgBiAGQSBqEP0GIQUgBkEgaiQAIAULNAAgACABIAIgAyAEIAUgAEEIaiAAKAIIKAIUEQAAIgAQ4AQgABDgBCAAEOcEQQJ0ahD9BgtVAQF/IwBBEGsiBiQAIAYgATYCDCAGQQhqIAMQsgUgBkEIahDRBCEBIAZBCGoQiQYgACAFQRhqIAZBDGogAiAEIAEQggcgBigCDCEBIAZBEGokACABC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABC0BiAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLVQEBfyMAQRBrIgYkACAGIAE2AgwgBkEIaiADELIFIAZBCGoQ0QQhASAGQQhqEIkGIAAgBUEQaiAGQQxqIAIgBCABEIQHIAYoAgwhASAGQRBqJAAgAQtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQtAYgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC1MBAX8jAEEQayIGJAAgBiABNgIMIAZBCGogAxCyBSAGQQhqENEEIQEgBkEIahCJBiAFQRRqIAZBDGogAiAEIAEQhgcgBigCDCEBIAZBEGokACABC0IAIAEgAiADIARBBBCHByEEIAMtAABBBHFFBEAgACAEQdAPaiAEQewOaiAEIARB5ABJGyAEQcUASBtB7A5rNgIACwu+AQECfyMAQRBrIgUkACAFIAE2AgxBACEBAkAgAgJ/QQYgACAFQQxqENIEDQAaQQQgA0HAACAAENMEIgYQ1ARFDQAaIAMgBhD+BiEBA0ACQCAAENUEGiABQTBrIQEgACAFQQxqENIEDQAgBEECSA0AIANBwAAgABDTBCIGENQERQ0DIARBAWshBCADIAYQ/gYgAUEKbGohAQwBCwsgACAFQQxqENIERQ0BQQILIAIoAgByNgIACyAFQRBqJAAgAQvsDQEBfyMAQTBrIgckACAHIAE2AiwgBEEANgIAIAcgAxCyBSAHENEEIQggBxCJBgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQcEAaw45AAEXBBcFFwYHFxcXChcXFxcODxAXFxcTFRcXFxcXFxcAAQIDAxcXARcIFxcJCxcMFw0XCxcXERIUFgsgACAFQRhqIAdBLGogAiAEIAgQggcMGAsgACAFQRBqIAdBLGogAiAEIAgQhAcMFwsgAEEIaiAAKAIIKAIMEQAAIQEgByAAIAcoAiwgAiADIAQgBSABEOAEIAEQ4AQgARDnBEECdGoQ/QY2AiwMFgsgBUEMaiEAIAdBLGogAiAEIAhBAhCHByEIIAQoAgAhAgJAAkAgCEEBa0EeSw0AIAJBBHENACAAIAg2AgAMAQsgBCACQQRyNgIACwwVCyAHQdi+ASkDADcDGCAHQdC+ASkDADcDECAHQci+ASkDADcDCCAHQcC+ASkDADcDACAHIAAgASACIAMgBCAFIAcgB0EgahD9BjYCLAwUCyAHQfi+ASkDADcDGCAHQfC+ASkDADcDECAHQei+ASkDADcDCCAHQeC+ASkDADcDACAHIAAgASACIAMgBCAFIAcgB0EgahD9BjYCLAwTCyAFQQhqIQAgB0EsaiACIAQgCEECEIcHIQggBCgCACECAkACQCAIQRdKDQAgAkEEcQ0AIAAgCDYCAAwBCyAEIAJBBHI2AgALDBILIAVBCGohACAHQSxqIAIgBCAIQQIQhwchCCAEKAIAIQICQAJAIAhBAWtBC0sNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMEQsgBUEcaiEAIAdBLGogAiAEIAhBAxCHByEIIAQoAgAhAgJAAkAgCEHtAkoNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMEAsgBUEQaiEAIAdBLGogAiAEIAhBAhCHByECIAQoAgAhCAJAAkAgAkEBayICQQtLDQAgCEEEcQ0AIAAgAjYCAAwBCyAEIAhBBHI2AgALDA8LIAVBBGohACAHQSxqIAIgBCAIQQIQhwchCCAEKAIAIQICQAJAIAhBO0oNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMDgsgB0EsaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqENIEDQAgCEEBIAAQ0wQQ1ARFDQAgABDVBBoMAQsLIAAgAUEMahDSBARAIAQgBCgCAEECcjYCAAsgAUEQaiQADA0LIAVBCGohASAHQSxqIQMCQCAAQQhqIAAoAggoAggRAAAiABDnBEEAIABBDGoQ5wRrRgRAIAQgBCgCAEEEcjYCAAwBCyADIAIgACAAQRhqIAggBEEAELQGIQQgASgCACEIAkAgACAERw0AIAhBDEcNACABQQA2AgAMAQsCQCAEIABrQQxHDQAgCEELSg0AIAEgCEEMajYCAAsLDAwLIAdBgL8BQSwQ1wMiBiAAIAEgAiADIAQgBSAGIAZBLGoQ/QY2AiwMCwsgB0HAvwEoAgA2AhAgB0G4vwEpAwA3AwggB0GwvwEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBFGoQ/QY2AiwMCgsgB0EsaiACIAQgCEECEIcHIQggBCgCACECAkACQCAIQTxKDQAgAkEEcQ0AIAUgCDYCAAwBCyAEIAJBBHI2AgALDAkLIAdB6L8BKQMANwMYIAdB4L8BKQMANwMQIAdB2L8BKQMANwMIIAdB0L8BKQMANwMAIAcgACABIAIgAyAEIAUgByAHQSBqEP0GNgIsDAgLIAVBGGohACAHQSxqIAIgBCAIQQEQhwchCCAEKAIAIQICQAJAIAhBBkoNACACQQRxDQAgACAINgIADAELIAQgAkEEcjYCAAsMBwsgACABIAIgAyAEIAUgACgCACgCFBEJAAwHCyAAQQhqIAAoAggoAhgRAAAhASAHIAAgBygCLCACIAMgBCAFIAEQ4AQgARDgBCABEOcEQQJ0ahD9BjYCLAwFCyAFQRRqIAdBLGogAiAEIAgQhgcMBAsgBUEUaiEAIAdBLGogAiAEIAhBBBCHByEIIAQtAABBBHFFBEAgACAIQewOazYCAAsMAwsgBkElRg0BCyAEIAQoAgBBBHI2AgAMAQsjAEEQayIAJAAgACACNgIMAkAgBAJ/QQYgB0EsaiIBIABBDGoQ0gQNABpBBCAIIAEQ0wQQ/gZBJUcNABogARDVBCAAQQxqENIERQ0BQQILIAQoAgByNgIACyAAQRBqJAALIAcoAiwLIQQgB0EwaiQAIAQLkQIBA38jAEGAAWsiAiQAIAIgAkH0AGo2AgwgAEEIaiACQRBqIAJBDGogBCAFIAYQigcgAigCDCEDIwBBEGsiACQAIABBCGohBiMAQSBrIgQkACAEQRhqIAJBEGoiByADEJEFIARBEGohCCAEKAIYIQUgBCgCHCEJIwBBEGsiAyQAIAMgBTYCCCADIAE2AgwDQCAFIAlHBEAgA0EMaiAFLAAAEMcEIAMgBUEBaiIFNgIIDAELCyAIIANBCGogA0EMahCVBSADQRBqJAAgBCAHIAQoAhAQkwU2AgwgBCAEKAIUNgIIIAYgBEEMaiAEQQhqEJUFIARBIGokACAAKAIMIQEgAEEQaiQAIAJBgAFqJAAgAQtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEIsHCyACIAEgASACKAIAEKEFIAZBDGogAyAAKAIAEPsFIAFqNgIAIAZBEGokAAscAQF/IAAtAAAhAiAAIAEtAAA6AAAgASACOgAAC7cDAQN/IwBBoANrIgIkACACIAJBoANqNgIMIwBBkAFrIgMkACADIANBhAFqNgIcIABBCGoiACADQSBqIANBHGogBCAFIAYQigcgA0IANwMQIAMgA0EgajYCDCACQRBqIgQgAkEMaiIFKAIAEI0HIQcgACgCACEGIwBBEGsiACQAIAAgBjYCDCAAQQhqIABBDGoQsAYhBiAEIANBDGogByADQRBqEP4FIQcgBhCxBiAAQRBqJAAgByIAQX9GBEAQ+gQACyAFIAQgAEECdGo2AgAgA0GQAWokACACKAIMIQMjAEEQayIAJAAgAEEIaiEGIwBBIGsiBCQAIARBGGogAkEQaiIHIAMQkQUgBEEQaiEIIAQoAhghBSAEKAIcIQkjAEEQayIDJAAgAyAFNgIIIAMgATYCDANAIAUgCUcEQCADQQxqIAUoAgAQ2AQgAyAFQQRqIgU2AggMAQsLIAggA0EIaiADQQxqEJUFIANBEGokACAEIAcgBCgCEBCTBTYCDCAEIAQoAhQ2AgggBiAEQQxqIARBCGoQlQUgBEEgaiQAIAAoAgwhASAAQRBqJAAgAkGgA2okACABCwoAIAEgAGtBAnULBQBB/wALCAAgABDZBBoLDAAgAEEBQS0Q3gYaCwwAIABBgoaAIDYAAAsIAEH/////BwsMACAAQQFBLRDtBhoLyAEBBH8jAEEQayIEJAACQCABEOIERQRAIAAgASgCCDYCCCAAIAEpAgA3AgAgABDjBBoMAQsgASgCACEFIAEoAgQhASMAQRBrIgIkAAJAAkACQCABEKIFBEAgACEDIAAgARCcBQwBCyABQff///8HSw0BIAJBCGogARCjBUEBahCkBSACKAIMGiAAIAIoAggiAxClBSAAIAIoAgwQpgUgACABEKcFCyADIAUgAUEBahCfBCACQRBqJAAMAQsQqAUACwsgBEEQaiQAC+wDAQF/IwBBkAJrIgAkACAAIAI2AogCIAAgATYCjAIgAEGIBTYCECAAQZgBaiAAQaABaiAAQRBqEPQEIQEgAEGQAWogBBCyBSAAQZABahCsBCEHIABBADoAjwECQCAAQYwCaiACIAMgAEGQAWogBCgCBCAFIABBjwFqIAcgASAAQZQBaiAAQYQCahCWB0UNACAAQf4hKAAANgCHASAAQfchKQAANwOAASAHIABBgAFqIABBigFqIABB9gBqEKwGIABBhwU2AhAgAEEIakEAIABBEGoQ9AQhByAAQRBqIQQCQCAAKAKUASABKAIAa0HjAE4EQCAHIAAoApQBIAEoAgBrQQJqEPADEJAGIAcoAgBFDQEgBygCACEECyAALQCPAUEBRgRAIARBLToAACAEQQFqIQQLIAEoAgAhAgNAIAAoApQBIAJNBEACQCAEQQA6AAAgACAGNgIAIABBEGpBqBIgABDcA0EBRw0AIAcQlAYMBAsFIAQgAEH2AGogAEGAAWogAhCvBiAAayAAai0ACjoAACAEQQFqIQQgAkEBaiECDAELCxD6BAALEPoEAAsgAEGMAmogAEGIAmoQrgQEQCAFIAUoAgBBAnI2AgALIAAoAowCIQIgAEGQAWoQiQYgARCUBiAAQZACaiQAIAIL+hABCn8jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQrgQEQCAFIAUoAgBBBHI2AgBBACEADAELIAtBiAU2AkwgCyALQegAaiALQfAAaiALQcwAahD0BCIPKAIAIgo2AmQgCyAKQZADajYCYCALQcwAahDZBCESIAtBQGsQ2QQhDCALQTRqENkEIQ4gC0EoahDZBCENIAtBHGoQ2QQhECALQdwAaiEKIAtB2wBqIRMgC0HaAGohESMAQRBrIgEkACALAn8gAgRAIAFBBGogAxCdByIDEJ4HIAogASgCBDYAACABQQRqIAMQnwcgDSABQQRqENsEIAFBBGoQyAgaIAFBBGogAxCMBiAOIAFBBGoQ2wQgAUEEahDICBogEyADEMYGOgAAIBEgAxDHBjoAACABQQRqIAMQyAYgEiABQQRqENsEIAFBBGoQyAgaIAFBBGogAxCLBiAMIAFBBGoQ2wQgAUEEahDICBogAxCgBwwBCyABQQRqIAMQoQciAxCeByAKIAEoAgQ2AAAgAUEEaiADEJ8HIA0gAUEEahDbBCABQQRqEMgIGiABQQRqIAMQjAYgDiABQQRqENsEIAFBBGoQyAgaIBMgAxDGBjoAACARIAMQxwY6AAAgAUEEaiADEMgGIBIgAUEEahDbBCABQQRqEMgIGiABQQRqIAMQiwYgDCABQQRqENsEIAFBBGoQyAgaIAMQoAcLNgIYIAFBEGokACAJIAgoAgA2AgAgBEGABHEhE0EAIQNBACEBA0AgASECAkACQAJAAkAgA0EERg0AIAAgC0GMBGoQrgQNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HIAdBASAAEK8EELAEBEAgC0EQaiAAEJcHIBAgCywAEBDKCAwCCyAFIAUoAgBBBHI2AgBBACEADAYLIANBA0YNBgsDQCAAIAtBjARqEK4EDQYgB0EBIAAQrwQQsARFDQYgC0EQaiAAEJcHIBAgCywAEBDKCAwACwALAkAgDhDnBEUNACAAEK8EQf8BcSAOQQAQkgYtAABHDQAgABCxBBogBkEAOgAAIA4gAiAOEOcEQQFLGyEBDAYLAkAgDRDnBEUNACAAEK8EQf8BcSANQQAQkgYtAABHDQAgABCxBBogBkEBOgAAIA0gAiANEOcEQQFLGyEBDAYLAkAgDhDnBEUNACANEOcERQ0AIAUgBSgCAEEEcjYCAEEAIQAMBAsgDhDnBEUEQCANEOcERQ0FCyAGIA0Q5wRFOgAADAQLAkAgA0ECSQ0AIAINACATDQBBACEBIANBAkYgCy0AX0EAR3FFDQULIAsgDBDKBjYCDCALQRBqIAtBDGoQrwUhCgJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIAwQywY2AgwgCiALQQxqEMwGRQ0AIAdBASAKKAIALAAAELAERQ0AIAoQzQYMAQsLIAsgDBDKBjYCDCAKKAIAIAsoAgxrIgEgEBDnBE0EQCALIBAQywY2AgwgC0EMakEAIAFrEKIHIQEgEBDLBiEEIAwQygYhESMAQRBrIhQkACABEK8IIQEgBBCvCCEEIAEgERCvCCAEIAFrENkDRSERIBRBEGokACARDQELIAsgDBDKBjYCCCAKIAtBDGogC0EIahCvBSgCADYCAAsgCyAKKAIANgIMA0ACQCALIAwQywY2AgggC0EMaiALQQhqEMwGRQ0AIAAgC0GMBGoQrgQNACAAEK8EQf8BcSALKAIMLQAARw0AIAAQsQQaIAtBDGoQzQYMAQsLIBNFDQMgCyAMEMsGNgIIIAtBDGogC0EIahDMBkUNAyAFIAUoAgBBBHI2AgBBACEADAILA0ACQCAAIAtBjARqEK4EDQACfyAHQcAAIAAQrwQiARCwBARAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQmAcgCSgCACEECyAJIARBAWo2AgAgBCABOgAAIApBAWoMAQsgEhDnBEUNASAKRQ0BIAstAFogAUH/AXFHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCZByALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAELEEGgwBCwsCQCALKAJkIgEgDygCAEYNACAKRQ0AIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJkHIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqEK4ERQRAIAAQrwRB/wFxIAstAFtGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAELEEGiALKAIYQQBMDQECQCAAIAtBjARqEK4ERQRAIAdBwAAgABCvBBCwBA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEJgHCyAAEK8EIQogCSAJKAIAIgFBAWo2AgAgASAKOgAAIAsgCygCGEEBazYCGAwACwALIAIhASAIKAIAIAkoAgBHDQMgBSAFKAIAQQRyNgIAQQAhAAwBCwJAIAJFDQBBASEKA0AgAhDnBCAKTQ0BAkAgACALQYwEahCuBEUEQCAAEK8EQf8BcSACIAoQkgYtAABGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABCxBBogCkEBaiEKDAALAAtBASEAIA8oAgAgCygCZEYNAEEAIQAgC0EANgIQIBIgDygCACALKAJkIAtBEGoQmgYgCygCEARAIAUgBSgCAEEEcjYCAAwBC0EBIQALIBAQyAgaIA0QyAgaIA4QyAgaIAwQyAgaIBIQyAgaIA8QlAYMAwsgAiEBCyADQQFqIQMMAAsACyALQZAEaiQAIAALIAEBfyABKAIAELYEwCECIAAgASgCADYCBCAAIAI6AAALygEBBn8jAEEQayIEJAAgABCwBSgCACEFQQECfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDIANBAU0bIQMgASgCACEGIAAoAgAhByAFQYgFRgR/QQAFIAAoAgALIAMQ8gMiCARAIAVBiAVHBEAgABD1BBoLIARBhwU2AgQgACAEQQhqIAggBEEEahD0BCIFEKMHIAUQlAYgASAAKAIAIAYgB2tqNgIAIAIgAyAAKAIAajYCACAEQRBqJAAPCxD6BAALygEBBn8jAEEQayIEJAAgABCwBSgCACEFAn8gAigCACAAKAIAayIDQf////8HSQRAIANBAXQMAQtBfwsiA0EEIAMbIQMgASgCACEGIAAoAgAhByAFQYgFRgR/QQAFIAAoAgALIAMQ8gMiCARAIAVBiAVHBEAgABD1BBoLIARBhwU2AgQgACAEQQhqIAggBEEEahD0BCIFEKMHIAUQlAYgASAAKAIAIAYgB2tqNgIAIAIgACgCACADQXxxajYCACAEQRBqJAAPCxD6BAALvgUBBH8jAEGQAWsiACQAIAAgAjYCiAEgACABNgKMASAAQYgFNgIUIABBGGogAEEgaiAAQRRqEPQEIQkgAEEQaiAEELIFIABBEGoQrAQhASAAQQA6AA8gAEGMAWogAiADIABBEGogBCgCBCAFIABBD2ogASAJIABBFGogAEGEAWoQlgcEQCMAQRBrIgIkACAGEOcEGgJAIAYQ4gQEQCAGKAIAIQMgAkEAOgAPIAMgAkEPahCdBSAGQQAQpwUMAQsgAkEAOgAOIAYgAkEOahCdBSAGQQAQnAULIAJBEGokACAALQAPQQFGBEAgBiABQS0QrAUQyggLIAFBMBCsBSEBIAkoAgAhAiAAKAIUIgNBAWshBCABQf8BcSEBA0ACQCACIARPDQAgAi0AACABRw0AIAJBAWohAgwBCwsjAEEQayIIJAAgBhDnBCEEIAYQ6AQhAQJAIAIgAxCgBSIHRQ0AIAYQ4AQgBhDgBCAGEOcEakEBaiACEK4IRQRAIAcgASAEa0sEQCAGIAEgBCABayAHaiAEIAQQmwcLIAYQ4AQgBGohAQNAIAIgA0cEQCABIAIQnQUgAkEBaiECIAFBAWohAQwBCwsgCEEAOgAPIAEgCEEPahCdBSAGIAQgB2oQnAcMAQsgCCACIAMQ5QQiAhDgBCEKIAIQ5wQhASMAQRBrIgckAAJAIAEgBhDoBCIEIAYQ5wQiA2tNBEAgAUUNASAGEOAEIgQgA2ogCiABEJ8EIAYgASADaiIBEJwHIAdBADoADyABIARqIAdBD2oQnQUMAQsgBiAEIAEgBGsgA2ogAyADQQAgASAKEMcICyAHQRBqJAAgAhDICBoLIAhBEGokAAsgAEGMAWogAEGIAWoQrgQEQCAFIAUoAgBBAnI2AgALIAAoAowBIQIgAEEQahCJBiAJEJQGIABBkAFqJAAgAgvSAQEDfyMAQRBrIgUkAAJAIAJB9////wciBiABa00EQCAAEOAEIQcgBUEEaiABIAZBAXZBCGtJBH8gBSABQQF0NgIMIAUgASACajYCBCAFQQRqIAVBDGoQ7gQoAgAQowVBAWoFIAYLEKQFIAUoAgQhBiAFKAIIGiAEBEAgBiAHIAQQnwQLIAMgBEcEQCAEIAZqIAQgB2ogAyAEaxCfBAsgAUEKRwRAIAcQmwULIAAgBhClBSAAIAUoAggQpgUgBUEQaiQADAELEKgFAAsgACADEKcFCxkAIAAQ4gQEQCAAIAEQpwUPCyAAIAEQnAULCwAgAEGoswIQjgYLEQAgACABIAEoAgAoAiwRAgALEQAgACABIAEoAgAoAiARAgALDwAgACAAKAIAKAIkEQAACwsAIABBoLMCEI4GCzkBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGoiACAAKAIAIAFqNgIAIAIoAgwhACACQRBqJAAgAAsgACAAIAEQ9QQQkAYgARCwBSgCACEBIAAQsAUgATYCAAv6AwEBfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABBiAU2AhAgAEHIAWogAEHQAWogAEEQahD0BCEBIABBwAFqIAQQsgUgAEHAAWoQ0QQhByAAQQA6AL8BAkAgAEHsBGogAiADIABBwAFqIAQoAgQgBSAAQb8BaiAHIAEgAEHEAWogAEHgBGoQpQdFDQAgAEH+ISgAADYAtwEgAEH3ISkAADcDsAEgByAAQbABaiAAQboBaiAAQYABahDEBiAAQYcFNgIQIABBCGpBACAAQRBqEPQEIQcgAEEQaiEEAkAgACgCxAEgASgCAGtBiQNOBEAgByAAKALEASABKAIAa0ECdUECahDwAxCQBiAHKAIARQ0BIAcoAgAhBAsgAC0AvwFBAUYEQCAEQS06AAAgBEEBaiEECyABKAIAIQIDQCAAKALEASACTQRAAkAgBEEAOgAAIAAgBjYCACAAQRBqQagSIAAQ3ANBAUcNACAHEJQGDAQLBSAEIABBsAFqIABBgAFqIABBqAFqIAIQxQYgAEGAAWprQQJ1ai0AADoAACAEQQFqIQQgAkEEaiECDAELCxD6BAALEPoEAAsgAEHsBGogAEHoBGoQ0gQEQCAFIAUoAgBBAnI2AgALIAAoAuwEIQIgAEHAAWoQiQYgARCUBiAAQfAEaiQAIAIL5BABCn8jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQ0gQEQCAFIAUoAgBBBHI2AgBBACEADAELIAtBiAU2AkggCyALQegAaiALQfAAaiALQcgAahD0BCIPKAIAIgo2AmQgCyAKQZADajYCYCALQcgAahDZBCESIAtBPGoQ2QQhDCALQTBqENkEIQ4gC0EkahDZBCENIAtBGGoQ2QQhECALQdwAaiEKIAtB2ABqIRMgC0HUAGohESMAQRBrIgEkACALAn8gAgRAIAFBBGogAxCsByIDEJ4HIAogASgCBDYAACABQQRqIAMQnwcgDSABQQRqEK0HIAFBBGoQzAgaIAFBBGogAxCMBiAOIAFBBGoQrQcgAUEEahDMCBogEyADEMYGNgIAIBEgAxDHBjYCACABQQRqIAMQyAYgEiABQQRqENsEIAFBBGoQyAgaIAFBBGogAxCLBiAMIAFBBGoQrQcgAUEEahDMCBogAxCgBwwBCyABQQRqIAMQrgciAxCeByAKIAEoAgQ2AAAgAUEEaiADEJ8HIA0gAUEEahCtByABQQRqEMwIGiABQQRqIAMQjAYgDiABQQRqEK0HIAFBBGoQzAgaIBMgAxDGBjYCACARIAMQxwY2AgAgAUEEaiADEMgGIBIgAUEEahDbBCABQQRqEMgIGiABQQRqIAMQiwYgDCABQQRqEK0HIAFBBGoQzAgaIAMQoAcLNgIUIAFBEGokACAJIAgoAgA2AgAgBEGABHEhE0EAIQNBACEBA0AgASECAkACQAJAAkAgA0EERg0AIAAgC0GMBGoQ0gQNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HIAdBASAAENMEENQEBEAgC0EMaiAAEKYHIBAgCygCDBDNCAwCCyAFIAUoAgBBBHI2AgBBACEADAYLIANBA0YNBgsDQCAAIAtBjARqENIEDQYgB0EBIAAQ0wQQ1ARFDQYgC0EMaiAAEKYHIBAgCygCDBDNCAwACwALAkAgDhDnBEUNACAAENMEIA4Q4AQoAgBHDQAgABDVBBogBkEAOgAAIA4gAiAOEOcEQQFLGyEBDAYLAkAgDRDnBEUNACAAENMEIA0Q4AQoAgBHDQAgABDVBBogBkEBOgAAIA0gAiANEOcEQQFLGyEBDAYLAkAgDhDnBEUNACANEOcERQ0AIAUgBSgCAEEEcjYCAEEAIQAMBAsgDhDnBEUEQCANEOcERQ0FCyAGIA0Q5wRFOgAADAQLAkAgA0ECSQ0AIAINACATDQBBACEBIANBAkYgCy0AX0EAR3FFDQULIAsgDBDKBjYCCCALQQxqIAtBCGoQrwUhCgJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIAwQ4QY2AgggCiALQQhqEMwGRQ0AIAdBASAKKAIAKAIAENQERQ0AIAoQ4gYMAQsLIAsgDBDKBjYCCCAKKAIAIAsoAghrQQJ1IgEgEBDnBE0EQCALIBAQ4QY2AgggC0EIakEAIAFrEK8HIQEgEBDhBiEEIAwQygYhESMAQRBrIhQkACABEK8IIQEgBBCvCCEEIAEgERCvCCAEIAFrQXxxENkDRSERIBRBEGokACARDQELIAsgDBDKBjYCBCAKIAtBCGogC0EEahCvBSgCADYCAAsgCyAKKAIANgIIA0ACQCALIAwQ4QY2AgQgC0EIaiALQQRqEMwGRQ0AIAAgC0GMBGoQ0gQNACAAENMEIAsoAggoAgBHDQAgABDVBBogC0EIahDiBgwBCwsgE0UNAyALIAwQ4QY2AgQgC0EIaiALQQRqEMwGRQ0DIAUgBSgCAEEEcjYCAEEAIQAMAgsDQAJAIAAgC0GMBGoQ0gQNAAJ/IAdBwAAgABDTBCIBENQEBEAgCSgCACIEIAsoAogERgRAIAggCSALQYgEahCZByAJKAIAIQQLIAkgBEEEajYCACAEIAE2AgAgCkEBagwBCyASEOcERQ0BIApFDQEgASALKAJURw0BIAsoAmQiASALKAJgRgRAIA8gC0HkAGogC0HgAGoQmQcgCygCZCEBCyALIAFBBGo2AmQgASAKNgIAQQALIQogABDVBBoMAQsLAkAgCygCZCIBIA8oAgBGDQAgCkUNACALKAJgIAFGBEAgDyALQeQAaiALQeAAahCZByALKAJkIQELIAsgAUEEajYCZCABIAo2AgALAkAgCygCFEEATA0AAkAgACALQYwEahDSBEUEQCAAENMEIAsoAlhGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAENUEGiALKAIUQQBMDQECQCAAIAtBjARqENIERQRAIAdBwAAgABDTBBDUBA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEJkHCyAAENMEIQogCSAJKAIAIgFBBGo2AgAgASAKNgIAIAsgCygCFEEBazYCFAwACwALIAIhASAIKAIAIAkoAgBHDQMgBSAFKAIAQQRyNgIAQQAhAAwBCwJAIAJFDQBBASEKA0AgAhDnBCAKTQ0BAkAgACALQYwEahDSBEUEQCAAENMEIAIgChC1BigCAEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwDCyAAENUEGiAKQQFqIQoMAAsAC0EBIQAgDygCACALKAJkRg0AQQAhACALQQA2AgwgEiAPKAIAIAsoAmQgC0EMahCaBiALKAIMBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBDMCBogDRDMCBogDhDMCBogDBDMCBogEhDICBogDxCUBgwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsfAQF/IAEoAgAQ1wQhAiAAIAEoAgA2AgQgACACNgIAC9kFAQR/IwBBwANrIgAkACAAIAI2ArgDIAAgATYCvAMgAEGIBTYCFCAAQRhqIABBIGogAEEUahD0BCEJIABBEGogBBCyBSAAQRBqENEEIQEgAEEAOgAPIABBvANqIAIgAyAAQRBqIAQoAgQgBSAAQQ9qIAEgCSAAQRRqIABBsANqEKUHBEAjAEEQayICJAAgBhDnBBoCQCAGEOIEBEAgBigCACEDIAJBADYCDCADIAJBDGoQqAcgBkEAEKcFDAELIAJBADYCCCAGIAJBCGoQqAcgBkEAEJwFCyACQRBqJAAgAC0AD0EBRgRAIAYgAUEtEK4FEM0ICyABQTAQrgUhASAJKAIAIQIgACgCFCIDQQRrIQQDQAJAIAIgBE8NACACKAIAIAFHDQAgAkEEaiECDAELCyMAQRBrIggkACAGEOcEIQQgBhCpByEBAkAgAiADEKoHIgdFDQAgBhDgBCAGEOAEIAYQ5wRBAnRqQQRqIAIQrghFBEAgByABIARrSwRAIAYgASAEIAFrIAdqIAQgBBCrBwsgBhDgBCAEQQJ0aiEBA0AgAiADRwRAIAEgAhCoByACQQRqIQIgAUEEaiEBDAELCyAIQQA2AgQgASAIQQRqEKgHIAYgBCAHahCcBwwBCyMAQRBrIgQkACAIQQRqIgEgAiADEIYGIARBEGokACABIgIQ4AQhCiABEOcEIQEjAEEQayIHJAACQCABIAYQqQciBCAGEOcEIgNrTQRAIAFFDQEgBhDgBCIEIANBAnRqIAogARDNBCAGIAEgA2oiARCcByAHQQA2AgwgBCABQQJ0aiAHQQxqEKgHDAELIAYgBCABIARrIANqIAMgA0EAIAEgChDLCAsgB0EQaiQAIAIQzAgaCyAIQRBqJAALIABBvANqIABBuANqENIEBEAgBSAFKAIAQQJyNgIACyAAKAK8AyECIABBEGoQiQYgCRCUBiAAQcADaiQAIAILDAAgACABKAIANgIACxsBAX9BASEBIAAQ4gQEfyAAEO8EQQFrBSABCwsJACAAIAEQjQcL2QEBA38jAEEQayIFJAACQCACQff///8DIgYgAWtNBEAgABDgBCEHIAVBBGogASAGQQF2QQhrSQR/IAUgAUEBdDYCDCAFIAEgAmo2AgQgBUEEaiAFQQxqEO4EKAIAEKkIQQFqBSAGCxCqCCAFKAIEIQYgBSgCCBogBARAIAYgByAEEM0ECyAEIgIgA0cEQCAEQQJ0IgQgBmogBCAHaiADIAJrEM0ECyABQQFHBEAgBxCtCAsgACAGEKUFIAAgBSgCCBCmBSAFQRBqJAAMAQsQqAUACyAAIAMQpwULCwAgAEG4swIQjgYLjwEBA38jAEEQayICJAAgABDiBARAIAAoAgAhAyAAEO8EGiADEK0ICyABEOcEGiABEOIEIQQgACABKAIINgIIIAAgASkCADcCACABQQAQnAUgAkEANgIMIAEgAkEMahCoBwJAIAAgAUYiAw0AIAQNAAsgABDiBCEBAkAgAw0AIAENACAAEOMEGgsgAkEQaiQACwsAIABBsLMCEI4GCzwBAX8jAEEQayICJAAgAiAAKAIANgIMIAJBDGoiACAAKAIAIAFBAnRqNgIAIAIoAgwhACACQRBqJAAgAAvqBAELfyMAQcADayIAJAAgACAFNwMQIAAgBjcDGCAAIABB0AJqNgLMAiAAQdACakGiEiAAQRBqEPcFIQcgAEGHBTYC4AEgAEHYAWpBACAAQeABahD0BCENIABBhwU2AuABIABB0AFqQQAgAEHgAWoQ9AQhCiAAQeABaiEJAkAgB0HkAE8EQBCtBiEHIAAgBTcDACAAIAY3AwggAEHMAmogB0GiEiAAENoGIgdBf0YNASANIAAoAswCEJAGIAogBxDwAxCQBiAKEMQEDQEgCigCACEJCyAAQcwBaiADELIFIABBzAFqEKwEIhEgACgCzAIiCCAHIAhqIAkQrAYgB0EASgRAIAAoAswCLQAAQS1GIQ4LIAIgDiAAQcwBaiAAQcgBaiAAQccBaiAAQcYBaiAAQbgBahDZBCIPIABBrAFqENkEIgggAEGgAWoQ2QQiCyAAQZwBahCxByAAQYcFNgIwIABBKGpBACAAQTBqEPQEIQwCfyAAKAKcASICIAdIBEAgCxDnBCAHIAJrQQF0aiAIEOcEaiAAKAKcAWpBAWoMAQsgCxDnBCAIEOcEaiAAKAKcAWpBAmoLIRAgAEEwaiECIBBB5QBPBEAgDCAQEPADEJAGIAwoAgAiAkUNAQsgAiAAQSRqIABBIGogAygCBCAJIAcgCWogESAOIABByAFqIAAsAMcBIAAsAMYBIA8gCCALIAAoApwBELIHIAEgAiAAKAIkIAAoAiAgAyAEENQGIQcgDBCUBiALEMgIGiAIEMgIGiAPEMgIGiAAQcwBahCJBiAKEJQGIA0QlAYgAEHAA2okACAHDwsQ+gQAC68DAQF/IwBBEGsiCiQAIAkCfyAABEAgAhCdByECAkAgAQRAIApBBGogAhCeByADIAooAgQ2AAAgCkEEaiACEJ8HIAggCkEEahDbBCAKQQRqEMgIGgwBCyAKQQRqIAIQswcgAyAKKAIENgAAIApBBGogAhCMBiAIIApBBGoQ2wQgCkEEahDICBoLIAQgAhDGBjoAACAFIAIQxwY6AAAgCkEEaiACEMgGIAYgCkEEahDbBCAKQQRqEMgIGiAKQQRqIAIQiwYgByAKQQRqENsEIApBBGoQyAgaIAIQoAcMAQsgAhChByECAkAgAQRAIApBBGogAhCeByADIAooAgQ2AAAgCkEEaiACEJ8HIAggCkEEahDbBCAKQQRqEMgIGgwBCyAKQQRqIAIQswcgAyAKKAIENgAAIApBBGogAhCMBiAIIApBBGoQ2wQgCkEEahDICBoLIAQgAhDGBjoAACAFIAIQxwY6AAAgCkEEaiACEMgGIAYgCkEEahDbBCAKQQRqEMgIGiAKQQRqIAIQiwYgByAKQQRqENsEIApBBGoQyAgaIAIQoAcLNgIAIApBEGokAAvnBQEKfyMAQRBrIhUkACACIAA2AgAgA0GABHEhFwNAIBZBBEYEQCANEOcEQQFLBEAgFSANEMoGNgIMIAIgFUEMakEBEKIHIA0QywYgAigCABC0BzYCAAsgA0GwAXEiD0EQRwRAIAEgD0EgRgR/IAIoAgAFIAALNgIACyAVQRBqJAAFAkACQAJAAkACQAJAIAggFmotAAAOBQABAwIEBQsgASACKAIANgIADAQLIAEgAigCADYCACAGQSAQrAUhDyACIAIoAgAiEEEBajYCACAQIA86AAAMAwsgDRCTBg0CIA1BABCSBi0AACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwCCyAMEJMGIQ8gF0UNASAPDQEgAiAMEMoGIAwQywYgAigCABC0BzYCAAwBCyACKAIAIRggBCAHaiIEIQ8DQAJAIAUgD00NACAGQcAAIA8sAAAQsARFDQAgD0EBaiEPDAELCyAOIhBBAEoEQANAAkAgBCAPTw0AIBBFDQAgEEEBayEQIA9BAWsiDy0AACERIAIgAigCACISQQFqNgIAIBIgEToAAAwBCwsgEAR/IAZBMBCsBQVBAAshEgNAIAIgAigCACIRQQFqNgIAIBBBAEoEQCARIBI6AAAgEEEBayEQDAELCyARIAk6AAALAkAgBCAPRgRAIAZBMBCsBSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwBCyALEJMGBH9BfwUgC0EAEJIGLAAACyETQQAhEEEAIRQDQCAEIA9GDQECQCAQIBNHBEAgECERDAELIAIgAigCACIRQQFqNgIAIBEgCjoAAEEAIREgCxDnBCAUQQFqIhRNBEAgECETDAELIAsgFBCSBi0AAEH/AEYEQEF/IRMMAQsgCyAUEJIGLAAAIRMLIA9BAWsiDy0AACEQIAIgAigCACISQQFqNgIAIBIgEDoAACARQQFqIRAMAAsACyAYIAIoAgAQ7gYLIBZBAWohFgwBCwsLEQAgACABIAEoAgAoAigRAgALqAEBA38jAEEQayIEJAAjAEEgayIDJAAgA0EYaiAAIAEQsQggA0EQaiADKAIYIAMoAhwgAhCSBSADKAIQIQUjAEEQayIBJAAgASAANgIMIAFBDGogBSABQQxqELAIaxCiByEAIAFBEGokACADIAA2AgwgAyACIAMoAhQQlAU2AgggBEEIaiADQQxqIANBCGoQlQUgA0EgaiQAIAQoAgwhAiAEQRBqJAAgAgujAwEHfyMAQbABayIAJAAgAEGsAWogAxCyBSAAQawBahCsBCEKIAUQ5wQEQCAFQQAQkgYtAAAgCkEtEKwFQf8BcUYhCwsgAiALIABBrAFqIABBqAFqIABBpwFqIABBpgFqIABBmAFqENkEIgwgAEGMAWoQ2QQiBiAAQYABahDZBCIHIABB/ABqELEHIABBhwU2AhAgAEEIakEAIABBEGoQ9AQhCQJ/IAUQ5wQgACgCfEoEQCAFEOcEIQIgACgCfCEIIAcQ5wQgAiAIa0EBdGogBhDnBGogACgCfGpBAWoMAQsgBxDnBCAGEOcEaiAAKAJ8akECagshCCAAQRBqIQICQCAIQeUASQ0AIAkgCBDwAxCQBiAJKAIAIgINABD6BAALIAIgAEEEaiAAIAMoAgQgBRDgBCAFEOAEIAUQ5wRqIAogCyAAQagBaiAALACnASAALACmASAMIAYgByAAKAJ8ELIHIAEgAiAAKAIEIAAoAgAgAyAEENQGIQUgCRCUBiAHEMgIGiAGEMgIGiAMEMgIGiAAQawBahCJBiAAQbABaiQAIAUL8wQBC38jAEGgCGsiACQAIAAgBTcDECAAIAY3AxggACAAQbAHajYCrAcgAEGwB2pBohIgAEEQahD3BSEHIABBhwU2ApAEIABBiARqQQAgAEGQBGoQ9AQhDSAAQYcFNgKQBCAAQYAEakEAIABBkARqEPQEIQogAEGQBGohCQJAIAdB5ABPBEAQrQYhByAAIAU3AwAgACAGNwMIIABBrAdqIAdBohIgABDaBiIHQX9GDQEgDSAAKAKsBxCQBiAKIAdBAnQQ8AMQkAYgChDEBA0BIAooAgAhCQsgAEH8A2ogAxCyBSAAQfwDahDRBCIRIAAoAqwHIgggByAIaiAJEMQGIAdBAEoEQCAAKAKsBy0AAEEtRiEOCyACIA4gAEH8A2ogAEH4A2ogAEH0A2ogAEHwA2ogAEHkA2oQ2QQiDyAAQdgDahDZBCIIIABBzANqENkEIgsgAEHIA2oQtwcgAEGHBTYCMCAAQShqQQAgAEEwahD0BCEMAn8gACgCyAMiAiAHSARAIAsQ5wQgByACa0EBdGogCBDnBGogACgCyANqQQFqDAELIAsQ5wQgCBDnBGogACgCyANqQQJqCyEQIABBMGohAiAQQeUATwRAIAwgEEECdBDwAxCQBiAMKAIAIgJFDQELIAIgAEEkaiAAQSBqIAMoAgQgCSAJIAdBAnRqIBEgDiAAQfgDaiAAKAL0AyAAKALwAyAPIAggCyAAKALIAxC4ByABIAIgACgCJCAAKAIgIAMgBBDlBiEHIAwQlAYgCxDMCBogCBDMCBogDxDICBogAEH8A2oQiQYgChCUBiANEJQGIABBoAhqJAAgBw8LEPoEAAuvAwEBfyMAQRBrIgokACAJAn8gAARAIAIQrAchAgJAIAEEQCAKQQRqIAIQngcgAyAKKAIENgAAIApBBGogAhCfByAIIApBBGoQrQcgCkEEahDMCBoMAQsgCkEEaiACELMHIAMgCigCBDYAACAKQQRqIAIQjAYgCCAKQQRqEK0HIApBBGoQzAgaCyAEIAIQxgY2AgAgBSACEMcGNgIAIApBBGogAhDIBiAGIApBBGoQ2wQgCkEEahDICBogCkEEaiACEIsGIAcgCkEEahCtByAKQQRqEMwIGiACEKAHDAELIAIQrgchAgJAIAEEQCAKQQRqIAIQngcgAyAKKAIENgAAIApBBGogAhCfByAIIApBBGoQrQcgCkEEahDMCBoMAQsgCkEEaiACELMHIAMgCigCBDYAACAKQQRqIAIQjAYgCCAKQQRqEK0HIApBBGoQzAgaCyAEIAIQxgY2AgAgBSACEMcGNgIAIApBBGogAhDIBiAGIApBBGoQ2wQgCkEEahDICBogCkEEaiACEIsGIAcgCkEEahCtByAKQQRqEMwIGiACEKAHCzYCACAKQRBqJAALkQYBCn8jAEEQayIUJAAgAiAANgIAQQRBACAHGyEWIANBgARxIRcDQCAVQQRGBEAgDRDnBEEBSwRAIBQgDRDKBjYCDCACIBRBDGpBARCvByANEOEGIAIoAgAQuQc2AgALIANBsAFxIgdBEEcEQCABIAdBIEYEfyACKAIABSAACzYCAAsgFEEQaiQABQJAAkACQAJAAkACQCAIIBVqLQAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgEK4FIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAMLIA0QkwYNAiANQQAQtQYoAgAhByACIAIoAgAiD0EEajYCACAPIAc2AgAMAgsgDBCTBiEHIBdFDQEgBw0BIAIgDBDKBiAMEOEGIAIoAgAQuQc2AgAMAQsgAigCACEYIAQgFmoiBCEHA0ACQCAFIAdNDQAgBkHAACAHKAIAENQERQ0AIAdBBGohBwwBCwsgDkEASgRAIAIoAgAhDyAOIRADQAJAIAQgB08NACAQRQ0AIBBBAWshECAHQQRrIgcoAgAhEiACIA9BBGoiETYCACAPIBI2AgAgESEPDAELCwJAIBBFBEBBACERDAELIAZBMBCuBSERIAIoAgAhDwsDQCAPQQRqIRIgEEEASgRAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIBI2AgAgDyAJNgIACwJAIAQgB0YEQCAGQTAQrgUhDyACIAIoAgAiEEEEaiIHNgIAIBAgDzYCAAwBCyALEJMGBH9BfwUgC0EAEJIGLAAACyERQQAhD0EAIRMDQCAEIAdHBEACQCAPIBFHBEAgDyEQDAELIAIgAigCACIQQQRqNgIAIBAgCjYCAEEAIRAgCxDnBCATQQFqIhNNBEAgDyERDAELIAsgExCSBi0AAEH/AEYEQEF/IREMAQsgCyATEJIGLAAAIRELIAdBBGsiBygCACEPIAIgAigCACISQQRqNgIAIBIgDzYCACAQQQFqIQ8MAQsLIAIoAgAhBwsgGCAHEO8GCyAVQQFqIRUMAQsLC6sBAQN/IwBBEGsiBCQAIwBBIGsiAyQAIANBGGogACABELEIIANBEGogAygCGCADKAIcIAIQmAUgAygCECEFIwBBEGsiASQAIAEgADYCDCABQQxqIAUgAUEMahCwCGtBAnUQrwchACABQRBqJAAgAyAANgIMIAMgAiADKAIUEJQFNgIIIARBCGogA0EMaiADQQhqEJUFIANBIGokACAEKAIMIQIgBEEQaiQAIAILqgMBB38jAEHgA2siACQAIABB3ANqIAMQsgUgAEHcA2oQ0QQhCiAFEOcEBEAgBUEAELUGKAIAIApBLRCuBUYhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqENkEIgwgAEG4A2oQ2QQiBiAAQawDahDZBCIHIABBqANqELcHIABBhwU2AhAgAEEIakEAIABBEGoQ9AQhCQJ/IAUQ5wQgACgCqANKBEAgBRDnBCECIAAoAqgDIQggBxDnBCACIAhrQQF0aiAGEOcEaiAAKAKoA2pBAWoMAQsgBxDnBCAGEOcEaiAAKAKoA2pBAmoLIQggAEEQaiECAkAgCEHlAEkNACAJIAhBAnQQ8AMQkAYgCSgCACICDQAQ+gQACyACIABBBGogACADKAIEIAUQ4AQgBRDgBCAFEOcEQQJ0aiAKIAsgAEHYA2ogACgC1AMgACgC0AMgDCAGIAcgACgCqAMQuAcgASACIAAoAgQgACgCACADIAQQ5QYhBSAJEJQGIAcQzAgaIAYQzAgaIAwQyAgaIABB3ANqEIkGIABB4ANqJAAgBQsEAEF/CwkAIAAgBRCUBwvGAQAjAEEQayIEJAACQCAFEOIERQRAIAAgBSgCCDYCCCAAIAUpAgA3AgAgABDjBBoMAQsgBSgCACEDIAUoAgQhBSMAQRBrIgIkAAJAAkACQCAFEKgIBEAgACEBIAAgBRCcBQwBCyAFQff///8DSw0BIAJBCGogBRCpCEEBahCqCCACKAIMGiAAIAIoAggiARClBSAAIAIoAgwQpgUgACAFEKcFCyABIAMgBUEBahDNBCACQRBqJAAMAQsQqAUACwsgBEEQaiQACyEAIABByMgBNgIAIAAoAggQrQZHBEAgACgCCBD9BQsgAAsgACAAIAFBAWs2AgQgAEHo8wE2AgAgAEHAywE2AgAgAAsLACAAIAE2AgAgAAt7AQN/IwBBEGsiBCQAIARBBGoiAiAANgIAIAIgACgCBCIDNgIEIAIgAyABQQJ0ajYCCCACIgMoAgQhASACKAIIIQIDQCABIAJGBEAgAygCACADKAIENgIEIARBEGokAAUgABC0CBogARC3CCADIAFBBGoiATYCBAwBCwsLEAAgACgCBCAAKAIAa0ECdQsMACAAIAAoAgAQuAgLggEBA38jAEEQayIBJAAgASAANgIMIwBBEGsiAiQAIAAoAgBBf0cEQCACQQhqIAJBDGogAUEMahDABxDAByEDA0AgACgCAEEBRg0ACyAAKAIARQRAIABBATYCACADENEHIABBfzYCAAsLIAJBEGokACAAKAIEIQAgAUEQaiQAIABBAWsL/QgBDX8jAEEQayIMJAAgARDHByMAQRBrIgokACAKIAE2AgwgDEEMaiAKQQxqEK8FIQEgCkEQaiQAIAEhCiAAQQhqIgEQwgcgAk0EQAJAIAJBAWoiACABEMIHIgVLBEAjAEEgayINJAACQCAAIAVrIgcgASIIELYIKAIAIAgoAgRrQQJ1TQRAIAggBxDBBwwBCyAIELQIIQAgDUEMaiEFAn8gCBDCByAHaiEDIwBBEGsiBiQAIAYgAzYCDCADIAgQswgiBE0EQCAIELkIIgMgBEEBdkkEQCAGIANBAXQ2AgggBkEIaiAGQQxqEO4EKAIAIQQLIAZBEGokACAEDAELEKgFAAshAyAIEMIHIQtBACEEIwBBEGsiBiQAIAZBADYCDCAFQQxqELIIQQRqIAAQwAcaIAMEfyAGQQRqIAUQuwggAxC1CCAGKAIEIQQgBigCCAVBAAshAyAFIAQ2AgAgBSAEIAtBAnRqIgA2AgggBSAANgIEIAUQvAggBCADQQJ0ajYCACAGQRBqJAAjAEEQayIGJAAgBSIAQQhqIgQoAgAhAyAGQQRqIgUgBDYCCCAFIAM2AgAgBSADIAdBAnRqNgIEIAUiBygCACEFA0AgBygCBCAFRwRAIAAQuwgaIAcoAgAQtwggByAHKAIAQQRqIgU2AgAMAQsLIAcoAgggBygCADYCACAGQRBqJAAjAEEQayIHJAAgCBC0CBogB0EIaiAIKAIEEMAHIQUgB0EEaiAIKAIAEMAHIQYgByAAKAIEEMAHIQMgBSgCACEEIAYoAgAhCyADKAIAIQUjAEEQayIGJAAgBkEIaiEOIwBBIGsiAyQAIwBBEGsiCSQAIAkgBDYCDCAJIAs2AgggA0EYaiAJQQxqIAlBCGoQlgUgCUEQaiQAIANBEGohCyADKAIYIQ8gAygCHCEJIwBBEGsiBCQAIAQgCTYCCCAEIA82AgwgBCAFNgIEA0AgBCgCDCAEKAIIRwRAIARBDGoQvggoAgAhCSAEQQRqEL4IIAk2AgAgBEEMahC/CCAEQQRqEL8IDAELCyALIARBDGogBEEEahCVBSAEQRBqJAAgAyADKAIQNgIMIAMgAygCFDYCCCAOIANBDGogA0EIahCVBSADQSBqJAAgBigCDCEFIAZBEGokACAHIAU2AgwgACAHKAIMNgIEIAggAEEEahDhBCAIQQRqIABBCGoQ4QQgCBC2CCAAELwIEOEEIAAgACgCBDYCACAIEMIHGiAHQRBqJAAgACgCBCEFA0AgBSAAKAIIRwRAIAAQuwgaIAAgACgCCEEEazYCCAwBCwsgACgCAARAIAAQuwghCCAAKAIAIQcgABC8CCgCABogACgCABogCCAHELoICwsgDUEgaiQADAELIAAgBUkEQCABKAIAIABBAnRqIQAgARDCBxogASAAELgICwsLIAEgAhDGBygCAARAIAEgAhDGBygCABDIBwsgChD1BCEAIAEgAhDGByAANgIAIAooAgAhACAKQQA2AgAgAARAIAAQyAcLIAxBEGokAAsNACAAKAIAIAFBAnRqCxQAIABBBGoiACAAKAIAQQFqNgIACx0AIABBBGoQygdBf0YEQCAAIAAoAgAoAggRAQALC6YBAQR/IABB+L8BNgIAIABBCGohAQNAIAEQwgcgAksEQCABIAIQxgcoAgAEQCABIAIQxgcoAgAQyAcLIAJBAWohAgwBCwsgAEGQAWoQyAgaIwBBEGsiAiQAIAJBDGogARDAByIBKAIAIgMoAgAEQCADEMMHIAEoAgAaIAEoAgAQtAghAyABKAIAIgEoAgAhBCABELkIGiADIAQQuggLIAJBEGokACAACxMAIAAgACgCAEEBayIANgIAIAALCgAgABDJBxDxAwskAQF/IABBCGoiABDCByABSwR/IAAgARDGBygCAEEARwUgAgsLEwAgACABKAIAIgE2AgAgARDOBwsRACAAQfizAkcEQCAAEMcHCwuyCwEIf0GgtQItAABFBEAjAEEQayIFJABBmLUCLQAARQRAIwBBEGsiBiQAIAZBATYCDEH4swIgBigCDBC/ByIBQfi/ATYCACMAQRBrIgMkACABQQhqIgJCADcCACADQQA2AgwgAkEIahCyCEEAOgB8IANBBGogAhDABygCABogA0EAOgAKIwBBEGsiBCQAIAIQswhBHkkEQBCoBQALIARBCGogAhC0CEEeELUIIAIgBCgCCCIHNgIEIAIgBzYCACAEKAIMIQggAhC2CCAHIAhBAnRqNgIAIARBEGokACACQR4QwQcgA0EBOgAKIANBEGokACABQZABakHBGBCxBSACEMIHGiACEMMHQYy/AkEBEL8HQZTUATYCACABQYy/AkHQsgIQxAcQxQdBlL8CQQEQvwdBtNQBNgIAIAFBlL8CQdiyAhDEBxDFB0GcvwJBARC/ByICQQA6AAwgAkEANgIIIAJBjMABNgIAIAJBwMABNgIIIAFBnL8CQbC1AhDEBxDFB0GsvwJBARC/B0H4ywE2AgAgAUGsvwJBqLUCEMQHEMUHQbS/AkEBEL8HQYzNATYCACABQbS/AkG4tQIQxAcQxQdBvL8CQQEQvwciAkHIyAE2AgAgAhCtBjYCCCABQby/AkHAtQIQxAcQxQdByL8CQQEQvwdBoM4BNgIAIAFByL8CQci1AhDEBxDFB0HQvwJBARC/B0GI0AE2AgAgAUHQvwJB2LUCEMQHEMUHQdi/AkEBEL8HQZTPATYCACABQdi/AkHQtQIQxAcQxQdB4L8CQQEQvwdB/NABNgIAIAFB4L8CQeC1AhDEBxDFB0HovwJBARC/ByICQa7YADsBCCACQfjIATYCACACQQxqENkEGiABQei/AkHotQIQxAcQxQdBgMACQQEQvwciAkKugICAwAU3AgggAkGgyQE2AgAgAkEQahDZBBogAUGAwAJB8LUCEMQHEMUHQZzAAkEBEL8HQdTUATYCACABQZzAAkHgsgIQxAcQxQdBpMACQQEQvwdByNYBNgIAIAFBpMACQeiyAhDEBxDFB0GswAJBARC/B0Gc2AE2AgAgAUGswAJB8LICEMQHEMUHQbTAAkEBEL8HQYTaATYCACABQbTAAkH4sgIQxAcQxQdBvMACQQEQvwdB3OEBNgIAIAFBvMACQaCzAhDEBxDFB0HEwAJBARC/B0Hw4gE2AgAgAUHEwAJBqLMCEMQHEMUHQczAAkEBEL8HQeTjATYCACABQczAAkGwswIQxAcQxQdB1MACQQEQvwdB2OQBNgIAIAFB1MACQbizAhDEBxDFB0HcwAJBARC/B0HM5QE2AgAgAUHcwAJBwLMCEMQHEMUHQeTAAkEBEL8HQfDmATYCACABQeTAAkHIswIQxAcQxQdB7MACQQEQvwdBlOgBNgIAIAFB7MACQdCzAhDEBxDFB0H0wAJBARC/B0G46QE2AgAgAUH0wAJB2LMCEMQHEMUHQfzAAkEBEL8HIgJBCGoiA0Gg8wE2AgAgAkHM2wE2AgAgA0H82wE2AgAgAUH8wAJBgLMCEMQHEMUHQYjBAkEBEL8HIgJBCGoiA0HE8wE2AgAgAkHU3QE2AgAgA0GE3gE2AgAgAUGIwQJBiLMCEMQHEMUHQZTBAkEBEL8HIgJBCGoQwQggAkHA3wE2AgAgAUGUwQJBkLMCEMQHEMUHQaDBAkEBEL8HIgJBCGoQwQggAkHc4AE2AgAgAUGgwQJBmLMCEMQHEMUHQazBAkEBEL8HQdzqATYCACABQazBAkHgswIQxAcQxQdBtMECQQEQvwdB1OsBNgIAIAFBtMECQeizAhDEBxDFByAGQRBqJAAgBUH4swI2AghBlLUCIAUoAggQwAcaQZi1AkEBOgAACyAFQRBqJABBnLUCQZS1AhDNB0GgtQJBAToAAAsgAEGctQIoAgAiADYCACAAEM4HCw8AIAAgACgCACgCBBEBAAslACAAKAIAKAIAKAIAQaS1AkGktQIoAgBBAWoiADYCACAANgIECyUAQQAhACACQf8ATQR/IAJBAnRBwMABaigCACABcUEARwUgAAsLSQEBfwNAIAEgAkZFBEBBACEAIAMgASgCACIEQf8ATQR/IARBAnRBwMABaigCAAUgAAs2AgAgA0EEaiEDIAFBBGohAQwBCwsgAQs6AANAAkAgAiADRg0AIAIoAgAiAEH/AE0EQCAAQQJ0QcDAAWooAgAgAXENAQsgAkEEaiECDAELCyACCzoAA0ACQCACIANGDQAgAigCACIAQf8ASw0AIABBAnRBwMABaigCACABcUUNACACQQRqIQIMAQsLIAILHgAgAUH/AE0Ef0HkpQEoAgAgAUECdGooAgAFIAELC0EAA0AgASACRwRAIAEgASgCACIAQf8ATQR/QeSlASgCACABKAIAQQJ0aigCAAUgAAs2AgAgAUEEaiEBDAELCyABCx4AIAFB/wBNBH9B8LEBKAIAIAFBAnRqKAIABSABCwtBAANAIAEgAkcEQCABIAEoAgAiAEH/AE0Ef0HwsQEoAgAgASgCAEECdGooAgAFIAALNgIAIAFBBGohAQwBCwsgAQsEACABCyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsOACABIAIgAUGAAUkbwAs1AANAIAEgAkZFBEAgBCABKAIAIgAgAyAAQYABSRs6AAAgBEEBaiEEIAFBBGohAQwBCwsgAQsrAQF/IABBjMABNgIAAkAgACgCCCIBRQ0AIAAtAAxBAUcNACABEPEDCyAACwoAIAAQ3gcQ8QMLHgAgAUEATgR/QeSlASgCACABQQJ0aigCAAUgAQvAC0AAA0AgASACRwRAIAEgASwAACIAQQBOBH9B5KUBKAIAIAEsAABBAnRqKAIABSAACzoAACABQQFqIQEMAQsLIAELHgAgAUEATgR/QfCxASgCACABQQJ0aigCAAUgAQvAC0AAA0AgASACRwRAIAEgASwAACIAQQBOBH9B8LEBKAIAIAEsAABBAnRqKAIABSAACzoAACABQQFqIQEMAQsLIAELKgADQCABIAJGRQRAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBDAELCyABCwwAIAIgASABQQBIGws0AANAIAEgAkZFBEAgBCADIAEsAAAiACAAQQBIGzoAACAEQQFqIQQgAUEBaiEBDAELCyABCxIAIAQgAjYCACAHIAU2AgBBAwsLACAEIAI2AgBBAws3ACMAQRBrIgAkACAAIAQ2AgwgACADIAJrNgIIIABBDGogAEEIahD4BCgCACEEIABBEGokACAECwoAIAAQvgcQ8QMLuwUBDH8jAEEQayIOJAAgAiEIA0ACQCADIAhGBEAgAyEIDAELIAgoAgBFDQAgCEEEaiEIDAELCyAHIAU2AgAgBCACNgIAAkADQAJAAkACQCACIANGDQAgBSAGRg0AIA4gASkCADcDCEEBIQwgACgCCCERIwBBEGsiDyQAIA8gETYCDCAPQQhqIA9BDGoQsAYhESAFIQkgCCACa0ECdSESIAYgBWshCkEAIRAjAEEQayITJAACQCAEKAIAIgtFDQAgEkUNACAKQQAgBRshDQNAIBNBDGogCSANQQRJGyALKAIAEL4FIgpBf0YEQEF/IRAMAgsgCQR/IA1BA00EQCAKIA1LDQMgCSATQQxqIAoQ1wMaCyANIAprIQ0gCSAKagVBAAshCSALKAIARQRAQQAhCwwCCyAKIBBqIRAgC0EEaiELIBJBAWsiEg0ACwsgCQRAIAQgCzYCAAsgE0EQaiQAIBAhCSARELEGIA9BEGokAAJAAkACQAJAIAlBAWoOAgAIAQsgByAFNgIAA0AgAiAEKAIARg0CIAUgAigCACAAKAIIEOwHIghBf0YNAiAHIAcoAgAgCGoiBTYCACACQQRqIQIMAAsACyAHIAcoAgAgCWoiBTYCACAFIAZGDQEgAyAIRgRAIAQoAgAhAiADIQgMBgsgDkEEakEAIAAoAggQ7AciCEF/Rg0EIA5BBGohAiAGIAcoAgBrIAhJDQYDQCAIBEAgAi0AACEFIAcgBygCACIMQQFqNgIAIAwgBToAACAIQQFrIQggAkEBaiECDAELCyAEIAQoAgBBBGoiAjYCACACIQgDQCADIAhGBEAgAyEIDAULIAgoAgBFDQQgCEEEaiEIDAALAAsgBCACNgIADAMLIAQoAgAhAgsgAiADRyEMDAMLIAcoAgAhBQwBCwtBAiEMCyAOQRBqJAAgDAs6AQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIANBDGoQsAYhAiAAIAEQvgUhACACELEGIANBEGokACAAC90GAQ1/IwBBEGsiEiQAIAIhCANAAkAgAyAIRgRAIAMhCAwBCyAILQAARQ0AIAhBAWohCAwBCwsgByAFNgIAIAQgAjYCAANAAkACfwJAIAIgA0YNACAFIAZGDQAgEiABKQIANwMIIAAoAgghEyMAQRBrIhEkACARIBM2AgwgEUEIaiARQQxqELAGIRMgCCACayENQQAhCiMAQZAIayIMJAAgDCAEKAIAIg82AgwgBiAFa0ECdUGAAiAFGyELIAUgDEEQaiAFGyEQAkACQAJAAkAgD0UNACALRQ0AA0AgDUECdiEJAkAgDUGDAUsNACAJIAtPDQAgDyEJDAQLIBAgDEEMaiAJIAsgCSALSRsgARD+BSEOIAwoAgwhCSAOQX9GBEBBACELQX8hCgwDCyALIA5BACAQIAxBEGpHGyIUayELIBAgFEECdGohECANIA9qIAlrQQAgCRshDSAKIA5qIQogCUUNAiAJIQ8gCw0ACwwBCyAPIQkLIAlFDQELIAtFDQAgDUUNACAKIQ4DQAJAAkAgECAJIA0gARDqAyIKQQJqQQJNBEACQAJAIApBAWoOAgYAAQsgDEEANgIMDAILIAFBADYCAAwBCyAMIAwoAgwgCmoiCTYCDCAOQQFqIQ4gC0EBayILDQELIA4hCgwCCyAQQQRqIRAgDSAKayENIA4hCiANDQALCyAFBEAgBCAMKAIMNgIACyAMQZAIaiQAIAohDyATELEGIBFBEGokAAJAAkACQAJAIApBf0YEQANAIAcgBTYCACACIAQoAgBGDQZBASEGAkACQAJAIAUgAiAIIAJrIBJBCGogACgCCBDuByIFQQJqDgMHAAIBCyAEIAI2AgAMBAsgBSEGCyACIAZqIQIgBygCAEEEaiEFDAALAAsgByAHKAIAIA9BAnRqIgU2AgAgBSAGRg0DIAQoAgAhAiADIAhGBEAgAyEIDAgLIAUgAkEBIAEgACgCCBDuB0UNAQtBAgwECyAHIAcoAgBBBGo2AgAgBCAEKAIAQQFqIgI2AgAgAiEIA0AgAyAIRgRAIAMhCAwGCyAILQAARQ0FIAhBAWohCAwACwALIAQgAjYCAEEBDAILIAQoAgAhAgsgAiADRwshCCASQRBqJAAgCA8LIAcoAgAhBQwACwALPgEBfyMAQRBrIgUkACAFIAQ2AgwgBUEIaiAFQQxqELAGIQQgACABIAIgAxDqAyEDIAQQsQYgBUEQaiQAIAMLkgEBAX8jAEEQayIFJAAgBCACNgIAAn9BAiAFQQxqQQAgACgCCBDsByICQQFqQQJJDQAaQQEgAkEBayICIAMgBCgCAGtLDQAaIAVBDGohAwN/IAIEfyADLQAAIQAgBCAEKAIAIgFBAWo2AgAgASAAOgAAIAJBAWshAiADQQFqIQMMAQVBAAsLCyEDIAVBEGokACADC18BA38gACgCCCECIwBBEGsiASQAIAEgAjYCDCABQQhqIAFBDGoQsAYhAkEAQQBBBBC8BSEDIAIQsQYgAUEQaiQAIAMEQEF/DwsgACgCCCIARQRAQQEPCyAAEPEHQQFGC0IBAn8jAEEQayIBJAAgASAANgIMIAFBCGogAUEMahCwBiEAQQRBAUGMlAIoAgAoAgAbIQIgABCxBiABQRBqJAAgAguTAQEGfwNAAkAgBCAITQ0AIAIgA0YNAEEBIQYgACgCCCEHIwBBEGsiBSQAIAUgBzYCDCAFQQhqIAVBDGoQsAYhB0EAIAIgAyACayABQcyyAiABGxDqAyEJIAcQsQYgBUEQaiQAAkACQCAJQQJqDgMCAgEACyAJIQYLIAhBAWohCCAGIApqIQogAiAGaiECDAELCyAKCxUAIAAoAggiAEUEQEEBDwsgABDxBwvxBQEDfyMAQRBrIgAkACAAIAI2AgwgACAFNgIIAn8gAEEMaiIJIAI2AgAgAEEIaiIBIAU2AgAgCSgCACECAkACQANAIAIgA08EQEEAIQgMAgtBAiEIAkACQCACLwEAIgVB/wBNBEBBASEIIAYgASgCACICa0EATA0EIAEgAkEBajYCACACIAU6AAAMAQsgBUH/D00EQCAGIAEoAgAiAmtBAkgNBSABIAJBAWo2AgAgAiAFQQZ2QcABcjoAACABIAEoAgAiAkEBajYCACACIAVBP3FBgAFyOgAADAELIAVB/68DTQRAIAYgASgCACICa0EDSA0FIAEgAkEBajYCACACIAVBDHZB4AFyOgAAIAEgASgCACICQQFqNgIAIAIgBUEGdkE/cUGAAXI6AAAgASABKAIAIgJBAWo2AgAgAiAFQT9xQYABcjoAAAwBCyAFQf+3A00EQEEBIQggAyACa0EDSA0EIAIvAQIiCkGA+ANxQYC4A0cNAiAGIAEoAgBrQQRIDQQgCkH/B3EgBUEKdEGA+ANxIAVBwAdxIghBCnRyckH//z9LDQIgCSACQQJqNgIAIAEgASgCACICQQFqNgIAIAIgCEEGdkEBaiIIQQJ2QfABcjoAACABIAEoAgAiAkEBajYCACACIAhBBHRBMHEgBUECdkEPcXJBgAFyOgAAIAEgASgCACICQQFqNgIAIAIgCkEGdkEPcSAFQQR0QTBxckGAAXI6AAAgASABKAIAIgVBAWo2AgAgBSAKQT9xQYABcjoAAAwBCyAFQYDAA0kNAyAGIAEoAgAiAmtBA0gNBCABIAJBAWo2AgAgAiAFQQx2QeABcjoAACABIAEoAgAiAkEBajYCACACIAVBBnZBvwFxOgAAIAEgASgCACICQQFqNgIAIAIgBUE/cUGAAXI6AAALIAkgCSgCAEECaiICNgIADAELC0ECDAILIAgMAQtBAQshAiAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACACC8UFAQZ/IwBBEGsiACQAIAAgAjYCDCAAIAU2AggCfyAAQQxqIgwgAjYCACAAQQhqIgsgBTYCAAJAAkADQAJAIAwoAgAiBSADTw0AIAsoAgAiCSAGTw0AQQIhCiAMAn8gBS0AACICwEEATgRAIAkgAjsBACAFQQFqDAELIAJBwgFJDQQgAkHfAU0EQEEBIAMgBWtBAkgNBhogBS0AASIBQcABcUGAAUcNBCAJIAFBP3EgAkEGdEHAD3FyOwEAIAVBAmoMAQsgAkHvAU0EQEEBIQogAyAFayIIQQJIDQQgBS0AASEBAkACQCACQe0BRwRAIAJB4AFHDQEgAUHgAXFBoAFHDQgMAgsgAUHgAXFBgAFHDQcMAQsgAUHAAXFBgAFHDQYLIAhBAkYNBCAFLQACIghBwAFxQYABRw0FIAkgCEE/cSABQT9xQQZ0IAJBDHRycjsBACAFQQNqDAELIAJB9AFLDQRBASEKIAMgBWsiCEECSA0DIAUtAAEhAQJAAkACQAJAIAJB8AFrDgUAAgICAQILIAFB8ABqQf8BcUEwTw0HDAILIAFB8AFxQYABRw0GDAELIAFBwAFxQYABRw0FCyAIQQJGDQMgBS0AAiINQcABcUGAAUcNBCAIQQNGDQMgBS0AAyIFQcABcUGAAUcNBCAGIAlrQQNIDQNBAiEKIAVBP3EiBSANQQZ0IghBwB9xIAFBDHRBgOAPcSACQQdxIgJBEnRycnJB///DAEsNAyAJIA1BBHZBA3EgAkEIdCABQQJ0IgJBwAFxciACQTxxcnJBwP8AakGAsANyOwEAIAsgCUECajYCACAJIAUgCEHAB3FyQYC4A3I7AQIgDCgCAEEEags2AgAgCyALKAIAQQJqNgIADAELCyADIAVLIQoLIAoMAQtBAgshAiAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACACC7cDAQR/AkAgAyACIgBrQQNIDQALA0ACQCAAIANPDQAgBCAGTQ0AAn8gAEEBaiAALQAAIgHAQQBODQAaIAFBwgFJDQEgAUHfAU0EQCADIABrQQJIDQIgAC0AAUHAAXFBgAFHDQIgAEECagwBCyABQe8BTQRAIAMgAGtBA0gNAiAALQACIQcgAC0AASEFAkACQCABQe0BRwRAIAFB4AFHDQEgBUHgAXFBoAFGDQIMBQsgBUHgAXFBgAFHDQQMAQsgBUHAAXFBgAFHDQMLIAdBwAFxQYABRw0CIABBA2oMAQsgAUH0AUsNASADIABrQQRIDQEgBCAGa0ECSQ0BIAAtAAMhCCAALQACIQcgAC0AASEFAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBPDQQMAgsgBUHwAXFBgAFHDQMMAQsgBUHAAXFBgAFHDQILIAdBwAFxQYABRw0BIAhBwAFxQYABRw0BIAhBP3EgB0EGdEHAH3EgAUESdEGAgPAAcSAFQT9xQQx0cnJyQf//wwBLDQEgBkEBaiEGIABBBGoLIQAgBkEBaiEGDAELCyAAIAJrCwQAQQQLmwQBAn8jAEEQayIAJAAgACACNgIMIAAgBTYCCAJ/IABBDGoiCSACNgIAIABBCGoiASAFNgIAIAkoAgAhBQJAA0ACQCADIAVNBEBBACECDAELQQIhAiAFKAIAIgVB///DAEsNACAFQYBwcUGAsANGDQACQCAFQf8ATQRAQQEhAiAGIAEoAgAiCGtBAEwNAiABIAhBAWo2AgAgCCAFOgAADAELIAVB/w9NBEAgBiABKAIAIgJrQQJIDQQgASACQQFqNgIAIAIgBUEGdkHAAXI6AAAgASABKAIAIgJBAWo2AgAgAiAFQT9xQYABcjoAAAwBCyAGIAEoAgAiAmshCCAFQf//A00EQCAIQQNIDQQgASACQQFqNgIAIAIgBUEMdkHgAXI6AAAgASABKAIAIgJBAWo2AgAgAiAFQQZ2QT9xQYABcjoAACABIAEoAgAiAkEBajYCACACIAVBP3FBgAFyOgAADAELIAhBBEgNAyABIAJBAWo2AgAgAiAFQRJ2QfABcjoAACABIAEoAgAiAkEBajYCACACIAVBDHZBP3FBgAFyOgAAIAEgASgCACICQQFqNgIAIAIgBUEGdkE/cUGAAXI6AAAgASABKAIAIgJBAWo2AgAgAiAFQT9xQYABcjoAAAsgCSAJKAIAQQRqIgU2AgAMAQsLIAIMAQtBAQshAiAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACACC/AEAQZ/IwBBEGsiACQAIAAgAjYCDCAAIAU2AggCfyAAQQxqIgsgAjYCACAAQQhqIgogBTYCAAJAAkADQAJAIAsoAgAiAiADTw0AIAooAgAiDCAGTw0AIAIsAAAiAUH/AXEhBQJ/IAFBAE4EQCAFQf//wwBLDQVBAQwBCyABQUJJDQQgAUFfTQRAQQEgAyACa0ECSA0GGkECIQEgAi0AASIIQcABcUGAAUcNBCAIQT9xIAVBBnRBwA9xciEFQQIMAQsgAUFvTQRAQQEhASADIAJrIglBAkgNBCACLQABIQgCQAJAIAVB7QFHBEAgBUHgAUcNASAIQeABcUGgAUYNAgwICyAIQeABcUGAAUYNAQwHCyAIQcABcUGAAUcNBgsgCUECRg0EIAItAAIiCUHAAXFBgAFHDQUgCUE/cSAFQQx0QYDgA3EgCEE/cUEGdHJyIQVBAwwBCyABQXRLDQRBASEBIAMgAmsiCEECSA0DIAItAAEhCQJAAkACQAJAIAVB8AFrDgUAAgICAQILIAlB8ABqQf8BcUEwTw0HDAILIAlB8AFxQYABRw0GDAELIAlBwAFxQYABRw0FCyAIQQJGDQMgAi0AAiINQcABcUGAAUcNBCAIQQNGDQMgAi0AAyIIQcABcUGAAUcNBEECIQEgCEE/cSANQQZ0QcAfcSAFQRJ0QYCA8ABxIAlBP3FBDHRycnIiBUH//8MASw0DQQQLIQEgDCAFNgIAIAsgASACajYCACAKIAooAgBBBGo2AgAMAQsLIAIgA0khAQsgAQwBC0ECCyECIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAIAILpAMBBH8CQCADIAIiAWtBA0gNAAsDQAJAIAEgA08NACAEIAdNDQAgASwAACIAQf8BcSEFAn9BASAAQQBODQAaIABBQkkNASAAQV9NBEAgAyABa0ECSA0CIAEtAAFBwAFxQYABRw0CQQIMAQsgAEFvTQRAIAMgAWtBA0gNAiABLQACIQYgAS0AASEAAkACQCAFQe0BRwRAIAVB4AFHDQEgAEHgAXFBoAFGDQIMBQsgAEHgAXFBgAFHDQQMAQsgAEHAAXFBgAFHDQMLIAZBwAFxQYABRw0CQQMMAQsgAEF0Sw0BIAMgAWtBBEgNASABLQADIQggAS0AAiEGIAEtAAEhAAJAAkACQAJAIAVB8AFrDgUAAgICAQILIABB8ABqQf8BcUEwTw0EDAILIABB8AFxQYABRw0DDAELIABBwAFxQYABRw0CCyAGQcABcUGAAUcNASAIQcABcUGAAUcNASAIQT9xIAZBBnRBwB9xIAVBEnRBgIDwAHEgAEE/cUEMdHJyckH//8MASw0BQQQLIQAgB0EBaiEHIAAgAWohAQwBCwsgASACawsWACAAQfjIATYCACAAQQxqEMgIGiAACwoAIAAQ+wcQ8QMLFgAgAEGgyQE2AgAgAEEQahDICBogAAsKACAAEP0HEPEDCwcAIAAsAAgLBwAgACwACQsMACAAIAFBDGoQlAcLDAAgACABQRBqEJQHCwoAIABBgRMQsQULCwAgAEHAyQEQhQgLqwEBBH8jAEEQayIFJAAgARDACCECIwBBEGsiAyQAAkAgAkH3////A00EQAJAIAIQqAgEQCAAIAIQnAUgACEEDAELIANBCGogAhCpCEEBahCqCCADKAIMGiAAIAMoAggiBBClBSAAIAMoAgwQpgUgACACEKcFCyAEIAEgAhDNBCADQQA2AgQgBCACQQJ0aiADQQRqEKgHIANBEGokAAwBCxCoBQALIAVBEGokAAsKACAAQagTELEFCwsAIABB1MkBEIUIC1MBA38CQCABEN0DIQIgABDoBCEDIAAQ5wQhBCACIANNBEAgABDgBCIDIAEgAhCXBSAAIAMgAhCsCAwBCyAAIAMgAiADayAEQQAgBCACIAEQxwgLC8wBAEH8tQItAAAEQEH4tQIoAgAPC0G4uAItAABFBEBBuLgCQQE6AAALQZC3AkHvCBCICEGctwJB9ggQiAhBqLcCQdQIEIgIQbS3AkHcCBCICEHAtwJBywgQiAhBzLcCQf0IEIgIQdi3AkHmCBCICEHktwJBtg8QiAhB8LcCQZAQEIgIQfy3AkGGExCICEGIuAJB+RQQiAhBlLgCQbkJEIgIQaC4AkHXEBCICEGsuAJB7AoQiAhB/LUCQQE6AABB+LUCQZC3AjYCAEGQtwILHABBuLgCIQADQCAAQQxrEMgIIgBBkLcCRw0ACwvaAQBBhLYCLQAABEBBgLYCKAIADwtB6LkCLQAARQRAQei5AkEBOgAAC0HAuAJBpOwBEI0IQcy4AkHA7AEQjQhB2LgCQdzsARCNCEHkuAJB/OwBEI0IQfC4AkGk7QEQjQhB/LgCQcjtARCNCEGIuQJB5O0BEI0IQZS5AkGI7gEQjQhBoLkCQZjuARCNCEGsuQJBqO4BEI0IQbi5AkG47gEQjQhBxLkCQcjuARCNCEHQuQJB2O4BEI0IQdy5AkHo7gEQjQhBhLYCQQE6AABBgLYCQcC4AjYCAEHAuAILHABB6LkCIQADQCAAQQxrEMwIIgBBwLgCRw0ACwt+AQN/AkAgARDACCECIAAQqQchAyAAEOcEIQQgAiADTQRAIAAQ4AQiAyABIAIQmQUjAEEQayIBJAAgABDnBBogACACEJwHIAFBADYCDCADIAJBAnRqIAFBDGoQqAcgAUEQaiQADAELIAAgAyACIANrIARBACAEIAIgARDLCAsLsAIAQYy2Ai0AAARAQYi2AigCAA8LQZC8Ai0AAEUEQEGQvAJBAToAAAtB8LkCQb4IEIgIQfy5AkG1CBCICEGIugJBjBEQiAhBlLoCQb4QEIgIQaC6AkGECRCICEGsugJB3hMQiAhBuLoCQcYIEIgIQcS6AkHjCRCICEHQugJBlQ4QiAhB3LoCQYQOEIgIQei6AkGMDhCICEH0ugJBnw4QiAhBgLsCQaIQEIgIQYy7AkG7FRCICEGYuwJB0g4QiAhBpLsCQccLEIgIQbC7AkGECRCICEG8uwJBug8QiAhByLsCQbIQEIgIQdS7AkGSERCICEHguwJBog8QiAhB7LsCQeIKEIgIQfi7AkG1CRCICEGEvAJBnxUQiAhBjLYCQQE6AABBiLYCQfC5AjYCAEHwuQILHABBkLwCIQADQCAAQQxrEMgIIgBB8LkCRw0ACwvIAgBBlLYCLQAABEBBkLYCKAIADwtBwL4CLQAARQRAQcC+AkEBOgAAC0GgvAJB+O4BEI0IQay8AkGY7wEQjQhBuLwCQbzvARCNCEHEvAJB1O8BEI0IQdC8AkHs7wEQjQhB3LwCQfzvARCNCEHovAJBkPABEI0IQfS8AkGk8AEQjQhBgL0CQcDwARCNCEGMvQJB6PABEI0IQZi9AkGI8QEQjQhBpL0CQazxARCNCEGwvQJB0PEBEI0IQby9AkHg8QEQjQhByL0CQfDxARCNCEHUvQJBgPIBEI0IQeC9AkHs7wEQjQhB7L0CQZDyARCNCEH4vQJBoPIBEI0IQYS+AkGw8gEQjQhBkL4CQcDyARCNCEGcvgJB0PIBEI0IQai+AkHg8gEQjQhBtL4CQfDyARCNCEGUtgJBAToAAEGQtgJBoLwCNgIAQaC8AgscAEHAvgIhAANAIABBDGsQzAgiAEGgvAJHDQALC1QAQZy2Ai0AAARAQZi2AigCAA8LQei+Ai0AAEUEQEHovgJBAToAAAtB0L4CQZQXEIgIQdy+AkGRFxCICEGctgJBAToAAEGYtgJB0L4CNgIAQdC+AgscAEHovgIhAANAIABBDGsQyAgiAEHQvgJHDQALC1YAQaS2Ai0AAARAQaC2AigCAA8LQYi/Ai0AAEUEQEGIvwJBAToAAAtB8L4CQYDzARCNCEH8vgJBjPMBEI0IQaS2AkEBOgAAQaC2AkHwvgI2AgBB8L4CCxwAQYi/AiEAA0AgAEEMaxDMCCIAQfC+AkcNAAsLGgBBpbYCLQAARQRAQaW2AkEBOgAAC0G0kgILCgBBtJICEMgIGgslAEG0tgItAABFBEBBqLYCQezJARCFCEG0tgJBAToAAAtBqLYCCwoAQai2AhDMCBoLGgBBtbYCLQAARQRAQbW2AkEBOgAAC0HAkgILCgBBwJICEMgIGgslAEHEtgItAABFBEBBuLYCQZDKARCFCEHEtgJBAToAAAtBuLYCCwoAQbi2AhDMCBoLJABB1LYCLQAARQRAQci2AkGhFhCxBUHUtgJBAToAAAtByLYCCwoAQci2AhDICBoLJQBB5LYCLQAARQRAQdi2AkG0ygEQhQhB5LYCQQE6AAALQdi2AgsKAEHYtgIQzAgaCyQAQfS2Ai0AAEUEQEHotgJBpg8QsQVB9LYCQQE6AAALQei2AgsKAEHotgIQyAgaCyUAQYS3Ai0AAEUEQEH4tgJBiMsBEIUIQYS3AkEBOgAAC0H4tgILCgBB+LYCEMwIGgsKACAAEKcIEPEDCx8BAX8gAEEIaiIBKAIAEK0GRwRAIAEoAgAQ/QULIAALBwAgAEECSQskACAAQQJPBH8gAEECakF+cSIAIABBAWsiACAAQQJGGwVBAQsLGQEBfyABEKsIIQIgACABNgIEIAAgAjYCAAscACAAQf////8DSwRAEPoEAAsgAEECdEEEEKkFCzUBAX8jAEEQayIDJAAgABDnBBogACACEJwHIANBADoADyABIAJqIANBD2oQnQUgA0EQaiQACwkAIABBBBCeBQtPAQF/IwBBEGsiAyQAIAMgATYCCCADIAA2AgwgAyACNgIEQQAhASADQQRqIANBDGoQqgVFBEAgA0EEaiADQQhqEKoFIQELIANBEGokACABCycBAX8jAEEQayIBJAAgASAANgIMIAFBDGoQsAghACABQRBqJAAgAAsuAQF/IAAoAgAhACMAQRBrIgEkACABIAA2AgwgAUEMaigCACEAIAFBEGokACAACzcBAX8jAEEQayIDJAAgAyABEK8INgIMIAMgAhCvCDYCCCAAIANBDGogA0EIahCWBSADQRBqJAALCwAgAEEANgIAIAALRAEBfyMAQRBrIgEkACAAELQIGiABQf////8DNgIMIAFB/////wc2AgggAUEMaiABQQhqEPgEKAIAIQAgAUEQaiQAIAALCgAgAEEIahCwBQtJAQF/IwBBEGsiAyQAAkACQCACQR5LDQAgAS0AeEEBcQ0AIAFBAToAeAwBCyACEKsIIQELIANBEGokACAAIAI2AgQgACABNgIACwcAIABBCGoLCQAgAEEANgIACywBAX8gACgCBCECA0AgASACRwRAIAAQtAgaIAJBBGshAgwBCwsgACABNgIECxMAIAAQtggoAgAgACgCAGtBAnULLQEBfyMAQRBrIgIkAAJAIAAgAUYEQCAAQQA6AHgMAQsgARCtCAsgAkEQaiQACwoAIABBDGoQvQgLBwAgAEEMagsKACAAQQRqKAIACwoAIAAoAgBBBGsLDwAgACAAKAIAQQRrNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1CwoAIAAQrQY2AgALFgAgACABIAJCgICAgICAgICAfxD5BQsNACAAIAEgAkJ/EPkFCz8BAn9BASAAIABBAU0bIQEDQAJAIAEQ8AMiAg0AQbzBAigCACIARQ0AIAAREQAMAQsLIAIiAEUEQBCoBQsgAAsNACAAQYyNAjYCACAACx0AIABBACAAQZkBTRtBAXRBoIMCai8BAEGY9AFqC40CAQN/IwBBEGsiCCQAIAJB9////wciCSABQX9zak0EQCAAEOAEIQogCEEEaiABIAlBAXZBCGtJBH8gCCABQQF0NgIMIAggASACajYCBCAIQQRqIAhBDGoQ7gQoAgAQowVBAWoFIAkLEKQFIAgoAgQhCSAIKAIIGiAEBEAgCSAKIAQQnwQLIAYEQCAEIAlqIAcgBhCfBAsgAyAEIAVqIgJrIQcgAiADRwRAIAQgCWogBmogBCAKaiAFaiAHEJ8ECyABQQpHBEAgChCbBQsgACAJEKUFIAAgCCgCCBCmBSAAIAQgBmogB2oiBBCnBSAIQQA6AAwgBCAJaiAIQQxqEJ0FIAhBEGokAA8LEKgFAAsgAQF/IAAQ4gQEQCAAKAIAIQEgABDvBBogARCbBQsgAAtEAQF/IwBBEGsiAyQAIAMgAjoADyADQQ9qIQIDQCABBEAgACACLQAAOgAAIAFBAWshASAAQQFqIQAMAQsLIANBEGokAAu0AQEDfyMAQRBrIgMkACADIAE6AA8CQAJAAn8gABDiBCIERQRAQQohAiAAEOMEDAELIAAQ7wRBAWshAiAAKAIECyIBIAJGBEAgACACQQEgAiACEJsHIAAQ4AQaDAELIAAQ4AQaIAQNACAAIQIgACABQQFqEJwFDAELIAAoAgAhAiAAIAFBAWoQpwULIAEgAmoiACADQQ9qEJ0FIANBADoADiAAQQFqIANBDmoQnQUgA0EQaiQAC54CAQN/IwBBEGsiCCQAIAJB9////wMiCSABQX9zak0EQCAAEOAEIQogCEEEaiABIAlBAXZBCGtJBH8gCCABQQF0NgIMIAggASACajYCBCAIQQRqIAhBDGoQ7gQoAgAQqQhBAWoFIAkLEKoIIAgoAgQhCSAIKAIIGiAEBEAgCSAKIAQQzQQLIAYEQCAEQQJ0IAlqIAcgBhDNBAsgAyAEIAVqIgJrIQcgAiADRwRAIARBAnQiAyAJaiAGQQJ0aiADIApqIAVBAnRqIAcQzQQLIAFBAUcEQCAKEK0ICyAAIAkQpQUgACAIKAIIEKYFIAAgBCAGaiAHaiIEEKcFIAhBADYCDCAJIARBAnRqIAhBDGoQqAcgCEEQaiQADwsQqAUACyABAX8gABDiBARAIAAoAgAhASAAEO8EGiABEK0ICyAAC7cBAQN/IwBBEGsiAyQAIAMgATYCDAJAAkACfyAAEOIEIgRFBEBBASECIAAQ4wQMAQsgABDvBEEBayECIAAoAgQLIgEgAkYEQCAAIAJBASACIAIQqwcgABDgBBoMAQsgABDgBBogBA0AIAAhAiAAIAFBAWoQnAUMAQsgACgCACECIAAgAUEBahCnBQsgAiABQQJ0aiIAIANBDGoQqAcgA0EANgIIIABBBGogA0EIahCoByADQRBqJAALDwAgAEHQAGoQ8ANB0ABqC+cBAQN/IwBBEGsiAiQAQegkQQtBAUGUmgEoAgAiABCSBBogAkEANgIMIABB0CNBABDwBRoCQAJAIAAoAkwiAUEATgRAIAFFDQFBxJMCKAIAIAFB/////wNxRw0BCwJAIAAoAlBBCkYNACAAKAIUIgEgACgCEEYNACAAIAFBAWo2AhQgAUEKOgAADAILIABBChC/BRoMAQsgAEHMAGoiAhC6BRoCQAJAIAAoAlBBCkYNACAAKAIUIgEgACgCEEYNACAAIAFBAWo2AhQgAUEKOgAADAELIABBChC/BRoLIAIQ9QQaCxCPBAALCwAgACABQQAQ0QgLLQAgAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyAAKAIEIAEoAgQQ5AVFC8EBAQJ/IwBBQGoiAyQAAkACf0EBIAAgAUEAENEIDQAaQQAgAUUNABpBACABQaiGAhDTCCIBRQ0AGiACKAIAIgRFDQEgA0EIakEAQTgQ2AMaIANBAToAOyADQX82AhAgAyAANgIMIAMgATYCBCADQQE2AjQgASADQQRqIARBASABKAIAKAIcEQgAIAMoAhwiBEEBRgRAIAIgAygCFDYCAAsgBEEBRgshBCADQUBrJAAgBA8LQZsjQdYOQdkDQYIREBwAC/EDAQV/IwBBEGsiBSQAIAVBBGoiAyAAKAIAIgJBCGsoAgAiBDYCCCADIAAgBGo2AgAgAyACQQRrKAIANgIEIAUoAggiAyABQQAQ0QghAiAFKAIEIQQCQCACBEAgBSgCDCEAIwBBQGoiASQAIAFBQGskAEEAIAQgABshAgwBCyMAQUBqIgIkACAAIAROBEAgAkEcaiIGQgA3AgAgAkIANwIkIAJCADcCLCACQgA3AhQgAkEANgIQIAIgATYCDCACIAM2AgQgAkEANgI8IAJCgYCAgICAgIABNwI0IAIgADYCCCADIAJBBGogBCAEQQFBACADKAIAKAIUEQ4AIABBACAGKAIAGyEGCyACQUBrJAAgBiICDQAjAEFAaiICJAAgAkEANgIQIAJB+IUCNgIMIAIgADYCCCACIAE2AgRBACEAIAJBFGpBAEEnENgDGiACQQA2AjwgAkEBOgA7IAMgAkEEaiAEQQFBACADKAIAKAIYEQ8AAkACQAJAIAIoAigOAgABAgsgAigCGEEAIAIoAiRBAUYbQQAgAigCIEEBRhtBACACKAIsQQFGGyEADAELIAIoAhxBAUcEQCACKAIsDQEgAigCIEEBRw0BIAIoAiRBAUcNAQsgAigCFCEACyACQUBrJAAgACECCyAFQRBqJAAgAgt2AQF/IAAoAiQiA0UEQCAAIAI2AhggACABNgIQIABBATYCJCAAIAAoAjg2AhQPCwJAAkAgACgCFCAAKAI4Rw0AIAAoAhAgAUcNACAAKAIYQQJHDQEgACACNgIYDwsgAEEBOgA2IABBAjYCGCAAIANBAWo2AiQLCxoAIAAgASgCCEEAENEIBEAgASACIAMQ1AgLCzMAIAAgASgCCEEAENEIBEAgASACIAMQ1AgPCyAAKAIIIgAgASACIAMgACgCACgCHBEIAAuBAQEDfyAAKAIEIgRBAXEhBgJ/IAEtADdBAUYEQCAEQQh1IgUgBkUNARogAigCACAFENgIDAELIARBCHUgBkUNABogASAAKAIAKAIENgI4IAAoAgQhBEEAIQJBAAshBSAAKAIAIgAgASACIAVqIANBAiAEQQJxGyAAKAIAKAIcEQgACwoAIAAgAWooAgALcAECfyAAIAEoAghBABDRCARAIAEgAiADENQIDwsgACgCDCEEIABBEGoiBSABIAIgAxDXCAJAIARBAkgNACAFIARBA3RqIQQgAEEYaiEAA0AgACABIAIgAxDXCCABLQA2DQEgAEEIaiIAIARJDQALCwufBQEEfyMAQUBqIgUkAAJAIAFB5IgCQQAQ0QgEQCACQQA2AgBBASEDDAELAkAgACABIAAtAAhBGHEEf0EBBSABRQ0BIAFB2IYCENMIIgRFDQEgBC0ACEEYcUEARwsQ0QghBgsgBgRAQQEhAyACKAIAIgFFDQEgAiABKAIANgIADAELAkAgAUUNACABQYiHAhDTCCIBRQ0BIAIoAgAiBgRAIAIgBigCADYCAAsgASgCCCIGIAAoAggiBEF/c3FBB3ENASAGQX9zIARxQeAAcQ0BQQEhAyAAKAIMIAEoAgxBABDRCA0BIAAoAgxB2IgCQQAQ0QgEQCABKAIMIgFFDQIgAUG8hwIQ0whFIQMMAgsgACgCDCIGRQ0AQQAhAyAGQYiHAhDTCCIEBEAgAC0ACEEBcUUNAgJ/IAEoAgwhAkEAIQACQANAQQAgAkUNAhogAkGIhwIQ0wgiAkUNASACKAIIIAQoAghBf3NxDQFBASAEKAIMIAIoAgxBABDRCA0CGiAELQAIQQFxRQ0BIAQoAgwiAUUNASABQYiHAhDTCCIEBEAgAigCDCECDAELCyABQfiHAhDTCCIERQ0AIAQgAigCDBDbCCEACyAACyEDDAILIAZB+IcCENMIIgQEQCAALQAIQQFxRQ0CIAQgASgCDBDbCCEDDAILIAZBqIYCENMIIgBFDQEgASgCDCIBRQ0BIAFBqIYCENMIIgFFDQEgAigCACEDIAVBCGpBAEE4ENgDGiAFIANBAEc6ADsgBUF/NgIQIAUgADYCDCAFIAE2AgQgBUEBNgI0IAEgBUEEaiADQQEgASgCACgCHBEIACAFKAIcIgFBAUYEQCACIAUoAhRBACADGzYCAAsgAUEBRiEDDAELQQAhAwsgBUFAayQAIAMLTwEBfwJAIAFFDQAgAUH4hwIQ0wgiAUUNACABKAIIIAAoAghBf3NxDQAgACgCDCABKAIMQQAQ0QhFDQAgACgCECABKAIQQQAQ0QghAgsgAguaAQAgAEEBOgA1AkAgACgCBCACRw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwsgAAJAIAAoAgQgAUcNACAAKAIcQQFGDQAgACACNgIcCwuwBAEDfyAAIAEoAgggBBDRCARAIAEgAiADEN0IDwsCQAJAIAAgASgCACAEENEIBEACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQMgAUEBNgIgDwsgASADNgIgIAEoAixBBEYNASAAQRBqIgUgACgCDEEDdGohAwNAAkACQCABAn8CQCADIAVNDQAgAUEAOwE0IAUgASACIAJBASAEEN8IIAEtADYNACABLQA1QQFHDQMgAS0ANEEBRgRAIAEoAhhBAUYNA0EBIQZBASEHIAAtAAhBAnFFDQMMBAtBASEGIAAtAAhBAXENA0EDDAELQQNBBCAGQQFxGws2AiwgBw0FDAQLIAFBAzYCLAwECyAFQQhqIQUMAAsACyAAKAIMIQUgAEEQaiIGIAEgAiADIAQQ4AggBUECSA0BIAYgBUEDdGohBiAAQRhqIQUCQCAAKAIIIgBBAnFFBEAgASgCJEEBRw0BCwNAIAEtADYNAyAFIAEgAiADIAQQ4AggBUEIaiIFIAZJDQALDAILIABBAXFFBEADQCABLQA2DQMgASgCJEEBRg0DIAUgASACIAMgBBDgCCAFQQhqIgUgBkkNAAwDCwALA0AgAS0ANg0CIAEoAiRBAUYEQCABKAIYQQFGDQMLIAUgASACIAMgBBDgCCAFQQhqIgUgBkkNAAsMAQsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsLSwECfyAAKAIEIgdBCHUhBiAHQQFxBEAgAygCACAGENgIIQYLIAAoAgAiACABIAIgAyAGaiAEQQIgB0ECcRsgBSAAKAIAKAIUEQ4AC0kBAn8gACgCBCIGQQh1IQUgBkEBcQRAIAIoAgAgBRDYCCEFCyAAKAIAIgAgASACIAVqIANBAiAGQQJxGyAEIAAoAgAoAhgRDwAL+AEAIAAgASgCCCAEENEIBEAgASACIAMQ3QgPCwJAIAAgASgCACAEENEIBEACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQIgAUEBNgIgDwsgASADNgIgAkAgASgCLEEERg0AIAFBADsBNCAAKAIIIgAgASACIAJBASAEIAAoAgAoAhQRDgAgAS0ANUEBRgRAIAFBAzYCLCABLQA0RQ0BDAMLIAFBBDYCLAsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQEgASgCGEECRw0BIAFBAToANg8LIAAoAggiACABIAIgAyAEIAAoAgAoAhgRDwALC5QBACAAIAEoAgggBBDRCARAIAEgAiADEN0IDwsCQCAAIAEoAgAgBBDRCEUNAAJAIAIgASgCEEcEQCABKAIUIAJHDQELIANBAUcNASABQQE2AiAPCyABIAI2AhQgASADNgIgIAEgASgCKEEBajYCKAJAIAEoAiRBAUcNACABKAIYQQJHDQAgAUEBOgA2CyABQQQ2AiwLC5sCAQZ/IAAgASgCCCAFENEIBEAgASACIAMgBBDcCA8LIAEtADUhByAAKAIMIQYgAUEAOgA1IAEtADQhCCABQQA6ADQgAEEQaiIJIAEgAiADIAQgBRDfCCAIIAEtADQiCnIhCCAHIAEtADUiC3IhBwJAIAZBAkgNACAJIAZBA3RqIQkgAEEYaiEGA0AgAS0ANg0BAkAgCkEBcQRAIAEoAhhBAUYNAyAALQAIQQJxDQEMAwsgC0EBcUUNACAALQAIQQFxRQ0CCyABQQA7ATQgBiABIAIgAyAEIAUQ3wggAS0ANSILIAdyQQFxIQcgAS0ANCIKIAhyQQFxIQggBkEIaiIGIAlJDQALCyABIAdBAXE6ADUgASAIQQFxOgA0CzkAIAAgASgCCCAFENEIBEAgASACIAMgBBDcCA8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBEOAAscACAAIAEoAgggBRDRCARAIAEgAiADIAQQ3AgLCwUAQb4PCwUAQZAVCwUAQdsQCzMBAX8gAEH8jQI2AgAgAEEEaiEBAkAgASgCAEEMayIBQQhqEMoHQQBODQAgARDxAwsgAAsNACAAEOkIGiAAEPEDCwYAIAAkAQsEACMBCw4AQcDBBiQDQcDBAiQCCwcAIwAjAmsLBAAjAwsEACMCCwYAIAAkAAsQACMAIABrQXBxIgAkACAACwQAIwALIgEBfiABIAKtIAOtQiCGhCAEIAARGgAiBUIgiKckASAFpwsZACABIAIgA60gBK1CIIaEIAUgBiAAERsACxkAIAEgAiADIAQgBa0gBq1CIIaEIAARHAALIwAgASACIAMgBCAFrSAGrUIghoQgB60gCK1CIIaEIAARJgALJQAgASACIAMgBCAFIAatIAetQiCGhCAIrSAJrUIghoQgABEnAAscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAdCwuW8QFJAEGECAvOQxwEAAACAAAAAwAAAE4zb2NsM0FyY0UAAGiFAAAQBAAAegBlbXB0eQBpbmZpbml0eQBGZWJydWFyeQBKYW51YXJ5AEp1bHkAVGh1cnNkYXkAVHVlc2RheQBXZWRuZXNkYXkAU2F0dXJkYXkAU3VuZGF5AE1vbmRheQBGcmlkYXkATWF5ACVtLyVkLyV5AEJib3gALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweAB3AE5vdgBUaHUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABBdWd1c3QAdW5zaWduZWQgc2hvcnQAbWF4cHQAbWlucHQAZG90AGFwcGVuZFBvaW50AGFkZFBvaW50AGFkZENMUG9pbnQAQ0NQb2ludAB1bnNpZ25lZCBpbnQAc2V0Q29zTGltaXQAaXNSaWdodAByZXNldABnZXQAZmFjZXQAT2N0AGZsb2F0AFNhdAB1aW50NjRfdABnZXRSYWRpdXMAZ2V0UG9pbnRzAGdldENMUG9pbnRzAGNyb3NzAGdldExvb3BzAGdldENhbGxzAHNldFRocmVhZHMAZ2V0VGhyZWFkcwBBcHIAdmVjdG9yAG1vbmV5X2dldCBlcnJvcgBkaXIAbG93ZXIAdXBkYXRlTG93ZXIAc2V0U3RlcE92ZXIAb2Zmc2V0Q3V0dGVyAGRyb3BDdXR0ZXIAQWRhcHRpdmVQYXRoRHJvcEN1dHRlcgBCYXRjaERyb3BDdXR0ZXIAQ29tcEN5bEN1dHRlcgBCdWxsQ3V0dGVyAENvbXBCYWxsQ3V0dGVyAHB1c2hDdXR0ZXIAQmF0Y2hQdXNoQ3V0dGVyAE1pbGxpbmdDdXR0ZXIAQ3lsQ29uZUN1dHRlcgBCdWxsQ29uZUN1dHRlcgBCYWxsQ29uZUN1dHRlcgBDb25lQ29uZUN1dHRlcgBMaW5lQ0xGaWx0ZXIAZ2V0RGlhbWV0ZXIAdXBwZXIAdXBkYXRlVXBwZXIAU1RMUmVhZGVyAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAGFwcGVuZEZpYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgBzeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAdmVydGV4RHJvcABmYWNldERyb3AAZWRnZURyb3AAU2VwACVJOiVNOiVTICVwAHJ1bgBTdW4ASnVuAHN0ZDo6ZXhjZXB0aW9uAEVsbGlwc2VQb3NpdGlvbgBzZXREaXJlY3Rpb24Ac2V0WURpcmVjdGlvbgBzZXRYRGlyZWN0aW9uAE9wZXJhdGlvbgBNb24Ac2V0T3JpZ2luAG5hbgBKYW4Abm9ybQB4eU5vcm0ASnVsAGJvb2wAbGwAQXByaWwASW50ZXJ2YWwAcHVzaF9iYWNrAEZyaQBiYWRfYXJyYXlfbmV3X2xlbmd0aABnZXRMZW5ndGgAc2V0UGF0aABjYW5fY2F0Y2gATWFyY2gAQXVnAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRTYW1wbGluZwBnZXRTYW1wbGluZwBzZXRNaW5TYW1wbGluZwBaaWdaYWcAU1RMU3VyZgBpbmYAJS4wTGYAJUxmACB2ZXJ0ZXggJWYgJWYgJWYAIGZhY2V0IG5vcm1hbCAlZiAlZiAlZgByZXNpemUAbm9ybWFsaXplAHNldEJ1Y2tldFNpemUAZ2V0QnVja2V0U2l6ZQB0cnVlAFR1ZQB2ZXJ0ZQB6Um90YXRlAHlSb3RhdGUAeFJvdGF0ZQBmYWxzZQBXZWF2ZVZlcnRleFR5cGUATGluZVNwYW5UeXBlAEFyY1NwYW5UeXBlAENDVHlwZQBKdW5lAEFkYXB0aXZlV2F0ZXJsaW5lAGFwcGVuZExpbmUAYWRkVHJpYW5nbGUAc2V0RGlhbmdsZQBkb3VibGUAaXNJbnNpZGUAeHlEaXN0YW5jZQBzZXRUb2xlcmFuY2UAJTAqbGxkACUqbGxkACslbGxkACUrLjRsZAB2b2lkAHNvbGlkAGxvY2FsZSBub3Qgc3VwcG9ydGVkAFdlZAAlWS0lbS0lZABhcHBlbmRBcmMAc3RkOjpiYWRfYWxsb2MARGVjAGxvd2VyX2NjAHVwcGVyX2NjAHdiAHJiAEZlYgBhYgB3K2IAcitiAGErYgByd2EAZW5kZmEAYWFhYWEAX19zdHJfXwAgXQAgIGhlaWdodFsAICB6b2Zmc2V0WwAgIHJhZGl1c1sASSBbAHNldFoAZ2V0WgBFREdFX0hPUklaACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAFZFUlRFWABGVUxMSU5UAEVER0VfU0hBRlQARkFDRVQARURHRV9QT1MAJUg6JU06JVMARURHRV9IT1JJWl9UT1IARVJST1IARkFDRVRfVElQAE5BTgBQTQBBTQAlSDolTQBFREdFX0hPUklaX0NZTABWRVJURVhfQ1lMAEZBQ0VUX0NZTABFREdFX0NZTABzZXRTVEwAZHJvcEN1dHRlclNUTABMQ19BTEwARURHRV9CQUxMAENMAFRXT0FESgBBU0NJSQBMQU5HAEVER0VfTkVHAElORgBFREdFX0NPTkVfQkFTRQBOT05FAENMX0RPTkUARURHRV9DT05FAEVER0UAZ2V0Q0MAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBzdGQ6OnZlY3RvcjxDTFBvaW50PgBzdGQ6OnZlY3RvcjxQb2ludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPFBvaW50Pj4AIHpjdXQ9ACwgdD0AIG9mcz0AIGZpYmVyIGRpcj0ALCByPQBFbGxpcHNlOiBjZW49ACB0cmlhbmdsZT0AICkgYW5kIGRpYW5nbGU9ACwgYW5nbGU9ACBlPQBCdWxsQ3V0dGVyKGQ9AEJhbGxDdXR0ZXIoZD0AQ3lsQ3V0dGVyIChkPQBDb25lQ3V0dGVyIChkPQApIGNjPQAgYj0AIGE9AF09ACwgTD0AIHIyPQBwb2ludC5jcHA6IHh5Q2xvc2VzdFBvaW50IEVSUk9SITogcDI9AHBvaW50LmNwcDogeHlEaXN0YW5jZVRvTGluZSBFUlJPUiE6IHAyPQAsIHIxPQAgZmliZXIucDE9AHBvaW50LmNwcDogeHlDbG9zZXN0UG9pbnQgRVJST1IhOiBwMT0AcG9pbnQuY3BwOiB4eURpc3RhbmNlVG9MaW5lIEVSUk9SITogcDE9AFppZ1phZzogcG9ja2V0LnNpemUoKT0AcG9pbnQuY3BwOiB4eUNsb3Nlc3RQb2ludCBFUlJPUiE6ICp0aGlzID0AcG9pbnQuY3BwOiB4eURpc3RhbmNlVG9MaW5lIEVSUk9SITogKnRoaXMgPQA6ADAxMjM0NTY3ODkAQy5VVEYtOABwMgBydW4yAHAxAC4ALQAgLAB3KwByKwBhKwBNaWxsaW5nQ3V0dGVyIChhbGwgZGVyaXZlZCBjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzKQAobnVsbCkAQ0woAENDKABudW1lcmljOjp4eVZlY3RvclRvRGlhbmdsZSgpIGVycm9yICh4LHkpPSAoACUAYWRqdXN0ZWRQdHIgJiYgImNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/IgBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQBDb21wb3NpdGVDdXR0ZXIgd2l0aCAAIGFuZCAATWlsbGluZ0N1dHRlcjo6ZmFjZXRQdXNoKCkgdHZhbD0gAGVsbGlwc2U9IAAxc3Q6IChzLCB0KT0gADJuZDogKHMsIHQpPSAAIG9lUG9pbnQoKT0gACBmaWJlcjogAGxpYmMrK2FiaTogACB0cmlhbmdsZTogAFQ6IAAgZmliZXIucDIgACAsIAAgICAAIGludGVydmFscwoAIHRvIGxpbmUgdGhyb3VnaAoAcG9pbnQuY3BwOiB4eUNsb3Nlc3RQb2ludCBFUlJPUiE6IGluIHRoZSB4eS1wbGFuZQoAcG9pbnQuY3BwOiB4eURpc3RhbmNlVG9MaW5lIEVSUk9SITogaW4gdGhlIHh5LXBsYW5lCgB0cmlhbmdsZS5jcHA6IHpzbGljZV92ZXJ0cygpIGVycm9yIHdoaWxlIHRyeWluZyB0byB6LXNsaWNlCgAgZXJyb3IhPwoAIGJlbG93IHBvaW50czoKACBhYm92ZSBwb2ludHM6CgAgY3V0dGVyczoKACBFUlJPUjogbm90IGltcGxlbWVudGVkLgoAIChtb3N0IHByb2JhYmx5IGEgdXNlciBlcnJvciwgdGhlIGZpYmVyIGlzIHRvbyBzaG9ydCBjb21wYXJlZCB0byB0aGUgU1RMIG1vZGVsPykKAEVSUk9SOiBjYW4ndCBjYWxsIHJ1bigpIG9uIFBvaW50RHJvcEN1dHRlcigpCgBXQVJOSU5HOiBCdWxsQ3V0dGVyOjpzaW5nbGVFZGdlRHJvcENhbm9uaWNhbCgpIGl0ZXJzPjIwMCAhIQoAIGJyZW50X3plcm8oKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGludGVydmFsIFthLGJdICEKAHBvaW50LmNwcDogeHlDbG9zZXN0UG9pbnQgRVJST1IhOiBjYW4ndCBjYWxjdWxhdGUgY2xvc2VzdCBwb2ludCBmcm9tIAoAcG9pbnQuY3BwOiB4eURpc3RhbmNlVG9MaW5lIEVSUk9SITogY2FuJ3QgY2FsY3VsYXRlIGRpc3RhbmNlIGZyb20gCgAgYW5kIAoAIEVSUk9SOiBzZXRYRGlyZWN0aW9uKCkgb3Igc2V0WURpcmVjdGlvbigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRTVEwoKSAKAEVsbGlwc2U6OmZpbmRfRWxsaXBzZVBvc2l0aW9uMiBjYW5ub3QgZmluZCBFbGxpcHNlUG9zaXRpb24yISAKAEVSUk9SOiBLRFRyZWU6OmJ1aWxkX25vZGUoKSBjYWxsZWQgd2l0aCB0cmlzLT5zaXplKCk9PTAgISAKACBFUlJPUiwgS0RUcmVlOjpjYWxjX3NwcmVhZCgpIGNhbGxlZCB3aXRoIHRyaXMtPnNpemUoKT09MCAhIAoACQAAAAAAAABQFgAABAAAAAUAAABOM29jbDRCYm94RQBohQAARBYAAAAAAACMFgAABgAAAAcAAABOM29jbDdDQ1BvaW50RQBOM29jbDVQb2ludEUAaIUAAHcWAACQhQAAaBYAAIQWAAAAAAAAuBYAAAgAAAAJAAAATjNvY2w3Q0xQb2ludEUAAJCFAACoFgAAhBYAAAAAAADgFgAACgAAAAsAAABOM29jbDRMaW5lRQBohQAA1BYAAAAAAAAEFwAADAAAAA0AAABOM29jbDRQYXRoRQBohQAA+BYAAAAAAABMFwAADgAAAA8AAAAQAAAAEQAAABIAAABOM29jbDhMaW5lU3BhbkUATjNvY2w0U3BhbkUAaIUAADgXAACQhQAAKBcAAEQXAAAAAAAAhBcAABMAAAAUAAAAFQAAABYAAAAXAAAATjNvY2w3QXJjU3BhbkUAAJCFAAB0FwAARBcAAAAAAACEFgAABgAAABgAAAAAAAAAxBcAABoAAAAbAAAATjNvY2w5U1RMUmVhZGVyRQAAAABohQAAsBcAAAAAAADsFwAAHQAAAB4AAABOM29jbDhUcmlhbmdsZUUAaIUAANwXAAAAAAAARBgAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAABOM29jbDEwQmFsbEN1dHRlckUAAJCFAAAwGAAATBwAAAAAAACgGAAAHwAAACwAAAAtAAAAIgAAACMAAAAuAAAAJQAAACYAAAAnAAAALwAAADAAAAAxAAAAMgAAAE4zb2NsMTBCdWxsQ3V0dGVyRQAAkIUAAIwYAABMHAAAAAAAAGgaAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAAIwaAAAzAAAAQAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAALAaAAAzAAAAQQAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAANQaAAAzAAAAQgAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAAPgaAAAzAAAAQwAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAABwbAAAzAAAARAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAAEAbAAAzAAAARQAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAATjNvY2wxNUNvbXBvc2l0ZUN1dHRlckUAkIUAAFAaAABMHAAATjNvY2wxM0NvbXBDeWxDdXR0ZXJFAAAAkIUAAHQaAABoGgAATjNvY2wxNENvbXBCYWxsQ3V0dGVyRQAAkIUAAJgaAABoGgAATjNvY2wxM0N5bENvbmVDdXR0ZXJFAAAAkIUAALwaAABoGgAATjNvY2wxNEJhbGxDb25lQ3V0dGVyRQAAkIUAAOAaAABoGgAATjNvY2wxNEJ1bGxDb25lQ3V0dGVyRQAAkIUAAAQbAABoGgAATjNvY2wxNENvbmVDb25lQ3V0dGVyRQAAkIUAACgbAABoGgAAAAAAAGwbAABGAAAARwAAAE4zb2NsNUZpYmVyRQAAAABohQAAXBsAAAAAAACUGwAASAAAAEkAAABOM29jbDhJbnRlcnZhbEUAaIUAAIQbAAAAAAAA7BsAAB8AAABKAAAASwAAAEwAAAAjAAAATQAAACUAAABOAAAAJwAAAE8AAABQAAAAUQAAAFIAAABOM29jbDEwQ29uZUN1dHRlckUAAJCFAADYGwAATBwAAAAAAABMHAAAHwAAAFMAAABUAAAAIgAAACMAAABVAAAAJQAAACYAAAAnAAAAPAAAAD0AAABWAAAAVwAAAE4zb2NsMTNNaWxsaW5nQ3V0dGVyRQAAAGiFAAA0HAAAAAAAAKQcAAAfAAAAWAAAAFkAAAAiAAAAIwAAAFoAAABbAAAAJgAAACcAAAA8AAAAXAAAAF0AAABeAAAATjNvY2w5Q3lsQ3V0dGVyRQAAAACQhQAAkBwAAEwcAAAAAAAA8BwAAF8AAABgAAAAYQAAAGIAAAAAAAAAEB0AAGMAAABkAAAAZQAAAGYAAABOM29jbDdFbGxpcHNlRQAAaIUAAOAcAABOM29jbDE0QWxpZ25lZEVsbGlwc2VFAACQhQAA+BwAAPAcAAAAAAAAnB0AAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAATjNvY2wxNUJhdGNoRHJvcEN1dHRlckUATjNvY2w5T3BlcmF0aW9uRQAAAABohQAAgB0AAJCFAABoHQAAlB0AAAAAAACUHQAAeAAAAHkAAAB6AAAAagAAAGsAAABsAAAAewAAAG4AAABvAAAAcAAAAHwAAAB9AAAAfgAAAHQAAAB1AAAAdgAAAHcAAAAAAAAAJB4AAH8AAACAAAAATjNvY2w2S0RUcmVlSU5TXzhUcmlhbmdsZUVFRQAAAABohQAABB4AAAAAAABcHgAAgQAAAIIAAABOM29jbDZLRE5vZGVJTlNfOFRyaWFuZ2xlRUVFAAAAAGiFAAA8HgAAAAAAAMgeAACDAAAAhAAAAIUAAABqAAAAawAAAGwAAACGAAAAhwAAAG8AAABwAAAAfAAAAH0AAAB+AAAAdAAAAHUAAAB2AAAAdwAAAE4zb2NsMTVQb2ludERyb3BDdXR0ZXJFAJCFAACwHgAAlB0AAAAAAAA4HwAAiAAAAIkAAAB6AAAAagAAAGsAAABsAAAAigAAAG4AAABvAAAAcAAAAHwAAAB9AAAAfgAAAHQAAAB1AAAAdgAAAHcAAABOM29jbDE0UGF0aERyb3BDdXR0ZXJFAACQhQAAIB8AAJQdAAAAAAAAsB8AAIsAAACMAAAAegAAAGoAAABrAAAAbAAAAI0AAABuAAAAbwAAAHAAAAB8AAAAfQAAAH4AAAB0AAAAdQAAAHYAAAB3AAAATjNvY2wyMkFkYXB0aXZlUGF0aERyb3BDdXR0ZXJFAACQhQAAkB8AAJQdAAAAAAAAICAAAI4AAACPAAAAkAAAAGoAAABrAAAAbAAAAJEAAABuAAAAbwAAAJIAAAB8AAAAfQAAAH4AAACTAAAAlAAAAJUAAACWAAAATjNvY2wxNUJhdGNoUHVzaEN1dHRlckUAkIUAAAggAACUHQAAAAAAAJAgAACXAAAAmAAAAJkAAABqAAAAawAAAGwAAACaAAAAbgAAAJsAAABwAAAAfAAAAH0AAAB+AAAAnAAAAJ0AAAB2AAAAdwAAAE4zb2NsMTVGaWJlclB1c2hDdXR0ZXJFAJCFAAB4IAAAlB0AAAAAAAAAIQAAngAAAJ8AAAB6AAAAagAAAGsAAABsAAAAoAAAAG4AAABvAAAAoQAAAHwAAAB9AAAAfgAAAHQAAAB1AAAAdgAAAHcAAACiAAAATjNvY2w5V2F0ZXJsaW5lRQAAAACQhQAA7CAAAJQdAAAAAAAANCEAAKMAAACkAAAAewAAAE4zb2NsNXdlYXZlNVdlYXZlRQAAaIUAACAhAAAAAAAAqCEAAKUAAACmAAAAegAAAGoAAACnAAAAbAAAAKgAAABuAAAAbwAAAKEAAAB8AAAAfQAAAH4AAAB0AAAAdQAAAHYAAAB3AAAAqQAAAE4zb2NsMTdBZGFwdGl2ZVdhdGVybGluZUUAAACQhQAAjCEAAAAhAAAAAAAA5CEAAKMAAACqAAAAqwAAAE4zb2NsNXdlYXZlMTFTaW1wbGVXZWF2ZUUAAACQhQAAyCEAADQhAAAAAAAAICIAAKMAAACsAAAArQAAAE4zb2NsNXdlYXZlMTBTbWFydFdlYXZlRQAAAACQhQAABCIAADQhAAAAAAAAeCIAAK4AAACvAAAAsAAAALEAAACyAAAATjNvY2wxMkxpbmVDTEZpbHRlckUATjNvY2w4Q0xGaWx0ZXJFAAAAAGiFAABdIgAAkIUAAEgiAABwIgAAAAAAAHAiAACuAAAAswAAAHsAAAB7AAAAewAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAABohQAAoCIAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAAaIUAAOgiAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAAGiFAAA0IwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAABohQAAgCMAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAAaIUAAKgjAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAAGiFAADQIwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAABohQAA+CMAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAAaIUAACAkAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAAGiFAABIJAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAABohQAAcCQAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAAaIUAAJgkAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAAGiFAADAJAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAABohQAA6CQAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAAaIUAABAlAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAAGiFAAA4JQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAABohQAAYCUAAFBOM29jbDVQb2ludEUAAABIhgAAiCUAAAAAAACEFgAAUEtOM29jbDVQb2ludEUAAEiGAACoJQAAAQAAAIQWAABwcAB2AHZwAJglAEHgywALwgKYJQAADIUAAAyFAAAMhQAAcHBkZGQAAACYJQAADIUAAAyFAABwcGRkAAAAAJglAACEFgAAcHBwAAyFAAC4JQAAZHBwAFiEAACYJQAAdnBwAAyFAAC4JQAAhBYAAGRwcHAAAAAAhBYAALglAACEFgAAcHBwcAAAAABYhAAAmCUAAAyFAAB2cHBkAAAAAAAAAABwhAAAuCUAAIQWAACEFgAAaXBwcHAAAADQJgAAuCUAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAABohQAAkCYAAFBOM29jbDdDTFBvaW50RQBIhgAA2CYAAAAAAAC4FgAAUEtOM29jbDdDTFBvaW50RQAAAABIhgAA+CYAAAEAAAC4FgAA6CYAALgWAEGwzgALhgHoJgAADIUAAAyFAAAMhQAA6CYAAAyFAAAMhQAADIUAAIwWAABwcGRkZHAAANAmAAAMJwAAjBYAAOgmAABQTjNvY2w3Q0NQb2ludEUASIYAAGwnAAAAAAAAjBYAAFBLTjNvY2w3Q0NQb2ludEUAAAAASIYAAIwnAAABAAAAjBYAAHwnAACMFgBBwM8AC2J8JwAADIUAAAyFAAAMhQAA0CYAAKAnAABQTjNvY2w4VHJpYW5nbGVFAAAAAEiGAADYJwAAAAAAAOwXAABQS04zb2NsOFRyaWFuZ2xlRQAAAEiGAAD8JwAAAQAAAOwXAADsJwBBsNAAC8YF7CcAAIQWAACEFgAAhBYAAHBwcHBwAE4zb2NsNkNDVHlwZUUAHIUAAEYoAABQTjNvY2w5U1RMUmVhZGVyRQAAAEiGAABcKAAAAAAAAMQXAABQS04zb2NsOVNUTFJlYWRlckUAAEiGAACAKAAAAQAAAMQXAABwKAAA8CgAAAgpAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAaIUAALAoAABOM29jbDdTVExTdXJmRQAAaIUAAPgoAABQTjNvY2w3U1RMU3VyZkUASIYAABApAAAAAAAACCkAAFBLTjNvY2w3U1RMU3VyZkUAAAAASIYAADApAAABAAAACCkAACApAAAAAAAACCkAABgCAAAZAgAAWIQAACApAADsFwAAdnBwcAAAAADEhAAARCkAAGlwcABQTjNvY2w0QmJveEUAAAAASIYAAIgpAAAAAAAAUBYAAFBLTjNvY2w0QmJveEUAAABIhgAAqCkAAAEAAABQFgAAcIQAALgpAACEFgAAaXBwcABOM29jbDE1RWxsaXBzZVBvc2l0aW9uRQAAAABohQAA2SkAAFBOM29jbDE1RWxsaXBzZVBvc2l0aW9uRQAAAABIhgAA/CkAAAAAAAD0KQAAUEtOM29jbDE1RWxsaXBzZVBvc2l0aW9uRQAAAEiGAAAoKgAAAQAAAPQpAABYhAAAGCoAAAyFAADQJgAARCoAAFBOM29jbDRMaW5lRQAAAABIhgAAaCoAAAAAAADgFgAAUEtOM29jbDRMaW5lRQAAAEiGAACIKgAAAQAAAOAWAAB4KgAAhBYAAIQWAAB4KgAA4BYAAFBOM29jbDNBcmNFAEiGAAC8KgAAAAAAABwEAABQS04zb2NsM0FyY0UAAAAASIYAANgqAAABAAAAHAQAQYDWAAvWC8gqAACEFgAAhBYAAIQWAABwhAAAcHBwcHBpAADIKgAAHAQAAHZwcGkATjNvY2w4U3BhblR5cGVFAAAAAByFAAApKwAAUE4zb2NsNFBhdGhFAAAAAEiGAABEKwAAAAAAAAQXAABQS04zb2NsNFBhdGhFAAAASIYAAGQrAAABAAAABBcAAFQrAABUKwAABBcAAFiEAABUKwAA4BYAAFiEAABUKwAAHAQAAFBOM29jbDlPcGVyYXRpb25FAAAASIYAAKgrAAAAAAAAlB0AAFBLTjNvY2w5T3BlcmF0aW9uRQAASIYAAMwrAAABAAAAlB0AAFiEAAC8KwAAFCwAAFBLTjNvY2wxM01pbGxpbmdDdXR0ZXJFAEiGAAD8KwAAAQAAAEwcAABgLAAAvCsAAE5TdDNfXzI2dmVjdG9ySU4zb2NsN0NMUG9pbnRFTlNfOWFsbG9jYXRvcklTMl9FRUVFAABohQAALCwAAFiEAAC8KwAACCkAAFiEAAC8KwAADIUAAFBOM29jbDE1QmF0Y2hEcm9wQ3V0dGVyRQAAAABIhgAAgCwAAAAAAACcHQAAUEtOM29jbDE1QmF0Y2hEcm9wQ3V0dGVyRQAAAEiGAACsLAAAAQAAAJwdAACcLAAAWIQAAJwsAABYhAAAvCsAAMSEAAC4hAAA4CsAAFiEAACcLAAAuBYAAFBOM29jbDE0UGF0aERyb3BDdXR0ZXJFAEiGAAAELQAAAAAAADgfAABQS04zb2NsMTRQYXRoRHJvcEN1dHRlckUAAAAASIYAACwtAAABAAAAOB8AABwtAABYhAAAHC0AAFiEAAAcLQAAdCsAAAyFAABILQAAWIQAABwtAAAMhQAAYCwAAEgtAABQTjNvY2wyMkFkYXB0aXZlUGF0aERyb3BDdXR0ZXJFAEiGAACMLQAAAAAAALAfAABQS04zb2NsMjJBZGFwdGl2ZVBhdGhEcm9wQ3V0dGVyRQAAAABIhgAAvC0AAAEAAACwHwAArC0AAFiEAACsLQAAWIQAAKwtAAAMhQAADIUAALwrAABYhAAArC0AAHQrAAAMhQAA4C0AAGAsAADgLQAATjNvY2w2WmlnWmFnRQAAAGiFAAAsLgAAUE4zb2NsNlppZ1phZ0UAAEiGAABELgAAAAAAADwuAABQS04zb2NsNlppZ1phZ0UASIYAAGQuAAABAAAAPC4AAFQuAAAAAAAAPC4AABoCAAAbAgAAWIQAAFQuAABYhAAAVC4AAIQWAABYhAAAVC4AAAyFAABYhAAAVC4AAIQWAADQJgAAdC4AAFBOM29jbDE1QmF0Y2hQdXNoQ3V0dGVyRQAAAABIhgAAzC4AAAAAAAAgIAAAUEtOM29jbDE1QmF0Y2hQdXNoQ3V0dGVyRQAAAEiGAAD4LgAAAQAAACAgAADoLgAAWIQAAOguAABYhAAA6C4AAGwbAABQTjNvY2w4SW50ZXJ2YWxFAAAAAEiGAAA8LwAAAAAAAJQbAABQS04zb2NsOEludGVydmFsRQAAAEiGAABgLwAAAQAAAJQbAABQLwAADIUAAAyFAABYhAAAUC8AAAyFAACMFgAAdnBwZHAAAABwhAAAdC8AANAmAAB0LwAAUE4zb2NsNUZpYmVyRQAAAEiGAAC4LwAAAAAAAGwbAABQS04zb2NsNUZpYmVyRQAASIYAANgvAAABAAAAbBsAAMgvAACEFgAAhBYAAE5TdDNfXzI2dmVjdG9ySU4zb2NsNVBvaW50RU5TXzlhbGxvY2F0b3JJUzJfRUVFRQAAAABohQAABDAAAFBOU3QzX18yNnZlY3RvcklOM29jbDVQb2ludEVOU185YWxsb2NhdG9ySVMyX0VFRUUAAABIhgAAQDAAAAAAAAA4MAAAUEtOU3QzX18yNnZlY3RvcklOM29jbDVQb2ludEVOU185YWxsb2NhdG9ySVMyX0VFRUUAAEiGAACEMAAAAQAAADgwAAB0MAAAWIQAAHQwAACEFgBB4OEAC1BYhAAAdDAAANyEAACEFgAAdnBwcHAAAADchAAAuDAAAHBwcAAkMQAAODAAANyEAABOMTBlbXNjcmlwdGVuM3ZhbEUAAGiFAAAQMQAAcHBwcABBwOIAC7IBcIQAADgwAADchAAAhBYAAGlwcHBwAFBOU3QzX18yNnZlY3RvcklOM29jbDdDTFBvaW50RU5TXzlhbGxvY2F0b3JJUzJfRUVFRQAAAEiGAABWMQAAAAAAAGAsAABQS05TdDNfXzI2dmVjdG9ySU4zb2NsN0NMUG9pbnRFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAAEiGAACcMQAAAQAAAGAsAACMMQAAWIQAAIwxAAC4FgBBgOQACyJYhAAAjDEAANyEAAC4FgAA3IQAANQxAAAkMQAAYCwAANyEAEGw5AALkgJwhAAAYCwAANyEAAC4FgAATlN0M19fMjZ2ZWN0b3JJTlMwX0lOM29jbDVQb2ludEVOU185YWxsb2NhdG9ySVMyX0VFRUVOUzNfSVM1X0VFRUUAAABohQAAQDIAAFBOU3QzX18yNnZlY3RvcklOUzBfSU4zb2NsNVBvaW50RU5TXzlhbGxvY2F0b3JJUzJfRUVFRU5TM19JUzVfRUVFRQAASIYAAIwyAAAAAAAAhDIAAFBLTlN0M19fMjZ2ZWN0b3JJTlMwX0lOM29jbDVQb2ludEVOU185YWxsb2NhdG9ySVMyX0VFRUVOUzNfSVM1X0VFRUUASIYAAOAyAAABAAAAhDIAANAyAABYhAAA0DIAADgwAEHQ5gALIliEAADQMgAA3IQAADgwAADchAAAJDMAACQxAACEMgAA3IQAQYDnAAvSBHCEAACEMgAA3IQAADgwAABQTjNvY2w5V2F0ZXJsaW5lRQAAAEiGAACQMwAAAAAAAAAhAABQS04zb2NsOVdhdGVybGluZUUAAEiGAAC0MwAAAQAAAAAhAACkMwAAWIQAAKQzAAAMhQAAWIQAAKQzAACEMgAAyDMAAFBOM29jbDE3QWRhcHRpdmVXYXRlcmxpbmVFAABIhgAA+DMAAAAAAACoIQAAUEtOM29jbDE3QWRhcHRpdmVXYXRlcmxpbmVFAEiGAAAkNAAAAQAAAKghAAAUNAAAWIQAABQ0AAAMhQAAWIQAABQ0AABOM29jbDV3ZWF2ZTEwVmVydGV4VHlwZUUAAAAAHIUAAGg0AABQTjNvY2wxMkxpbmVDTEZpbHRlckUAAABIhgAAjDQAAAAAAAB4IgAAUEtOM29jbDEyTGluZUNMRmlsdGVyRQAASIYAALQ0AAABAAAAeCIAAKQ0AABYhAAApDQAALgWAABYhAAApDQAAAyFAABYhAAApDQAAFBOM29jbDEzTWlsbGluZ0N1dHRlckUAAEiGAAAANQAAAAAAAEwcAAAYNQAAAAAAAHCEAAAULAAAuBYAAOwXAABwhAAAFCwAAGwbAACUGwAA7BcAAGlwcHBwcAAAGDUAABQsAAAMhQAAcHBwZAAAAADQJgAAFCwAAAyFAAAULAAAUE4zb2NsOUN5bEN1dHRlckUAAABIhgAAgDUAAAAAAACkHAAAUEtOM29jbDlDeWxDdXR0ZXJFAABIhgAApDUAAAEAAACkHAAAlDUAAAyFAAAMhQBB4OsAC7IBcIQAABQsAAC4FgAACCkAAFBOM29jbDEwQmFsbEN1dHRlckUASIYAAPA1AAAAAAAARBgAAFBLTjNvY2wxMEJhbGxDdXR0ZXJFAAAAAEiGAAAUNgAAAQAAAEQYAAAENgAADIUAAAyFAABQTjNvY2wxMEJ1bGxDdXR0ZXJFAEiGAABINgAAAAAAAKAYAABQS04zb2NsMTBCdWxsQ3V0dGVyRQAAAABIhgAAbDYAAAEAAACgGABBoO0AC+IDXDYAAAyFAAAMhQAADIUAAFBOM29jbDEwQ29uZUN1dHRlckUASIYAALA2AAAAAAAA7BsAAFBLTjNvY2wxMENvbmVDdXR0ZXJFAAAAAEiGAADUNgAAAQAAAOwbAAAAAAAAxDYAAAyFAAAMhQAADIUAAFBOM29jbDEzQ29tcEN5bEN1dHRlckUAAEiGAAAQNwAAAAAAAIwaAABQS04zb2NsMTNDb21wQ3lsQ3V0dGVyRQBIhgAAODcAAAEAAACMGgAAKDcAAAyFAAAMhQAAUE4zb2NsMTRDb21wQmFsbEN1dHRlckUASIYAAGw3AAAAAAAAsBoAAFBLTjNvY2wxNENvbXBCYWxsQ3V0dGVyRQAAAABIhgAAlDcAAAEAAACwGgAAhDcAAAyFAAAMhQAAUE4zb2NsMTNDeWxDb25lQ3V0dGVyRQAASIYAAMw3AAAAAAAA1BoAAFBLTjNvY2wxM0N5bENvbmVDdXR0ZXJFAEiGAAD0NwAAAQAAANQaAAAAAAAA5DcAAAyFAAAMhQAADIUAAFBOM29jbDE0QmFsbENvbmVDdXR0ZXJFAEiGAAAwOAAAAAAAAPgaAABQS04zb2NsMTRCYWxsQ29uZUN1dHRlckUAAAAASIYAAFg4AAABAAAA+BoAQZDxAAtiSDgAAAyFAAAMhQAADIUAAFBOM29jbDE0QnVsbENvbmVDdXR0ZXJFAEiGAACgOAAAAAAAABwbAABQS04zb2NsMTRCdWxsQ29uZUN1dHRlckUAAAAASIYAAMg4AAABAAAAHBsAQYDyAAuCAbg4AAAMhQAADIUAAAyFAAAMhQAAcHBkZGRkAFBOM29jbDE0Q29uZUNvbmVDdXR0ZXJFAABIhgAAGzkAAAAAAABAGwAAUEtOM29jbDE0Q29uZUNvbmVDdXR0ZXJFAAAAAEiGAABEOQAAAQAAAEAbAAA0OQAADIUAAAyFAAAMhQAADIUAQZDzAAuXFk+7YQVnrN0/GC1EVPsh6T+b9oHSC3PvPxgtRFT7Ifk/4mUvIn8rejwHXBQzJqaBPL3L8HqIB3A8B1wUMyamkTwDAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAGcRHAM1nwwAJ6NwAWYMqAIt2xACmHJYARK/dABlX0QClPgUABQf/ADN+PwDCMugAmE/eALt9MgAmPcMAHmvvAJ/4XgA1HzoAf/LKAPGHHQB8kCEAaiR8ANVu+gAwLXcAFTtDALUUxgDDGZ0ArcTCACxNQQAMAF0Ahn1GAONxLQCbxpoAM2IAALTSfAC0p5cAN1XVANc+9gCjEBgATXb8AGSdKgBw16sAY3z4AHqwVwAXFecAwElWADvW2QCnhDgAJCPLANaKdwBaVCMAAB+5APEKGwAZzt8AnzH/AGYeagCZV2EArPtHAH5/2AAiZbcAMuiJAOa/YADvxM0AbDYJAF0/1AAW3tcAWDveAN6bkgDSIigAKIboAOJYTQDGyjIACOMWAOB9ywAXwFAA8x2nABjgWwAuEzQAgxJiAINIAQD1jlsArbB/AB7p8gBISkMAEGfTAKrd2ACuX0IAamHOAAoopADTmbQABqbyAFx3fwCjwoMAYTyIAIpzeACvjFoAb9e9AC2mYwD0v8sAjYHvACbBZwBVykUAytk2ACio0gDCYY0AEsl3AAQmFAASRpsAxFnEAMjFRABNspEAABfzANRDrQApSeUA/dUQAAC+/AAelMwAcM7uABM+9QDs8YAAs+fDAMf4KACTBZQAwXE+AC4JswALRfMAiBKcAKsgewAutZ8AR5LCAHsyLwAMVW0AcqeQAGvnHwAxy5YAeRZKAEF54gD034kA6JSXAOLmhACZMZcAiO1rAF9fNgC7/Q4ASJq0AGekbABxckIAjV0yAJ8VuAC85QkAjTElAPd0OQAwBRwADQwBAEsIaAAs7lgAR6qQAHTnAgC91iQA932mAG5IcgCfFu8AjpSmALSR9gDRU1EAzwryACCYMwD1S34AsmNoAN0+XwBAXQMAhYl/AFVSKQA3ZMAAbdgQADJIMgBbTHUATnHUAEVUbgALCcEAKvVpABRm1QAnB50AXQRQALQ72wDqdsUAh/kXAElrfQAdJ7oAlmkpAMbMrACtFFQAkOJqAIjZiQAsclAABKS+AHcHlADzMHAAAPwnAOpxqABmwkkAZOA9AJfdgwCjP5cAQ5T9AA2GjAAxQd4AkjmdAN1wjAAXt+cACN87ABU3KwBcgKAAWoCTABARkgAP6NgAbICvANv/SwA4kA8AWRh2AGKlFQBhy7sAx4m5ABBAvQDS8gQASXUnAOu29gDbIrsAChSqAIkmLwBkg3YACTszAA6UGgBROqoAHaPCAK/trgBcJhIAbcJNAC16nADAVpcAAz+DAAnw9gArQIwAbTGZADm0BwAMIBUA2MNbAPWSxADGrUsATsqlAKc3zQDmqTYAq5KUAN1CaAAZY94AdozvAGiLUgD82zcArqGrAN8VMQAArqEADPvaAGRNZgDtBbcAKWUwAFdWvwBH/zoAavm5AHW+8wAok98Aq4AwAGaM9gAEyxUA+iIGANnkHQA9s6QAVxuPADbNCQBOQukAE76kADMjtQDwqhoAT2WoANLBpQALPw8AW3jNACP5dgB7iwQAiRdyAMamUwBvbuIA7+sAAJtKWADE2rcAqma6AHbPzwDRAh0AsfEtAIyZwQDDrXcAhkjaAPddoADGgPQArPAvAN3smgA/XLwA0N5tAJDHHwAq27YAoyU6AACvmgCtU5MAtlcEACkttABLgH4A2genAHaqDgB7WaEAFhIqANy3LQD65f0Aidv+AIm+/QDkdmwABqn8AD6AcACFbhUA/Yf/ACg+BwBhZzMAKhiGAE296gCz568Aj21uAJVnOQAxv1sAhNdIADDfFgDHLUMAJWE1AMlwzgAwy7gAv2z9AKQAogAFbOQAWt2gACFvRwBiEtIAuVyEAHBhSQBrVuAAmVIBAFBVNwAe1bcAM/HEABNuXwBdMOQAhS6pAB2ywwChMjYACLekAOqx1AAW9yEAj2nkACf/dwAMA4AAjUAtAE/NoAAgpZkAs6LTAC9dCgC0+UIAEdrLAH2+0ACb28EAqxe9AMqigQAIalwALlUXACcAVQB/FPAA4QeGABQLZACWQY0Ah77eANr9KgBrJbYAe4k0AAXz/gC5v54AaGpPAEoqqABPxFoALfi8ANdamAD0x5UADU2NACA6pgCkV18AFD+xAIA4lQDMIAEAcd2GAMnetgC/YPUATWURAAEHawCMsKwAssDQAFFVSAAe+w4AlXLDAKMGOwDAQDUABtx7AOBFzABOKfoA1srIAOjzQQB8ZN4Am2TYANm+MQCkl8MAd1jUAGnjxQDw2hMAujo8AEYYRgBVdV8A0r31AG6SxgCsLl0ADkTtABw+QgBhxIcAKf3pAOfW8wAifMoAb5E1AAjgxQD/140AbmriALD9xgCTCMEAfF10AGutsgDNbp0APnJ7AMYRagD3z6kAKXPfALXJugC3AFEA4rINAHS6JADlfWAAdNiKAA0VLACBGAwAfmaUAAEpFgCfenYA/f2+AFZF7wDZfjYA7NkTAIu6uQDEl/wAMagnAPFuwwCUxTYA2KhWALSotQDPzA4AEoktAG9XNAAsVokAmc7jANYguQBrXqoAPiqcABFfzAD9C0oA4fT7AI47bQDihiwA6dSEAPy0qQDv7tEALjXJAC85YQA4IUQAG9nIAIH8CgD7SmoALxzYAFO0hABOmYwAVCLMACpV3ADAxtYACxmWABpwuABplWQAJlpgAD9S7gB/EQ8A9LURAPzL9QA0vC0ANLzuAOhdzADdXmAAZ46bAJIz7wDJF7gAYVibAOFXvABRg8YA2D4QAN1xSAAtHN0ArxihACEsRgBZ89cA2XqYAJ5UwABPhvoAVgb8AOV5rgCJIjYAOK0iAGeT3ABV6KoAgiY4AMrnmwBRDaQAmTOxAKnXDgBpBUgAZbLwAH+IpwCITJcA+dE2ACGSswB7gkoAmM8hAECf3ADcR1UA4XQ6AGfrQgD+nd8AXtRfAHtnpAC6rHoAVfaiACuIIwBBulUAWW4IACEqhgA5R4MAiePmAOWe1ABJ+0AA/1bpABwPygDFWYoAlPorANPBxQAPxc8A21quAEfFhgCFQ2IAIYY7ACx5lAAQYYcAKkx7AIAsGgBDvxIAiCaQAHg8iQCoxOQA5dt7AMQ6wgAm9OoA92eKAA2SvwBloysAPZOxAL18CwCkUdwAJ91jAGnh3QCalBkAqCmVAGjOKAAJ7bQARJ8gAE6YygBwgmMAfnwjAA+5MgCn9Y4AFFbnACHxCAC1nSoAb35NAKUZUQC1+asAgt/WAJbdYQAWNgIAxDqfAIOioQBy7W0AOY16AIK4qQBrMlwARidbAAA07QDSAHcA/PRVAAFZTQDgcYAAQbOJAQvjEED7Ifk/AAAAAC1EdD4AAACAmEb4PAAAAGBRzHg7AAAAgIMb8DkAAABAICV6OAAAAIAiguM2AAAAAB3zaTXRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAAFhJAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAAAgAAAAAAAAAkEkAADACAAAxAgAA+P////j///+QSQAAMgIAADMCAABoRwAAfEcAAAQAAAAAAAAA2EkAADQCAAA1AgAA/P////z////YSQAANgIAADcCAACYRwAArEcAAAAAAABsSgAAOAIAADkCAAA6AgAAOwIAADwCAAA9AgAAPgIAAD8CAABAAgAAQQIAAEICAABDAgAARAIAAEUCAAAIAAAAAAAAAKRKAABGAgAARwIAAPj////4////pEoAAEgCAABJAgAACEgAABxIAAAEAAAAAAAAAOxKAABKAgAASwIAAPz////8////7EoAAEwCAABNAgAAOEgAAExIAAAAAAAASEsAAE4CAABPAgAAJAIAACUCAABQAgAAUQIAACgCAAApAgAAKgIAAFICAAAsAgAAUwIAAC4CAABUAgAAAAAAANRMAABVAgAAVgIAAFcCAABYAgAAWQIAAFoCAABbAgAAKQIAACoCAABcAgAALAIAAF0CAAAuAgAAXgIAAAAAAAAYSQAAXwIAAGACAABOU3QzX18yOWJhc2ljX2lvc0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAAJCFAADsSAAABE0AAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAAABohQAAJEkAAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAOyFAABgSQAAAAAAAAEAAAAYSQAAA/T//05TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAOyFAACoSQAAAAAAAAEAAAAYSQAAA/T//wAAAAAsSgAAYQIAAGICAABOU3QzX18yOWJhc2ljX2lvc0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQAAAJCFAAAASgAABE0AAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQAAAABohQAAOEoAAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUAAOyFAAB0SgAAAAAAAAEAAAAsSgAAA/T//05TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUAAOyFAAC8SgAAAAAAAAEAAAAsSgAAA/T//05TdDNfXzIxNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAAAAkIUAAARLAABYSQAAOAAAAAAAAAD8SwAAYwIAAGQCAADI////yP////xLAABlAgAAZgIAAGBLAACYSwAArEsAAHRLAAA4AAAAAAAAANhJAAA0AgAANQIAAMj////I////2EkAADYCAAA3AgAATlN0M19fMjE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAAAAkIUAALRLAADYSQAAbAAAAAAAAACYTAAAZwIAAGgCAACU////lP///5hMAABpAgAAagIAABRMAABMTAAAYEwAAChMAABsAAAAAAAAAJBJAAAwAgAAMQIAAJT///+U////kEkAADICAAAzAgAATlN0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUAkIUAAGhMAACQSQAATlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAkIUAAKRMAABYSQAAAAAAAARNAABrAgAAbAIAAE5TdDNfXzI4aW9zX2Jhc2VFAAAAaIUAAPBMAAB4hwAACIgAAKCIAEGgmgELI94SBJUAAAAA////////////////IE0AABQAAABDLlVURi04AEHwmgELAjRNAEGMmwEL2wPgTQAAIgIAAHACAABxAgAAJQIAACYCAAAnAgAAKAIAACkCAAAqAgAAcgIAAHMCAAB0AgAALgIAAC8CAABOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQCQhQAAyE0AAFhJAAAAAAAASE4AACICAAB1AgAAdgIAACUCAAAmAgAAJwIAAHcCAAApAgAAKgIAACsCAAAsAgAALQIAAHgCAAB5AgAATlN0M19fMjExX19zdGRvdXRidWZJY0VFAAAAAJCFAAAsTgAAWEkAAAAAAACsTgAAOAIAAHoCAAB7AgAAOwIAADwCAAA9AgAAPgIAAD8CAABAAgAAfAIAAH0CAAB+AgAARAIAAEUCAABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQCQhQAAlE4AAGxKAAAAAAAAFE8AADgCAAB/AgAAgAIAADsCAAA8AgAAPQIAAIECAAA/AgAAQAIAAEECAABCAgAAQwIAAIICAACDAgAATlN0M19fMjExX19zdGRvdXRidWZJd0VFAAAAAJCFAAD4TgAAbEoAAExDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTAEHwngELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHBnwELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBB+58BCwEMAEGHoAELFRMAAAAAEwAAAAAJDAAAAAAADAAADABBtaABCwEQAEHBoAELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB76ABCwESAEH7oAELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBsqEBCw4aAAAAGhoaAAAAAAAACQBB46EBCwEUAEHvoQELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBnaIBCwEWAEGpogELWBUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgAAAACA3igAgMhNAACndgAANJ4AgBLHAICf7gAAfhcBgFxAAYDpZwEAyJABAFW4AS4AQZCjAQvWAlN1bgBNb24AVHVlAFdlZABUaHUARnJpAFNhdABTdW5kYXkATW9uZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFRodXJzZGF5AEZyaWRheQBTYXR1cmRheQBKYW4ARmViAE1hcgBBcHIATWF5AEp1bgBKdWwAQXVnAFNlcABPY3QATm92AERlYwBKYW51YXJ5AEZlYnJ1YXJ5AE1hcmNoAEFwcmlsAE1heQBKdW5lAEp1bHkAQXVndXN0AFNlcHRlbWJlcgBPY3RvYmVyAE5vdmVtYmVyAERlY2VtYmVyAEFNAFBNACVhICViICVlICVUICVZACVtLyVkLyV5ACVIOiVNOiVTACVJOiVNOiVTICVwAAAAJW0vJWQvJXkAMDEyMzQ1Njc4OQAlYSAlYiAlZSAlVCAlWQAlSDolTTolUwAAAAAAXlt5WV0AXltuTl0AeWVzAG5vAADwVABB9KkBC/kDAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAAB7AAAAfAAAAH0AAAB+AAAAfwBB8bEBCwFbAEGEtgEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AEGAvgELMTAxMjM0NTY3ODlhYmNkZWZBQkNERUZ4WCstcFBpSW5OACVJOiVNOiVTICVwJUg6JU0AQcC+AQuBASUAAABtAAAALwAAACUAAABkAAAALwAAACUAAAB5AAAAJQAAAFkAAAAtAAAAJQAAAG0AAAAtAAAAJQAAAGQAAAAlAAAASQAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAcAAAAAAAAAAlAAAASAAAADoAAAAlAAAATQBB0L8BC2YlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAAAAAAABEaQAAmwIAAJwCAACdAgAAAAAAAKRpAACeAgAAnwIAAJ0CAACgAgAAoQIAAKICAACjAgAApAIAAKUCAACmAgAApwIAQcDAAQv9AwQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAUCAAAFAAAABQAAAAUAAAAFAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAwIAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAKgEAACoBAAAqAQAAKgEAACoBAAAqAQAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAAyAQAAMgEAADIBAAAyAQAAMgEAADIBAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAAIIAAACCAAAAggAAAIIAAAAEAEHEyAEL7QIMaQAAqAIAAKkCAACdAgAAqgIAAKsCAACsAgAArQIAAK4CAACvAgAAsAIAAAAAAADcaQAAsQIAALICAACdAgAAswIAALQCAAC1AgAAtgIAALcCAAAAAAAAAGoAALgCAAC5AgAAnQIAALoCAAC7AgAAvAIAAL0CAAC+AgAAdAAAAHIAAAB1AAAAZQAAAAAAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAAAAAAAAlAAAAYQAAACAAAAAlAAAAYgAAACAAAAAlAAAAZAAAACAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAWQAAAAAAAAAlAAAASQAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAcABBvMsBC/4K5GUAAL8CAADAAgAAnQIAAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQAAAJCFAADMZQAAEHoAAAAAAABkZgAAvwIAAMECAACdAgAAwgIAAMMCAADEAgAAxQIAAMYCAADHAgAAyAIAAMkCAADKAgAAywIAAMwCAADNAgAATlN0M19fMjVjdHlwZUl3RUUATlN0M19fMjEwY3R5cGVfYmFzZUUAAGiFAABGZgAA7IUAADRmAAAAAAAAAgAAAORlAAACAAAAXGYAAAIAAAAAAAAA+GYAAL8CAADOAgAAnQIAAM8CAADQAgAA0QIAANICAADTAgAA1AIAANUCAABOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjEyY29kZWN2dF9iYXNlRQAAAABohQAA1mYAAOyFAAC0ZgAAAAAAAAIAAADkZQAAAgAAAPBmAAACAAAAAAAAAGxnAAC/AgAA1gIAAJ0CAADXAgAA2AIAANkCAADaAgAA2wIAANwCAADdAgAATlN0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFRQAA7IUAAEhnAAAAAAAAAgAAAORlAAACAAAA8GYAAAIAAAAAAAAA4GcAAL8CAADeAgAAnQIAAN8CAADgAgAA4QIAAOICAADjAgAA5AIAAOUCAABOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFRQDshQAAvGcAAAAAAAACAAAA5GUAAAIAAADwZgAAAgAAAAAAAABUaAAAvwIAAOYCAACdAgAA5wIAAOgCAADpAgAA6gIAAOsCAADsAgAA7QIAAE5TdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RUUAAOyFAAAwaAAAAAAAAAIAAADkZQAAAgAAAPBmAAACAAAAAAAAAMhoAAC/AgAA7gIAAJ0CAADvAgAA8AIAAPECAADyAgAA8wIAAPQCAAD1AgAATlN0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RUUA7IUAAKRoAAAAAAAAAgAAAORlAAACAAAA8GYAAAIAAABOU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUUAAADshQAA6GgAAAAAAAACAAAA5GUAAAIAAADwZgAAAgAAAE5TdDNfXzI2bG9jYWxlNV9faW1wRQAAAJCFAAAsaQAA5GUAAE5TdDNfXzI3Y29sbGF0ZUljRUUAkIUAAFBpAADkZQAATlN0M19fMjdjb2xsYXRlSXdFRQCQhQAAcGkAAORlAABOU3QzX18yNWN0eXBlSWNFRQAAAOyFAACQaQAAAAAAAAIAAADkZQAAAgAAAFxmAAACAAAATlN0M19fMjhudW1wdW5jdEljRUUAAAAAkIUAAMRpAADkZQAATlN0M19fMjhudW1wdW5jdEl3RUUAAAAAkIUAAOhpAADkZQAAAAAAAGRpAAD2AgAA9wIAAJ0CAAD4AgAA+QIAAPoCAAAAAAAAhGkAAPsCAAD8AgAAnQIAAP0CAAD+AgAA/wIAAAAAAAAgawAAvwIAAAADAACdAgAAAQMAAAIDAAADAwAABAMAAAUDAAAGAwAABwMAAAgDAAAJAwAACgMAAAsDAABOU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fZ2V0SWNFRQBOU3QzX18yMTRfX251bV9nZXRfYmFzZUUAAGiFAADmagAA7IUAANBqAAAAAAAAAQAAAABrAAAAAAAA7IUAAIxqAAAAAAAAAgAAAORlAAACAAAACGsAQcTWAQvKAfRrAAC/AgAADAMAAJ0CAAANAwAADgMAAA8DAAAQAwAAEQMAABIDAAATAwAAFAMAABUDAAAWAwAAFwMAAE5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9nZXRJd0VFAAAA7IUAAMRrAAAAAAAAAQAAAABrAAAAAAAA7IUAAIBrAAAAAAAAAgAAAORlAAACAAAA3GsAQZjYAQveAdxsAAC/AgAAGAMAAJ0CAAAZAwAAGgMAABsDAAAcAwAAHQMAAB4DAAAfAwAAIAMAAE5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjlfX251bV9wdXRJY0VFAE5TdDNfXzIxNF9fbnVtX3B1dF9iYXNlRQAAaIUAAKJsAADshQAAjGwAAAAAAAABAAAAvGwAAAAAAADshQAASGwAAAAAAAACAAAA5GUAAAIAAADEbABBgNoBC74BpG0AAL8CAAAhAwAAnQIAACIDAAAjAwAAJAMAACUDAAAmAwAAJwMAACgDAAApAwAATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAAADshQAAdG0AAAAAAAABAAAAvGwAAAAAAADshQAAMG0AAAAAAAACAAAA5GUAAAIAAACMbQBByNsBC5oLpG4AACoDAAArAwAAnQIAACwDAAAtAwAALgMAAC8DAAAwAwAAMQMAADIDAAD4////pG4AADMDAAA0AwAANQMAADYDAAA3AwAAOAMAADkDAABOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOXRpbWVfYmFzZUUAaIUAAF1uAABOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUAAABohQAAeG4AAOyFAAAYbgAAAAAAAAMAAADkZQAAAgAAAHBuAAACAAAAnG4AAAAIAAAAAAAAkG8AADoDAAA7AwAAnQIAADwDAAA9AwAAPgMAAD8DAABAAwAAQQMAAEIDAAD4////kG8AAEMDAABEAwAARQMAAEYDAABHAwAASAMAAEkDAABOU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUl3RUUAAGiFAABlbwAA7IUAACBvAAAAAAAAAwAAAORlAAACAAAAcG4AAAIAAACIbwAAAAgAAAAAAAA0cAAASgMAAEsDAACdAgAATAMAAE5TdDNfXzI4dGltZV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMF9fdGltZV9wdXRFAAAAaIUAABVwAADshQAA0G8AAAAAAAACAAAA5GUAAAIAAAAscAAAAAgAAAAAAAC0cAAATQMAAE4DAACdAgAATwMAAE5TdDNfXzI4dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAAAAAOyFAABscAAAAAAAAAIAAADkZQAAAgAAACxwAAAACAAAAAAAAEhxAAC/AgAAUAMAAJ0CAABRAwAAUgMAAFMDAABUAwAAVQMAAFYDAABXAwAAWAMAAFkDAABOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUATlN0M19fMjEwbW9uZXlfYmFzZUUAAAAAaIUAAChxAADshQAADHEAAAAAAAACAAAA5GUAAAIAAABAcQAAAgAAAAAAAAC8cQAAvwIAAFoDAACdAgAAWwMAAFwDAABdAwAAXgMAAF8DAABgAwAAYQMAAGIDAABjAwAATlN0M19fMjEwbW9uZXlwdW5jdEljTGIxRUVFAOyFAACgcQAAAAAAAAIAAADkZQAAAgAAAEBxAAACAAAAAAAAADByAAC/AgAAZAMAAJ0CAABlAwAAZgMAAGcDAABoAwAAaQMAAGoDAABrAwAAbAMAAG0DAABOU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRUUA7IUAABRyAAAAAAAAAgAAAORlAAACAAAAQHEAAAIAAAAAAAAApHIAAL8CAABuAwAAnQIAAG8DAABwAwAAcQMAAHIDAABzAwAAdAMAAHUDAAB2AwAAdwMAAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFRQDshQAAiHIAAAAAAAACAAAA5GUAAAIAAABAcQAAAgAAAAAAAABIcwAAvwIAAHgDAACdAgAAeQMAAHoDAABOU3QzX18yOW1vbmV5X2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjExX19tb25leV9nZXRJY0VFAABohQAAJnMAAOyFAADgcgAAAAAAAAIAAADkZQAAAgAAAEBzAEHs5gELmgHscwAAvwIAAHsDAACdAgAAfAMAAH0DAABOU3QzX18yOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9nZXRJd0VFAABohQAAynMAAOyFAACEcwAAAAAAAAIAAADkZQAAAgAAAORzAEGQ6AELmgGQdAAAvwIAAH4DAACdAgAAfwMAAIADAABOU3QzX18yOW1vbmV5X3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJY0VFAABohQAAbnQAAOyFAAAodAAAAAAAAAIAAADkZQAAAgAAAIh0AEG06QELmgE0dQAAvwIAAIEDAACdAgAAggMAAIMDAABOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJd0VFAABohQAAEnUAAOyFAADMdAAAAAAAAAIAAADkZQAAAgAAACx1AEHY6gELuQisdQAAvwIAAIQDAACdAgAAhQMAAIYDAACHAwAATlN0M19fMjhtZXNzYWdlc0ljRUUATlN0M19fMjEzbWVzc2FnZXNfYmFzZUUAAAAAaIUAAIl1AADshQAAdHUAAAAAAAACAAAA5GUAAAIAAACkdQAAAgAAAAAAAAAEdgAAvwIAAIgDAACdAgAAiQMAAIoDAACLAwAATlN0M19fMjhtZXNzYWdlc0l3RUUAAAAA7IUAAOx1AAAAAAAAAgAAAORlAAACAAAApHUAAAIAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAEGc8wEL9Q+cbgAAMwMAADQDAAA1AwAANgMAADcDAAA4AwAAOQMAAAAAAACIbwAAQwMAAEQDAABFAwAARgMAAEcDAABIAwAASQMAAAAAAAAQegAAjAMAAI0DAAB7AAAATlN0M19fMjE0X19zaGFyZWRfY291bnRFAAAAAGiFAAD0eQAATm8gZXJyb3IgaW5mb3JtYXRpb24ASWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATXVsdGlob3AgYXR0ZW1wdGVkAFJlcXVpcmVkIGtleSBub3QgYXZhaWxhYmxlAEtleSBoYXMgZXhwaXJlZABLZXkgaGFzIGJlZW4gcmV2b2tlZABLZXkgd2FzIHJlamVjdGVkIGJ5IHNlcnZpY2UAQaKDAguWAaUCWwDwAbUFjAUlAYMGHQOUBP8AxwMxAwsGvAGPAX8DygQrANoGrwBCA04D3AEOBBUAoQYNAZQCCwI4BmQCvAL/Al0D5wQLB88CywXvBdsF4QIeBkUChQCCAmwDbwTxAPMDGAXZANoDTAZUAnsBnQO9BAAAUQAVArsAswNtAP8BhQQvBfkEOABlAUYBnwC3BqgBcwJTAQBB6IQCCwwhBAAAAAAAAAAALwIAQYiFAgsGNQRHBFYEAEGehQILAqAEAEGyhQILvAlGBWAFbgVhBgAAzwEAAAAAAAAAAMkG6Qb5Bh4HOQdJB14HTjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAkIUAANSCAABohwAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAkIUAAASDAAD4ggAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAkIUAADSDAAD4ggAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAkIUAAGSDAABYgwAATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAAAAAJCFAACUgwAA+IIAAE4xMF9fY3h4YWJpdjEyOV9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvRQAAAJCFAADIgwAAWIMAAAAAAABIhAAAjgMAAI8DAACQAwAAkQMAAJIDAABOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAkIUAACCEAAD4ggAAdgAAAAyEAABUhAAARG4AAAyEAABghAAAYgAAAAyEAABshAAAYwAAAAyEAAB4hAAAaAAAAAyEAACEhAAAYQAAAAyEAACQhAAAcwAAAAyEAACchAAAdAAAAAyEAACohAAAaQAAAAyEAAC0hAAAagAAAAyEAADAhAAAbAAAAAyEAADMhAAAbQAAAAyEAADYhAAAeAAAAAyEAADkhAAAeQAAAAyEAADwhAAAZgAAAAyEAAD8hAAAZAAAAAyEAAAIhQAAAAAAAFSFAACOAwAAkwMAAJADAACRAwAAlAMAAE4xMF9fY3h4YWJpdjExNl9fZW51bV90eXBlX2luZm9FAAAAAJCFAAAwhQAA+IIAAAAAAAAogwAAjgMAAJUDAACQAwAAkQMAAJYDAACXAwAAmAMAAJkDAAAAAAAA2IUAAI4DAACaAwAAkAMAAJEDAACWAwAAmwMAAJwDAACdAwAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAJCFAACwhQAAKIMAAAAAAAA0hgAAjgMAAJ4DAACQAwAAkQMAAJYDAACfAwAAoAMAAKEDAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAAkIUAAAyGAAAogwAAAAAAAIiDAACOAwAAogMAAJADAACRAwAAowMAAAAAAADAhgAAHAAAAKQDAAClAwAAAAAAAOiGAAAcAAAApgMAAKcDAAAAAAAAqIYAABwAAACoAwAAqQMAAFN0OWV4Y2VwdGlvbgAAAABohQAAmIYAAFN0OWJhZF9hbGxvYwAAAACQhQAAsIYAAKiGAABTdDIwYmFkX2FycmF5X25ld19sZW5ndGgAAAAAkIUAAMyGAADAhgAAAAAAABiHAAABAAAAqgMAAKsDAABTdDExbG9naWNfZXJyb3IAkIUAAAiHAACohgAAAAAAAEyHAAABAAAArAMAAKsDAABTdDEybGVuZ3RoX2Vycm9yAAAAAJCFAAA4hwAAGIcAAFN0OXR5cGVfaW5mbwAAAABohQAAWIcAQfCOAgsJwKABAAAAAAAJAEGEjwILAiACAEGYjwILEh8CAAAAAAAAHQIAADiMAAAABABBxI8CCwT/////AEGIkAILAQUAQZSQAgsCbQIAQayQAgsOHgIAAG4CAABIkAAAAAQAQcSQAgsBAQBB1JACCwX/////CgBBmJECCwkIiAAAAAAAAAUAQayRAgsCIAIAQcSRAgsKHgIAAB0CAABQlABB3JECCwECAEHskQILCP//////////AEGwkgILHKCIAAAlbS8lZC8leQAAAAglSDolTTolUwAAAAg=";return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);if(isFileURI(wasmBinaryFile)){err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`)}abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["memory"];assert(wasmMemory,"memory not found in wasm exports");updateMemoryViews();wasmTable=wasmExports["__indirect_function_table"];assert(wasmTable,"table not found in wasm exports");addOnInit(wasmExports["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");trueModule=null;receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;(()=>{var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"})();if(Module["ENVIRONMENT"]){throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)")}function legacyModuleProp(prop,newName,incoming=true){if(!Object.getOwnPropertyDescriptor(Module,prop)){Object.defineProperty(Module,prop,{configurable:true,get(){let extra=incoming?" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)":"";abort(`\`Module.${prop}\` has been replaced by \`${newName}\``+extra)}})}}function ignoredModuleProp(prop){if(Object.getOwnPropertyDescriptor(Module,prop)){abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`)}}function isExportedByForceFilesystem(name){return name==="FS_createPath"||name==="FS_createDataFile"||name==="FS_createPreloadedFile"||name==="FS_unlink"||name==="addRunDependency"||name==="FS_createLazyFile"||name==="FS_createDevice"||name==="removeRunDependency"}function hookGlobalSymbolAccess(sym,func){}function missingGlobal(sym,msg){hookGlobalSymbolAccess(sym,()=>{warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`)})}missingGlobal("buffer","Please use HEAP8.buffer or wasmMemory.buffer");missingGlobal("asm","Please use wasmExports instead");function missingLibrarySymbol(sym){hookGlobalSymbolAccess(sym,()=>{var msg=`\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`;var librarySymbol=sym;if(!librarySymbol.startsWith("_")){librarySymbol="$"+sym}msg+=` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`;if(isExportedByForceFilesystem(sym)){msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"}warnOnce(msg)});unexportedRuntimeSymbol(sym)}function unexportedRuntimeSymbol(sym){if(!Object.getOwnPropertyDescriptor(Module,sym)){Object.defineProperty(Module,sym,{configurable:true,get(){var msg=`'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;if(isExportedByForceFilesystem(sym)){msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"}abort(msg)}})}}var callRuntimeCallbacks=callbacks=>{callbacks.forEach(f=>f(Module))};var noExitRuntime=Module["noExitRuntime"]||true;var ptrToString=ptr=>{assert(typeof ptr==="number");ptr>>>=0;return"0x"+ptr.toString(16).padStart(8,"0")};var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>{assert(typeof ptr=="number",`UTF8ToString expects a number (got ${typeof ptr})`);return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;assert(false,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")};function syscallGetVarargI(){assert(SYSCALLS.varargs!=undefined);var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{assert(typeof str==="string",`stringToUTF8Array expects a string (got ${typeof str})`);if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce("Invalid Unicode code point "+ptrToString(u)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var alignMemory=(size,alignment)=>{assert(alignment,"alignment argument is required");return Math.ceil(size/alignment)*alignment};var mmapAlloc=size=>{abort("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url).then(arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},err=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var strError=errno=>UTF8ToString(_strerror(errno));var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class extends Error{constructor(errno){super(runtimeInitialized?strError(errno):"");this.name="ErrnoError";this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}}},genericErrors:{},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){assert(typeof parent=="object");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){assert(fd>=-1);stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){if(typeof type=="string"){throw type}var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i=0);if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){assert(offset>=0);if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){assert(offset>=0);if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1);assert(stdin.fd===0,`invalid handle for stdin (${stdin.fd})`);assert(stdout.fd===1,`invalid handle for stdout (${stdout.fd})`);assert(stderr.fd===2,`invalid handle for stderr (${stderr.fd})`)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){assert(!FS.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;_fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node},absolutePath(){abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){abort("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){abort("FS.createLink has been removed; use FS.symlink instead")},joinPath(){abort("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){abort("FS.standardizePath has been removed; use PATH.normalize instead")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>{abort("native code called abort()")};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning);releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};var cls=$$.ptrType.registeredClass;var err=new Error(`Embind found a leaked C++ instance ${cls.name} <${ptrToString($$.ptr)}>.\n`+"We'll free it automatically in this case, but this functionality is not reliable across various environments.\n"+"Make sure to invoke .delete() manually once you're done with the instance instead.\n"+"Originally allocated");if("captureStackTrace"in Error){Error.captureStackTrace(err,RegisteredPointer_fromWireType)}info.leakWarning=err.stack.replace(/^Error: /,"");finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{assert(typeof name==="string");name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,"i");assert("dynCall_"+sig in Module,`bad function pointer type - dynCall function not found for sig '${sig}'`);if(args?.length){assert(args.length===sig.substring(1).replace(/j/g,"--").length)}else{assert(sig.length==1)}var f=Module["dynCall_"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}assert(wasmTable.get(funcPtr)==func,"JavaScript-side Wasm function table mirror is out of date!");return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),`missing table entry in dynCall: ${ptr}`);var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>{assert(sig.includes("j")||sig.includes("p"),"getDynCaller should only be called with i64 sigs");return(...args)=>dynCall(sig,ptr,args)};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;imaxArgs){var argCountMessage=minArgs==maxArgs?minArgs:`${minArgs} to ${maxArgs}`;throwBindingError(`function ${humanName} called with ${numArgs} arguments, expected ${argCountMessage}`)}}function createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync){var needsDestructorStack=usesDestructorStack(argTypes);var argCount=argTypes.length-2;var argsList=[];var argsListWired=["fn"];if(isClassMethodFunc){argsListWired.push("thisWired")}for(var i=0;i=2;--i){if(!argTypes[i].optional){break}requiredArgCount--}return requiredArgCount}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}assert(!isAsync,"Async bindings are only supported with JSPI.");var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=usesDestructorStack(argTypes);var returns=argTypes[0].name!=="void";var expectedArgCount=argCount-2;var minArgs=getRequiredArgCount(argTypes);var closureArgs=[humanName,throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];for(var i=0;i{assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){assert(signature[signature.length-1]==")","Parentheses for argument names should match.");return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var validateThis=(this_,classType,humanName)=>{if(!(this_ instanceof Object)){throwBindingError(`${humanName} with invalid "this": ${this_}`)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(`${humanName} incompatible with "this" of type ${this_.constructor.name}`)}if(!this_.$$.ptr){throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)};var __embind_register_class_property=(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],classType=>{classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])}else{desc.set=v=>throwBindingError(humanName+" is a read-only property")}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],types=>{var getterReturnType=types[0];var desc={get(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){assert(emval_handles[handle]!==undefined,`Decref for unallocated handle.`);emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);assert(emval_handles.length===5*2);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}assert(handle===2||emval_handles[handle]!==undefined&&handle%2===0,`invalid handle: ${handle}`);return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](HEAP8[pointer])}:function(pointer){return this["fromWireType"](HEAPU8[pointer])};case 2:return signed?function(pointer){return this["fromWireType"](HEAP16[pointer>>1])}:function(pointer){return this["fromWireType"](HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](HEAP32[pointer>>2])}:function(pointer){return this["fromWireType"](HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>{if(typeof value!="number"&&typeof value!="boolean"){throw new TypeError(`Cannot convert ${embindRepr(value)} to ${this.name}`)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{if(typeof value!="number"&&typeof value!="boolean"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${toTypeName}`)}if(valuemaxRange){throw new TypeError(`Passing a number "${embindRepr(value)}" from JS side to C/C++ side to an argument of type "${name}", which is outside the valid range [${minRange}, ${maxRange}]!`)}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>{assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{assert(ptr%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{assert(outPtr%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!");assert(typeof maxBytesToWrite=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{assert(ptr%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{assert(outPtr%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!");assert(typeof maxBytesToWrite=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);assert(winterName);assert(summerName);assert(lengthBytesUTF8(winterName)<=16,`timezone name truncated to fit in TZNAME_MAX (${winterName})`);assert(lengthBytesUTF8(summerName)<=16,`timezone name truncated to fit in TZNAME_MAX (${summerName})`);if(summerOffset2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){err(`growMemory: Attempted to grow heap from ${b.byteLength} bytes to ${size} bytes, but got error: ${e}`)}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;assert(requestedSize>oldSize);var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){err(`Cannot enlarge memory, requested ${requestedSize} bytes, but the limit is ${maxHeapSize} bytes!`);return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}err(`Failed to grow the heap from ${oldSize} bytes to ${newSize} bytes, not enough memory!`);return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>{assert(lo==lo>>>0||lo==(lo|0));assert(hi===(hi|0));return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN};function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var FS_createPath=FS.createPath;var FS_unlink=path=>FS.unlink(path);var FS_createLazyFile=FS.createLazyFile;var FS_createDevice=FS.createDevice;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();function checkIncomingModuleAPI(){ignoredModuleProp("fetchSettings")}var wasmImports={__assert_fail:___assert_fail,__cxa_throw:___cxa_throw,__syscall_fcntl64:___syscall_fcntl64,__syscall_ioctl:___syscall_ioctl,__syscall_openat:___syscall_openat,_abort_js:__abort_js,_embind_register_bigint:__embind_register_bigint,_embind_register_bool:__embind_register_bool,_embind_register_class:__embind_register_class,_embind_register_class_constructor:__embind_register_class_constructor,_embind_register_class_function:__embind_register_class_function,_embind_register_class_property:__embind_register_class_property,_embind_register_emval:__embind_register_emval,_embind_register_enum:__embind_register_enum,_embind_register_enum_value:__embind_register_enum_value,_embind_register_float:__embind_register_float,_embind_register_integer:__embind_register_integer,_embind_register_memory_view:__embind_register_memory_view,_embind_register_std_string:__embind_register_std_string,_embind_register_std_wstring:__embind_register_std_wstring,_embind_register_void:__embind_register_void,_emscripten_memcpy_js:__emscripten_memcpy_js,_emval_take_value:__emval_take_value,_tzset_js:__tzset_js,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=createExportWrapper("__wasm_call_ctors",0);var ___getTypeName=createExportWrapper("__getTypeName",1);var _malloc=createExportWrapper("malloc",1);var _fflush=createExportWrapper("fflush",1);var _strerror=createExportWrapper("strerror",1);var _free=createExportWrapper("free",1);var __emscripten_tempret_set=createExportWrapper("_emscripten_tempret_set",1);var __emscripten_tempret_get=createExportWrapper("_emscripten_tempret_get",0);var _emscripten_stack_init=()=>(_emscripten_stack_init=wasmExports["emscripten_stack_init"])();var _emscripten_stack_get_free=()=>(_emscripten_stack_get_free=wasmExports["emscripten_stack_get_free"])();var _emscripten_stack_get_base=()=>(_emscripten_stack_get_base=wasmExports["emscripten_stack_get_base"])();var _emscripten_stack_get_end=()=>(_emscripten_stack_get_end=wasmExports["emscripten_stack_get_end"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"])();var dynCall_jiji=Module["dynCall_jiji"]=createExportWrapper("dynCall_jiji",5);var dynCall_viijii=Module["dynCall_viijii"]=createExportWrapper("dynCall_viijii",7);var dynCall_iiiiij=Module["dynCall_iiiiij"]=createExportWrapper("dynCall_iiiiij",7);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=createExportWrapper("dynCall_iiiiijj",9);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=createExportWrapper("dynCall_iiiiiijj",10);Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPreloadedFile"]=FS_createPreloadedFile;Module["FS_unlink"]=FS_unlink;Module["FS_createPath"]=FS_createPath;Module["FS_createDevice"]=FS_createDevice;Module["FS"]=FS;Module["FS_createDataFile"]=FS_createDataFile;Module["FS_createLazyFile"]=FS_createLazyFile;var missingLibrarySymbols=["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertU32PairToI53","stackAlloc","getTempRet0","setTempRet0","exitJS","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","emscriptenLog","readEmAsmArgs","jstoi_q","listenOnce","autoResumeAudioContext","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asmjsMangle","HandleAllocator","getNativeTypeSize","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","getCFunc","ccall","cwrap","uleb128Encode","sigToWasmTypes","generateFuncType","convertJsFunctionToWasm","getEmptyTableSlot","updateTableMap","getFunctionAddress","addFunction","removeFunction","reallyNegative","unSign","strLen","reSign","formatString","intArrayToString","AsciiToString","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","battery","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","createDyncallWrapper","safeSetTimeout","setImmediateWrapped","clearImmediateWrapped","polyfillSetImmediate","registerPostMainLoop","registerPreMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","Browser_asyncPrepareDataCounter","safeRequestAnimationFrame","isLeapYear","ydayFromDate","arraySum","addDays","getSocketFromFD","getSocketAddress","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","setErrNo","demangle","stackTrace","getFunctionArgsName","createJsInvokerSignature","registerInheritedInstance","unregisterInheritedInstance","getInheritedInstanceCount","getLiveInheritedInstances","setDelayFunction","getStringOrSymbol","emval_get_global","emval_returnValue","emval_lookupTypes","emval_addMethodCaller"];missingLibrarySymbols.forEach(missingLibrarySymbol);var unexportedSymbols=["run","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","out","err","callMain","abort","wasmMemory","wasmExports","writeStackCookie","checkStackCookie","intArrayFromBase64","tryParseAsDataURI","convertI32PairToI53Checked","stackSave","stackRestore","ptrToString","zeroMemory","getHeapMax","growMemory","ENV","ERRNO_CODES","strError","DNS","Protocols","Sockets","initRandomFill","randomFill","timers","warnOnce","readEmAsmArgsArray","jstoi_s","getExecutableName","dynCallLegacy","getDynCaller","dynCall","asyncLoad","alignMemory","mmapAlloc","wasmTable","noExitRuntime","freeTableIndexes","functionsInTableMap","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","intArrayFromString","stringToAscii","UTF16Decoder","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","getEnvStrings","doReadv","doWritev","promiseMap","uncaughtExceptionCount","exceptionLast","exceptionCaught","ExceptionInfo","Browser","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","preloadPlugins","FS_modeStringToFlags","FS_getMode","FS_stdin_getChar_buffer","FS_stdin_getChar","FS_readFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","SDL","SDL_gfx","allocateUTF8","allocateUTF8OnStack","print","printErr","InternalError","BindingError","throwInternalError","throwBindingError","registeredTypes","awaitingDependencies","typeDependencies","tupleRegistrations","structRegistrations","sharedRegisterType","whenDependentTypesAreResolved","embind_charCodes","embind_init_charCodes","readLatin1String","getTypeName","getFunctionName","heap32VectorToArray","requireRegisteredType","usesDestructorStack","checkArgCount","getRequiredArgCount","createJsInvoker","UnboundTypeError","PureVirtualError","GenericWireTypeSize","EmValType","EmValOptionalType","throwUnboundTypeError","ensureOverloadTable","exposePublicSymbol","replacePublicSymbol","extendError","createNamedFunction","embindRepr","registeredInstances","getBasestPointer","getInheritedInstance","registeredPointers","registerType","integerReadValueFromPointer","enumReadValueFromPointer","floatReadValueFromPointer","readPointer","runDestructors","newFunc","craftInvokerFunction","embind__requireFunction","genericPointerToWireType","constNoSmartPtrRawPointerToWireType","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","RegisteredPointer_fromWireType","runDestructor","releaseClassHandle","finalizationRegistry","detachFinalizer_deps","detachFinalizer","attachFinalizer","makeClassHandle","init_ClassHandle","ClassHandle","throwInstanceAlreadyDeleted","deletionQueue","flushPendingDeletes","delayFunction","RegisteredClass","shallowCopyInternalPointer","downcastPointer","upcastPointer","validateThis","char_0","char_9","makeLegalFunctionName","emval_freelist","emval_handles","emval_symbols","init_emval","count_emval_handles","Emval","emval_methodCallers","reflectConstruct"];unexportedSymbols.forEach(unexportedRuntimeSymbol);var calledRun;var calledPrerun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(){if(runDependencies>0){return}stackCheckInit();if(!calledPrerun){calledPrerun=1;preRun();if(runDependencies>0){return}}function doRun(){if(calledRun)return;calledRun=1;Module["calledRun"]=1;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();assert(!Module["_main"],'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]');postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}checkStackCookie()}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;for(const prop of Object.keys(Module)){if(!(prop in moduleArg)){Object.defineProperty(moduleArg,prop,{configurable:true,get(){abort(`Access to module property ('${prop}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}})}} + + + return moduleRtn; +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = ocl; +else if (typeof define === 'function' && define['amd']) + define([], () => ocl); diff --git a/scripts/build-camotics-native.sh b/scripts/build-camotics-native.sh new file mode 100644 index 0000000..1be47df --- /dev/null +++ b/scripts/build-camotics-native.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +camotics_dir="$repo_root/CAMotics" +cbang_dir="$repo_root/.cache/camotics-native/cbang" +cbang_revision="9b6672a0e2b800a909d799ffa3ab46774cf171b8" +jobs=${CAMOTICS_BUILD_JOBS:-$(nproc)} + +test -f "$camotics_dir/SConstruct" +command -v git >/dev/null +command -v scons >/dev/null +command -v qmake >/dev/null +command -v moc >/dev/null +command -v uic >/dev/null +command -v lrelease >/dev/null +command -v pkg-config >/dev/null +python3 -c 'import six' >/dev/null +test -f /usr/include/v8/v8.h +pkg-config --exists Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL Qt5Network Qt5WebSockets + +if [[ ! -d "$cbang_dir/.git" ]]; then + mkdir -p "$(dirname "$cbang_dir")" + git clone --filter=blob:none https://github.com/CauldronDevelopmentLLC/cbang.git "$cbang_dir" +fi +current_revision=$(git -C "$cbang_dir" rev-parse HEAD) +if [[ "$current_revision" != "$cbang_revision" ]]; then + git -C "$cbang_dir" fetch --depth=1 origin "$cbang_revision" + git -C "$cbang_dir" checkout --detach "$cbang_revision" +fi +test "$(git -C "$cbang_dir" rev-parse HEAD)" = "$cbang_revision" +test -z "$(git -C "$cbang_dir" status --porcelain)" + +export QT_SELECT=qt5 +export CBANG_HOME="$cbang_dir" + +# The Debian V8 package is built without pointer compression. Keep C! and the +# CAMotics embedder on the same ABI instead of relying on the host default. +cbang_build_marker="$repo_root/.cache/camotics-native/cbang-build-v8-noptr-cxx17" +if [[ ! -f "$cbang_build_marker" || "$(<"$cbang_build_marker")" != "$cbang_revision" || ! -f "$cbang_dir/lib/libcbang.a" ]]; then + scons -C "$cbang_dir" strict=0 cxxstd=c++17 v8_compress_pointers=0 -j "$jobs" + printf '%s\n' "$cbang_revision" > "$cbang_build_marker" +fi +scons -C "$camotics_dir" strict=0 cxxstd=c++17 v8_compress_pointers=0 \ + with_gui=1 with_tpl=1 camotics tplang gcodetool planner camsim build/camotics.so -j "$jobs" + +"$camotics_dir/camotics" --version +"$camotics_dir/tplang" --version +sha256sum "$camotics_dir/camotics" "$camotics_dir/tplang" diff --git a/scripts/build-freecad-native.mjs b/scripts/build-freecad-native.mjs index dc24c5e..b2475db 100644 --- a/scripts/build-freecad-native.mjs +++ b/scripts/build-freecad-native.mjs @@ -2,9 +2,11 @@ import { execFileSync } from 'node:child_process' import { resolve } from 'node:path' const root = resolve(new URL('..', import.meta.url).pathname) -const build = resolve(root, '.cache/freecad/build-native') -const install = resolve(root, '.cache/freecad/install-native') +const profile = process.env.FREECAD_ORACLE_PROFILE || 'headless' +if (!['headless', 'desktop'].includes(profile)) throw new Error(`Unknown FreeCAD oracle profile: ${profile}`) +const build = resolve(root, profile === 'desktop' ? '.cache/freecad/build-desktop' : '.cache/freecad/build-native') +const install = resolve(root, profile === 'desktop' ? '.cache/freecad/install-desktop' : '.cache/freecad/install-native') const jobs = process.env.FREECAD_BUILD_JOBS || '4' execFileSync('cmake', ['--build', build, '--parallel', jobs], { cwd: root, stdio: 'inherit' }) execFileSync('cmake', ['--install', build], { cwd: root, stdio: 'inherit' }) -console.log(`FreeCAD native oracle installed: ${install}`) +console.log(`FreeCAD ${profile} oracle installed: ${install}`) diff --git a/scripts/build-opencamlib-wasm.mjs b/scripts/build-opencamlib-wasm.mjs new file mode 100644 index 0000000..73827e0 --- /dev/null +++ b/scripts/build-opencamlib-wasm.mjs @@ -0,0 +1,41 @@ +import { execFileSync } from 'node:child_process' +import { cp, mkdir, readFile, rm, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const source = resolve(root, 'OpenCAMLib') +const build = resolve(root, '.cache/opencamlib-wasm') +const boost = resolve(root, '.cache/opencamlib-boost') +const install = resolve(root, 'public/vendor/opencamlib') +const revision = execFileSync('git', ['-C', source, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() + +await rm(boost, { recursive: true, force: true }) +await mkdir(boost, { recursive: true }) +await cp('/usr/include/boost', resolve(boost, 'boost'), { recursive: true }) +await mkdir(build, { recursive: true }) + +const configure = [ + 'cmake', '-S', source, '-B', build, + '-D', 'BUILD_EMSCRIPTEN_LIB=ON', + '-D', 'BUILD_CXX_LIB=OFF', + '-D', 'BUILD_PY_LIB=OFF', + '-D', 'BUILD_NODEJS_LIB=OFF', + '-D', 'BUILD_DOC=OFF', + '-D', 'USE_OPENMP=OFF', + '-D', 'CMAKE_BUILD_TYPE=Release', + '-D', `CMAKE_INSTALL_PREFIX=${install}`, + '-D', `Boost_INCLUDE_DIR=${boost}`, + '-D', 'Boost_NO_SYSTEM_PATHS=ON', + '-D', `VERSION_STRING=${revision.slice(0, 16)}`, +] +execFileSync('emcmake', configure, { cwd: root, stdio: 'inherit' }) + +// The Debian Emscripten package omits the executable used only for optional JS minification. +const linkPath = resolve(build, 'src/CMakeFiles/ocl.dir/link.txt') +const originalLink = await readFile(linkPath, 'utf8') +const reproducibleLink = originalLink.replace(/\s+--closure\s+1\b/, '') +if (reproducibleLink === originalLink) throw new Error('OpenCAMLib generated link command did not contain the expected optional Closure flag.') +await writeFile(linkPath, reproducibleLink) +execFileSync('cmake', ['--build', build, '--target', 'ocl', '--parallel', '4'], { cwd: root, stdio: 'inherit' }) +execFileSync('cmake', ['--install', build], { cwd: root, stdio: 'inherit' }) +console.log(`Built OpenCAMLib ${revision} into ${install}`) diff --git a/scripts/check-bitbybit-history-surface.mjs b/scripts/check-bitbybit-history-surface.mjs index f6ff224..d8c20c5 100644 --- a/scripts/check-bitbybit-history-surface.mjs +++ b/scripts/check-bitbybit-history-surface.mjs @@ -19,6 +19,9 @@ const sourceCppFiles = (await run('git', ['-C', sourcePath, 'ls-tree', '-r', '-- if (sourceCppFiles.length !== 0) throw new Error(`Bitbybit source snapshot unexpectedly contains native source files (${sourceCppFiles.length}); review the custom binding build inputs.`) const declarationPath = resolve(root, 'node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.d.ts') const declarations = await readFile(declarationPath, 'utf8') +const wasmArtifactPath = resolve(root, matrix.bitbybitSource.wasmArtifact.path) +const wasmArtifactHash = createHash('sha256').update(await readFile(wasmArtifactPath)).digest('hex') +if (wasmArtifactHash !== matrix.bitbybitSource.wasmArtifact.sha256) throw new Error(`Bitbybit OCCT WASM hash mismatch: expected ${matrix.bitbybitSource.wasmArtifact.sha256}, got ${wasmArtifactHash}.`) const interfaceBody = (name) => { const match = declarations.match(new RegExp(`export interface ${name} extends ClassHandle \\{([\\s\\S]*?)\\n\\}`)) @@ -57,6 +60,7 @@ console.log(JSON.stringify({ version: packageJson.version, sourceCommit, sourceForm: matrix.bitbybitSource.sourceForm, + wasmArtifact: { status: matrix.bitbybitSource.wasmArtifact.status, path: matrix.bitbybitSource.wasmArtifact.path, sha256: wasmArtifactHash }, missingBuildInputs: matrix.bitbybitSource.missingBuildInputs, declarationPath: 'node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.d.ts', nativeBooleanHistory: { generated: false, modified: false, deleted: false }, diff --git a/scripts/check-built-pwa-assets.mjs b/scripts/check-built-pwa-assets.mjs new file mode 100644 index 0000000..4da72a2 --- /dev/null +++ b/scripts/check-built-pwa-assets.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const serviceWorker = await readFile(resolve(root, 'dist/sw.js'), 'utf8') +const shellMatch = serviceWorker.match(/const SHELL = (\[[^\n]+\])/) +if (!shellMatch) throw new Error('Built PWA Service Worker shell is missing.') +const shell = JSON.parse(shellMatch[1]) +const assetCount = shell.filter((entry) => entry.startsWith('/assets/')).length +if (!shell.includes('/index.html') || !shell.includes('/manifest.webmanifest') || assetCount < 5 || !shell.some((entry) => entry.endsWith('.wasm'))) throw new Error(`Built PWA precache is incomplete: ${assetCount} assets.`) +console.log(JSON.stringify({ status: 'built-pwa-assets-pass', shellEntries: shell.length, assetCount, wasmPrecached: shell.some((entry) => entry.endsWith('.wasm')) }, null, 2)) diff --git a/scripts/check-cam-parity.mjs b/scripts/check-cam-parity.mjs new file mode 100644 index 0000000..07e9a54 --- /dev/null +++ b/scripts/check-cam-parity.mjs @@ -0,0 +1,61 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const [contract, inventory, desktop, cam, app, pkg] = await Promise.all([ + readFile(resolve(root, 'config/freecad-cam-parity.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/freecad-gui-command-inventory.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/freecad-desktop-oracle.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/chrome-cam-verification.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/chrome-app-e2e-verification.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'package.json'), 'utf8').then(JSON.parse), +]) + +const fail = (message) => { throw new Error(message) } +if (contract.schemaVersion !== 1 || contract.status !== 'in_progress' || contract.claim !== 'compatible-browser-subset-not-exact-freecad-cam-parity') fail('CAM parity contract must preserve its explicit compatible, not exact, claim.') +if (contract.baseline?.commit !== inventory.baseline?.commit || contract.baseline.commit !== desktop.verification?.sourceCommit) fail('CAM parity sources do not match the locked FreeCAD baseline.') +if (desktop.verification?.guiUp !== true || desktop.status !== 'desktop-build-probed') fail('The locked FreeCAD desktop oracle has not been probed.') + +const commandIds = contract.commandSurface?.freecadCommandIds || [] +if (contract.commandSurface?.toolbarGroups !== 4 || contract.commandSurface.menuGroups !== 5 || contract.commandSurface.webCommands !== 60 || commandIds.length !== 60 || new Set(commandIds).size !== 60) fail('CAM command surface contract is incomplete.') +const runtimeIds = new Set(inventory.commands?.map((command) => command.id)) +const sourceOnlyIds = new Set(inventory.sourceOnlyCommands?.map((command) => command.id)) +const freecadRuntimeCamIds = [...runtimeIds].filter((id) => id.startsWith('CAM_')) +const freecadSourceOnlyCamIds = [...sourceOnlyIds].filter((id) => id.startsWith('CAM_')) +if (contract.commandSurface.freecadCamRuntimeCommands !== freecadRuntimeCamIds.length || contract.commandSurface.freecadCamSourceOnlyCommands !== freecadSourceOnlyCamIds.length) fail('FreeCAD CAM inventory command count changed; regenerate and review the parity contract.') +const missingIds = commandIds.filter((id) => !runtimeIds.has(id) && !sourceOnlyIds.has(id)) +if (missingIds.length) fail(`CAM commands missing from the FreeCAD inventory: ${missingIds.join(', ')}`) +if (commandIds.filter((id) => runtimeIds.has(id)).length !== 56 || commandIds.filter((id) => sourceOnlyIds.has(id)).length !== 4) fail('CAM command inventory runtime/source-only split changed; regenerate and review the parity contract.') +const notYetSurfaced = contract.commandSurface.notYetSurfacedCommands || [] +const allFreecadCamIds = new Set([...freecadRuntimeCamIds, ...freecadSourceOnlyCamIds]) +const nonActionableTemplates = contract.commandSurface.nonActionableSourceTemplates || [] +if (notYetSurfaced.length !== 0 || nonActionableTemplates.length !== 1 || nonActionableTemplates.some((id) => !sourceOnlyIds.has(id)) || new Set([...commandIds, ...nonActionableTemplates]).size !== allFreecadCamIds.size) fail('CAM surfaced/inventory command partition is inconsistent.') + +const domain = contract.browserDomain || {} +if (domain.stockModes !== 4 || domain.toolShapes !== 7 || domain.operationKinds !== 22 || domain.dressupKinds !== 9 || domain.postprocessors !== 7) fail('CAM browser domain enumeration is incomplete.') +if (!Array.isArray(contract.coverage) || contract.coverage.length !== 12 || new Set(contract.coverage.map((item) => item.id)).size !== 12) fail('CAM-21..CAM-32 coverage must enumerate twelve unique tasks.') +if (contract.coverage.filter((item) => item.level === 'exact').length !== 1 || contract.coverage.find((item) => item.level === 'exact')?.id !== 'CAM-21') fail('Only the locked static CAM command manifest may currently claim exact coverage.') +for (const item of contract.coverage) if (!pkg.scripts?.[item.evidence]) fail(`CAM parity evidence script is missing for ${item.id}: ${item.evidence}`) +const tasks = contract.tasks || {} +if (tasks.completed !== 8 || tasks.inProgress !== 4 || tasks.pending !== 0 || tasks.blocked !== 0 || tasks.completed + tasks.inProgress + tasks.pending + tasks.blocked !== 12) fail('CAM parity task status summary is inconsistent.') +if (!Array.isArray(contract.unclosedDifferences) || contract.unclosedDifferences.length !== 7) fail('CAM parity must keep all seven unclosed difference classes explicit.') + +if (cam.status !== 'pass' || cam.browserId !== 'chrome' || cam.job?.tools !== 2 || cam.job.controllers !== 2 || cam.job.operations !== 3 || cam.job.pathPoints < 20 || cam.job.dressups !== 1) fail('Chrome CAM domain evidence is incomplete.') +if (cam.job?.sanity !== 'pass' || cam.job.simulation !== 'pass' || cam.job.collisionFixture < 1 || cam.job.unsafePostRejected !== true || cam.job.deterministic !== true || Object.keys(cam.job.postHashes || {}).length !== 7) fail('Chrome CAM safety, simulation or post evidence is incomplete.') +if (cam.extended?.commandSurface !== 60 || cam.extended.operationKinds !== 22 || cam.extended.dressupKinds !== 9 || cam.extended.toolAssetRoundTrip !== true || cam.extended.jobAssetRoundTrip !== true || cam.extended.undoRedo !== true || cam.extended.startPointChanged !== true || cam.extended.materialRemoval !== true || cam.extended.removalTimelinePoints !== cam.job.pathPoints || cam.extended.fixtureCollision !== true || cam.extended.multiAxis !== true) fail('Chrome CAM extended command, asset lifecycle, material removal, fixture or multi-axis evidence is incomplete.') +if (cam.persistence?.roundTrip !== true || cam.persistence.released !== true || cam.afterRelease?.shapeCount !== 0 || cam.afterRelease.kernelReferenceCount !== 0) fail('Chrome CAM lifecycle evidence is incomplete.') +const requiredAppWorkflows = ['cam-workbench-job-flow', 'viewport-multi-object-box-selection'] +if (app.status !== 'pass' || !Array.isArray(app.workflows) || app.workflows.length < 13 || requiredAppWorkflows.some((workflow) => !app.workflows.includes(workflow)) || app.pageErrors?.length !== 0) fail('Chrome application CAM workflow evidence is incomplete.') +if (app.uiParity?.camMenu?.items !== 60 || app.uiParity.camMenu.groups?.length !== 5 || app.cam?.ui?.commandGroups !== 4 || app.cam.ui.toolbarCommands !== 60 || app.cam.ui.toolpathPoints < 5 || app.cam.ui.toolpathOperations < 1 || app.cam.ui.toolpathLegend !== true || app.cam.ui.horizontalOverflow !== 0) fail('CAM workbench UI evidence is incomplete.') + +console.log(JSON.stringify({ + status: 'cam-parity-contract-pass', + baseline: contract.baseline, + claim: contract.claim, + commands: { total: commandIds.length, runtimeProbed: 56, sourceOnly: 4, nonActionableTemplates: nonActionableTemplates.length }, + browserDomain: domain, + tasks, + chrome: { workflows: app.workflows.length, menuItems: app.uiParity.camMenu.items, toolbarCommands: app.cam.ui.toolbarCommands, menuGroups: app.uiParity.camMenu.groups.length, toolpathPoints: app.cam.ui.toolpathPoints }, + unclosedDifferences: contract.unclosedDifferences.length, + notYetSurfacedCommands: notYetSurfaced.length, +}, null, 2)) diff --git a/scripts/check-cam-pipeline.mjs b/scripts/check-cam-pipeline.mjs new file mode 100644 index 0000000..cb6d4a2 --- /dev/null +++ b/scripts/check-cam-pipeline.mjs @@ -0,0 +1,30 @@ +import { execFileSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const source = resolve(root, 'CAMotics') +if (!existsSync(source)) throw new Error('CAMotics source tree is required by the CAM pipeline.') +const revision = execFileSync('git', ['-C', source, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (revision !== 'e84665f2fa9d1151f03282ac7e01320bc65e015b') throw new Error(`CAMotics source revision drift: ${revision}`) +for (const file of ['src/gcodetool.cpp', 'src/camsim.cpp', 'src/gcode/parse/Parser.cpp']) { + if (!existsSync(resolve(source, file))) throw new Error(`CAMotics source artifact missing: ${file}`) +} +for (const file of ['camsim', 'gcodetool', 'planner', 'build/camotics.so']) { + if (!existsSync(resolve(source, file))) throw new Error(`CAMotics native artifact missing: ${file}`) +} +console.log(JSON.stringify({ + status: 'cam-pipeline-pass', + order: ['CAD', 'OCL', 'CAMotics', 'GCODE', 'LinuxCNC WASM'], + camotics: { + sourcePath: 'CAMotics', + sourceRevision: revision, + generator: 'camotics-source-stage', + simulator: 'camotics-camsim', + workspaceNativeCli: 'verified-sidecar', + browserNativeExecutable: false, + parserAuthority: 'linuxcnc-wasm', + camoticsParsesCanonicalGcode: false, + }, + linuxcnc: { backend: 'linuxcnc-wasm', parserAuthority: 'linuxcnc-wasm' }, +}, null, 2)) diff --git a/scripts/check-camotics-gui-tpl.mjs b/scripts/check-camotics-gui-tpl.mjs new file mode 100644 index 0000000..e76e9d0 --- /dev/null +++ b/scripts/check-camotics-gui-tpl.mjs @@ -0,0 +1,32 @@ +import { createHash } from 'node:crypto' +import { execFileSync, spawnSync } from 'node:child_process' +import { readFile, stat } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const evidence = JSON.parse(await readFile(resolve(root, 'config/camotics-native-artifact.json'), 'utf8')) +const sha256 = (bytes) => createHash('sha256').update(bytes).digest('hex') + +if (evidence.schemaVersion !== 2 || evidence.status !== 'pass' || evidence.build.withGui !== true || evidence.build.withTpl !== true) throw new Error('CAMotics GUI/TPL evidence is not passing.') +const revision = execFileSync('git', ['-C', resolve(root, evidence.source.path), 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (revision !== evidence.source.revision) throw new Error(`CAMotics GUI/TPL source revision drift: ${revision}`) +for (const [path, expected] of Object.entries(evidence.artifacts)) { + const absolute = resolve(root, path) + const bytes = await readFile(absolute) + const metadata = await stat(absolute) + const digest = sha256(bytes) + if (!metadata.isFile() || (metadata.mode & 0o111) === 0 || bytes.byteLength !== expected.bytes || digest !== expected.sha256) throw new Error(`CAMotics GUI/TPL artifact drift: ${path}`) +} + +const runHelp = (binary, env = {}) => { + const result = spawnSync(resolve(root, binary), ['--help'], { encoding: 'utf8', env: { ...process.env, ...env } }) + const output = `${result.stdout}${result.stderr}` + return { status: result.status, output } +} +const camotics = runHelp('CAMotics/camotics', { QT_QPA_PLATFORM: 'offscreen' }) +const tplang = runHelp('CAMotics/tplang') +if (camotics.status !== 0 || tplang.status !== 0 || !camotics.output.includes('Usage:') || !tplang.output.includes('Usage:')) throw new Error('CAMotics GUI/TPL help smoke failed.') +if (evidence.guiSmoke.status !== 'pass' || evidence.guiSmoke.window.mapState !== 'IsViewable' || evidence.guiSmoke.window.width !== 1200 || evidence.guiSmoke.window.height !== 800 || evidence.guiSmoke.browserRuntime !== false) throw new Error('CAMotics GUI Xvfb smoke boundary is invalid.') +if (evidence.pipelineBoundary.workspaceNativeGuiAvailable !== true || evidence.pipelineBoundary.workspaceNativeTplAvailable !== true || evidence.pipelineBoundary.browserNativeGuiAvailable !== false || evidence.pipelineBoundary.browserNativeTplAvailable !== false || evidence.pipelineBoundary.canonicalGcodeParser !== 'linuxcnc-wasm') throw new Error('CAMotics GUI/TPL browser boundary is invalid.') + +console.log(JSON.stringify({ status: 'camotics-gui-tpl-pass', sourceRevision: revision, version: evidence.source.version, artifacts: evidence.artifacts, smoke: { camotics: { exitCode: camotics.status }, tplang: { exitCode: tplang.status }, gui: evidence.guiSmoke }, browserBoundary: evidence.pipelineBoundary }, null, 2)) diff --git a/scripts/check-camotics-native.mjs b/scripts/check-camotics-native.mjs new file mode 100644 index 0000000..82a714b --- /dev/null +++ b/scripts/check-camotics-native.mjs @@ -0,0 +1,79 @@ +import { createHash } from 'node:crypto' +import { execFileSync, spawnSync } from 'node:child_process' +import { readFile, stat } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const evidence = JSON.parse(await readFile(resolve(root, 'config/camotics-native-artifact.json'), 'utf8')) +const sha256 = (value) => createHash('sha256').update(value).digest('hex') +const run = (command, args, options = {}) => { + const result = spawnSync(command, args, { encoding: 'utf8', ...options }) + if (result.error || result.status !== 0) throw new Error(`${command} failed: ${result.error?.message || result.stderr || result.stdout}`) + return result +} + +if (evidence.schemaVersion !== 2 || evidence.status !== 'pass') throw new Error('CAMotics native evidence is not passing.') +const camoticsPath = resolve(root, evidence.source.path) +const camoticsRevision = execFileSync('git', ['-C', camoticsPath, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (camoticsRevision !== evidence.source.revision) throw new Error(`CAMotics source revision drift: ${camoticsRevision}`) +const cbangPath = resolve(root, evidence.cbang.path) +const cbangRevision = execFileSync('git', ['-C', cbangPath, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (cbangRevision !== evidence.cbang.revision) throw new Error(`C! source revision drift: ${cbangRevision}`) +if (execFileSync('git', ['-C', cbangPath, 'status', '--porcelain'], { encoding: 'utf8' }).trim() !== '') throw new Error('Pinned C! checkout is dirty.') + +const cbangSConstruct = await readFile(resolve(root, 'CAMotics/cbang/SConstruct'), 'utf8') +if (!cbangSConstruct.includes(`version = '${evidence.cbang.version}'`)) throw new Error('C! version does not match native evidence.') +if (!evidence.build.options.includes('v8_compress_pointers=0') || evidence.build.withGui !== true || evidence.build.withTpl !== true || evidence.build.browserExecutable !== false || evidence.pipelineBoundary.workspaceNativeCliAvailable !== true) throw new Error('CAMotics native build boundary is invalid.') + +for (const [path, expected] of Object.entries(evidence.artifacts)) { + const absolute = resolve(root, path) + const artifact = await readFile(absolute) + const metadata = await stat(absolute) + if (!metadata.isFile() || (metadata.mode & 0o111) === 0) throw new Error(`CAMotics artifact is not executable: ${path}`) + if (artifact.byteLength !== expected.bytes || sha256(artifact) !== expected.sha256) throw new Error(`CAMotics artifact size or digest mismatch: ${path}`) + if (artifact.subarray(0, 4).toString('ascii') !== '\x7fELF') throw new Error(`CAMotics artifact is not an ELF executable: ${path}`) +} + +for (const [path, expected] of Object.entries(evidence.cliArtifacts ?? {})) { + const absolute = resolve(root, path) + const artifact = await readFile(absolute) + const metadata = await stat(absolute) + if (!metadata.isFile() || (metadata.mode & 0o111) === 0 || artifact.byteLength !== expected.bytes || sha256(artifact) !== expected.sha256) throw new Error(`CAMotics CLI artifact size or digest mismatch: ${path}`) + if (artifact.subarray(0, 4).toString('ascii') !== '\x7fELF') throw new Error(`CAMotics CLI artifact is not an ELF file: ${path}`) +} + +const camoticsVersionProbe = run(resolve(root, 'CAMotics/camotics'), ['--version']) +const tplVersionProbe = run(resolve(root, 'CAMotics/tplang'), ['--version']) +const camoticsVersion = `${camoticsVersionProbe.stdout}${camoticsVersionProbe.stderr}`.trim() +const tplVersion = `${tplVersionProbe.stdout}${tplVersionProbe.stderr}`.trim() +if (camoticsVersion !== evidence.source.version || tplVersion !== evidence.source.version) throw new Error(`CAMotics version probe failed: ${camoticsVersion}/${tplVersion}`) + +const tplTests = run(resolve(root, 'CAMotics/tests/testHarness'), ['--no-color'], { cwd: resolve(root, 'CAMotics/tests/tplTests') }) +const passed = Number(tplTests.stdout.match(/^Passed\s+(\d+)/m)?.[1] ?? -1) +const failed = Number(tplTests.stdout.match(/^Failed\s+(\d+)/m)?.[1] ?? -1) +if (passed !== evidence.tplTests.passed || failed !== evidence.tplTests.failed) throw new Error(`TPL test result drift: ${passed}/${failed}`) + +const tplExample = run(resolve(root, 'CAMotics/tplang'), [resolve(root, 'CAMotics/examples/box/box.tpl')]) +const tplBytes = Buffer.from(tplExample.stdout) +if (tplBytes.byteLength !== evidence.tplExample.bytes || sha256(tplBytes) !== evidence.tplExample.sha256) throw new Error('TPL example output drift.') + +const nativeLinks = run('ldd', [resolve(root, 'CAMotics/camotics')]).stdout +for (const required of ['libQt5Widgets', 'libQt5WebSockets', 'libQt5Network', 'libQt5Core', 'libnode']) if (!nativeLinks.includes(required)) throw new Error(`CAMotics GUI is missing runtime dependency ${required}.`) + +if (evidence.guiSmoke.status !== 'pass' || evidence.guiSmoke.window.mapState !== 'IsViewable' || evidence.guiSmoke.window.width !== 1200 || evidence.guiSmoke.window.height !== 800 || evidence.guiSmoke.window.depth !== 24 || evidence.guiSmoke.processAliveBeforeTerminate !== true || evidence.guiSmoke.browserRuntime !== false) throw new Error('CAMotics GUI smoke boundary is invalid.') +if (evidence.pipelineBoundary.workspaceNativeGuiAvailable !== true || evidence.pipelineBoundary.workspaceNativeTplAvailable !== true || evidence.pipelineBoundary.workspaceNativeCliAvailable !== true || evidence.pipelineBoundary.browserNativeGuiAvailable !== false || evidence.pipelineBoundary.browserNativeTplAvailable !== false || evidence.pipelineBoundary.canonicalGcodeParser !== 'linuxcnc-wasm' || evidence.pipelineBoundary.camoticsParsesCanonicalPipelineGcode !== false) throw new Error('CAMotics/LinuxCNC authority boundary is invalid.') +for (const [path, smoke] of Object.entries(evidence.cliSmoke ?? {})) if (smoke.exitCode !== 0 || smoke.containsUsage !== true) throw new Error(`CAMotics CLI smoke failed: ${path}`) + +console.log(JSON.stringify({ + status: 'camotics-native-pass', + camoticsRevision, + cbangRevision, + versions: { camotics: camoticsVersion, tplang: tplVersion }, + artifacts: evidence.artifacts, + cliArtifacts: evidence.cliArtifacts, + cliSmoke: evidence.cliSmoke, + tplTests: { passed, failed }, + tplExample: evidence.tplExample, + guiSmoke: evidence.guiSmoke, + pipelineBoundary: evidence.pipelineBoundary, +}, null, 2)) diff --git a/scripts/check-camotics-wasm.mjs b/scripts/check-camotics-wasm.mjs new file mode 100644 index 0000000..a25f9c9 --- /dev/null +++ b/scripts/check-camotics-wasm.mjs @@ -0,0 +1,38 @@ +import { createHash } from 'node:crypto' +import { execFileSync } from 'node:child_process' +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const evidence = JSON.parse(await readFile(resolve(root, 'config/camotics-wasm-artifact.json'), 'utf8')) +const sha256 = (bytes) => createHash('sha256').update(bytes).digest('hex') + +if (evidence.schemaVersion !== 1 || evidence.status !== 'pass' || evidence.kind !== 'standalone-camotics-sweep-wasm-kernel') throw new Error('CAMotics WASM evidence is not passing.') +const revision = execFileSync('git', ['-C', resolve(root, evidence.upstream.path), 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (revision !== evidence.upstream.revision) throw new Error(`CAMotics WASM source revision drift: ${revision}`) +for (const [path, expected] of Object.entries(evidence.build.sourceFiles)) { + const bytes = await readFile(resolve(root, path)) + if (sha256(bytes) !== expected) throw new Error(`CAMotics WASM source fingerprint drift: ${path}`) +} + +const bytes = await readFile(resolve(root, evidence.artifact.path)) +if (bytes.byteLength !== evidence.artifact.bytes || sha256(bytes) !== evidence.artifact.sha256) throw new Error('CAMotics WASM artifact size or digest mismatch.') +const module = new WebAssembly.Module(bytes) +const imports = WebAssembly.Module.imports(module) +if (imports.length !== 0 || evidence.artifact.imports.length !== 0) throw new Error('CAMotics WASM must be standalone with zero imports.') +const exports = new Set(WebAssembly.Module.exports(module).map((entry) => entry.name)) +for (const required of evidence.artifact.requiredExports) if (!exports.has(required)) throw new Error(`CAMotics WASM export is missing: ${required}`) + +const instance = await WebAssembly.instantiate(module, {}) +const api = instance.exports +if (api.camotics_sweep_abi_version() !== evidence.artifact.abiVersion) throw new Error('CAMotics WASM ABI version drift.') +const smoke = { + conicInsideDepth: api.camotics_conic_depth(5, 2, 2, 0, 0, 0, 10, 0, 0, 5, 0, 0), + conicOutsideDepth: api.camotics_conic_depth(5, 2, 2, 0, 0, 0, 10, 0, 0, 5, 4, 0), + spheroidInsideDepth: api.camotics_spheroid_depth(2, 4, 0, 0, 0, 10, 0, 0, 5, 0, 0), + longMoveBoundingBoxes: api.camotics_conic_bbox_count(5, 2, 2, 0, 0, 0, 100, 0, 0, 0.01), +} +if (JSON.stringify(smoke) !== JSON.stringify(evidence.smoke)) throw new Error(`CAMotics WASM smoke drift: ${JSON.stringify(smoke)}`) +if (evidence.scope.actualUpstreamCppCompiled !== true || evidence.scope.browserExecutable !== true || evidence.scope.fullCamoticsProgram !== false || evidence.scope.gcodeParserIncluded !== false || evidence.scope.canonicalGcodeParser !== 'linuxcnc-wasm') throw new Error('CAMotics WASM capability boundary is invalid.') + +console.log(JSON.stringify({ status: 'camotics-wasm-pass', sourceRevision: revision, artifact: { bytes: bytes.byteLength, sha256: sha256(bytes), imports: imports.length, exports: [...exports].filter((name) => evidence.artifact.requiredExports.includes(name)) }, abiVersion: evidence.artifact.abiVersion, smoke, scope: evidence.scope }, null, 2)) diff --git a/scripts/check-chrome-addon.mjs b/scripts/check-chrome-addon.mjs new file mode 100644 index 0000000..5a76dfe --- /dev/null +++ b/scripts/check-chrome-addon.mjs @@ -0,0 +1,3 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-addon-verification.json'), 'utf8')); if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome addon governance verification is not passing.'); if (report.catalog?.installed !== 1 || report.catalog.revision !== 1 || report.catalog.rollbackVersion !== '1.0.0') throw new Error('Addon update/rollback evidence is incomplete.'); if (!report.security?.forgedRejected || !report.security.permissionRejected || !report.security.removed) throw new Error('Addon security evidence is incomplete.'); if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Addon OPFS resource evidence is incomplete.'); if (report.opfs?.markerSuite !== 'ADDON-ALL' || report.opfs.markerInstalled !== 1 || report.opfs.markerRemoved !== true) throw new Error('Addon OPFS marker evidence is incomplete.'); if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Addon harness leaked ShapeHandles.'); console.log(JSON.stringify({ status: 'chrome-addon-pass', browser: report.browser.product, catalog: report.catalog, security: report.security, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-app-e2e-verification.mjs b/scripts/check-chrome-app-e2e-verification.mjs new file mode 100644 index 0000000..57e2735 --- /dev/null +++ b/scripts/check-chrome-app-e2e-verification.mjs @@ -0,0 +1,43 @@ +import { createHash } from 'node:crypto' +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-app-e2e-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass') throw new Error('Chrome application E2E evidence is not passing.') +if (!/^HeadlessChrome\//.test(report.browser?.product || '') && !/^Chrome\//.test(report.browser?.product || '')) throw new Error('Chrome application E2E evidence has an unexpected browser product.') +if (report.headers?.coop !== 'same-origin' || report.headers?.coep !== 'require-corp') throw new Error('Chrome application E2E evidence is missing cross-origin isolation headers.') +if (!Array.isArray(report.pageErrors) || report.pageErrors.length !== 0) throw new Error('Chrome application E2E evidence contains page errors.') +if (report.desktop?.path !== '/workspace/pump-housing' || report.desktop?.workbench !== 'Part Design' || report.desktop?.bodyHorizontalOverflow > 1 || report.desktop?.overflowingControls !== 0 || report.desktop?.panelsSeparated !== true || report.desktop?.commandGroups < 4 || !report.desktop?.comboTabs?.some((label) => label.startsWith('Model')) || !report.desktop?.comboTabs?.some((label) => label.startsWith('Tasks')) || report.desktop?.selectionView !== true || report.desktop?.statusBar !== true) throw new Error('Chrome desktop workflow or layout evidence is invalid.') +if (report.uiParity?.fileMenu?.items < 7 || report.uiParity?.fileMenu?.expanded !== 'File' || !report.uiParity?.fileMenu?.labels?.some((label) => label.includes('Save'))) throw new Error('Chrome FreeCAD menu evidence is invalid.') +if (report.uiParity?.commandDialog?.modal !== true || report.uiParity?.commandDialog?.results < 10 || report.uiParity?.commandDialog?.title !== 'Command search' || report.uiParity?.commandDialog?.focused !== 'Command search') throw new Error('Chrome command search dialog evidence is invalid.') +if (report.uiParity?.preferencesDialog?.modal !== true || report.uiParity?.preferencesDialog?.selects !== 3 || report.uiParity?.preferencesDialog?.checks !== 2 || report.uiParity?.aboutDialog?.modal !== true || report.uiParity?.aboutDialog?.baseline !== true) throw new Error('Chrome Preferences/About dialog evidence is invalid.') +if (report.uiParity?.contextMenu?.items?.length !== 4 || !report.uiParity?.contextMenu?.items?.some((label) => label.includes('Toggle visibility')) || !report.uiParity?.contextMenu?.items?.some((label) => label.includes('Delete')) || report.uiParity?.contextMenu?.left < 0 || report.uiParity?.contextMenu?.top < 0) throw new Error('Chrome model tree context menu evidence is invalid.') +if (report.uiParity?.multiSelection?.count !== 2 || JSON.stringify(report.uiParity.multiSelection.labels) !== JSON.stringify(['Sketch', 'Pad'])) throw new Error('Chrome model tree multi-selection evidence is invalid.') +if (!report.workflows?.includes('viewport-multi-object-box-selection') || report.uiParity?.viewportBoxSelection?.objectCount < 2 || report.uiParity.viewportBoxSelection.topologySource !== 'occt-analytic' || report.uiParity.viewportBoxSelection.edgeCount < 4 || report.uiParity.viewportBoxSelection.vertexCount < 4 || report.uiParity.viewportBoxSelection.selectedCount < 2 || !report.uiParity.viewportBoxSelection.labels?.includes('Box') || !report.uiParity.viewportBoxSelection.labels?.includes('Cylinder')) throw new Error('Chrome viewport multi-object box-selection or analytic topology evidence is invalid.') +if (!report.workflows?.includes('cam-workbench-job-flow') || report.uiParity?.camMenu?.items !== 60 || JSON.stringify(report.uiParity?.camMenu?.groups) !== JSON.stringify(['Project Setup', 'Simulation and Tools', '2D Operations', 'Machining Operations', 'Path Modification'])) throw new Error('Chrome FreeCAD CAM menu evidence is invalid.') +if (report.cam?.jobTask?.stockModes !== 4 || report.cam.jobTask.fields < 5 || report.cam?.toolTask?.selects < 2 || report.cam.toolTask.inputs !== 13 || report.cam?.operationTask?.inputs < 5 || report.cam.operationTask.selects < 2) throw new Error('Chrome CAM Task panel evidence is invalid.') +if (report.cam?.undoRedo?.undo?.pathPoints !== 0 || report.cam.undoRedo.undo.redoEnabled !== true || report.cam?.undoRedo?.redo?.pathPoints < 5 || report.cam.undoRedo.redo.undoEnabled !== true) throw new Error('Chrome CAM Undo/Redo UI evidence is invalid.') +if (report.cam?.extendedTasks?.fixture?.inputs !== 7 || report.cam.extendedTasks.fixture.section !== true || !report.cam.extendedTasks.fixture.labels?.some((label) => label.includes('Fixture ID')) || !report.cam.extendedTasks.fixture.labels?.some((label) => label.includes('Max Z')) || report.cam?.extendedTasks?.toolBitLoad?.inputs !== 1 || report.cam.extendedTasks.toolBitLoad.textareas !== 1 || report.cam.extendedTasks.toolBitLoad.schemaVersion !== true || report.cam?.extendedTasks?.drilling?.inputs !== 5 || report.cam.extendedTasks.drilling.selects !== 2 || !report.cam.extendedTasks.drilling.labels?.some((label) => label.includes('Final Depth')) || report.cam?.extendedTasks?.dragKnife?.inputs !== 1 || report.cam.extendedTasks.dragKnife.selects !== 1 || report.cam.extendedTasks.dragKnife.knifeOffset !== true || report.cam?.extendedTasks?.post?.inputs !== 4 || report.cam.extendedTasks.post.selects !== 4 || !report.cam.extendedTasks.post.labels?.some((label) => label.includes('Rotary End')) || !report.cam.extendedTasks.post.labels?.some((label) => label.includes('Tilt End')) || !report.cam.extendedTasks.post.note?.includes('rotary limit checks')) throw new Error('Chrome extended CAM Task panel evidence is invalid.') +if (report.cam?.ui?.workbench !== 'CAM' || report.cam.ui.commandGroups !== 4 || report.cam.ui.toolbarCommands !== 60 || report.cam.ui.jobTree !== true || report.cam.ui.treeRows < 7 || report.cam.ui.operations !== 1 || report.cam.ui.generated !== true || report.cam.ui.toolpathPoints < 5 || report.cam.ui.toolpathOperations !== 1 || report.cam.ui.toolpathLegend !== true || report.cam.ui.horizontalOverflow > 1) throw new Error('Chrome CAM Job tree, toolbar or toolpath evidence is invalid.') +if (report.loftTask?.sectionCount < 1 || report.loftTask?.checkedSectionCount !== 1 || !report.loftTask?.labels?.includes('Sketch (sketch)') || report.loftTask?.panelHorizontalOverflow > 1) throw new Error('Chrome Loft task evidence is invalid.') +if (report.desktop?.kernelPreviewSource !== 'bitbybit-occt' || report.desktop?.canvas?.width < 100 || report.desktop?.canvas?.height < 100 || report.desktop?.canvas?.uniqueColors < 4 || report.desktop?.canvas?.glError !== 0) throw new Error('Chrome OCCT preview or WebGL canvas evidence is blank or invalid.') +if (report.persistenceRoundTrip?.path !== '/workspace/pump-housing' || !report.persistenceRoundTrip?.documentLabel?.includes('Pump Housing') || report.persistenceRoundTrip?.persistenceMode !== 'sqlite-opfs') throw new Error('Chrome OPFS save/reopen evidence is invalid.') +if (report.importFlow?.path !== '/import' || report.importFlow?.accept !== '.FCStd,.fcstd,.step,.stp,.iges,.igs,.brep,.brp' || report.importFlow?.exchangeHint !== true) throw new Error('Chrome import format workflow evidence is invalid.') +if (report.exportFlow?.path !== '/export' || report.exportFlow?.formats?.STEP?.selected !== true || report.exportFlow?.formats?.STEP?.disabled !== false || report.exportFlow?.formats?.STL?.disabled !== false || report.exportFlow?.formats?.IGES?.disabled !== false || report.exportFlow?.selectedAfterInteraction !== 'STL') throw new Error('Chrome export format workflow evidence is invalid.') +if (report.mobile?.path !== '/start' || report.mobile?.viewport?.width !== 390 || report.mobile?.bodyHorizontalOverflow > 1 || report.mobile?.visibleHeading !== true || report.mobile?.visibleActions !== true) throw new Error('Chrome mobile layout evidence is invalid.') +if (!Number.isSafeInteger(report.accessibility?.checked) || report.accessibility.checked < 1 || !Array.isArray(report.accessibility.missing) || report.accessibility.missing.length !== 0) throw new Error('Chrome accessibility naming evidence is invalid.') +if (!Number.isSafeInteger(report.screenReader?.nodes) || report.screenReader.nodes < 10 || report.screenReader.controls < 8 || report.screenReader.namedControls !== report.screenReader.controls || report.screenReader.unnamedControls !== 0) throw new Error('Chrome accessibility tree evidence is invalid.') +if (report.keyboard?.steps !== 8 || report.keyboard?.named !== 8 || report.keyboard?.unnamedVisible !== 0 || !Array.isArray(report.keyboard.sequence) || report.keyboard.sequence.length !== 8) throw new Error('Chrome keyboard focus evidence is invalid.') +if (report.pwa?.manifestLinked !== true || report.pwa?.manifestStatus !== 200 || report.pwa?.name !== 'BitBybit CAD Studio' || report.pwa?.startUrl !== '/start' || report.pwa?.scope !== '/' || report.pwa?.display !== 'standalone') throw new Error('Chrome PWA manifest evidence is invalid.') +if (report.offline?.path !== '/start' || report.offline?.shell !== true || report.offline?.heading !== true) throw new Error('Chrome offline shell evidence is invalid.') +if (Object.keys(report.screenshots || {}).length !== 3 || !report.screenshots?.cam?.path?.endsWith('cam-workbench.png')) throw new Error('Chrome CAM screenshot evidence is missing.') + +for (const screenshot of Object.values(report.screenshots || {})) { + if (!screenshot?.path || screenshot.byteLength < 20_000 || !/^[a-f0-9]{64}$/.test(screenshot.sha256 || '')) throw new Error('Chrome screenshot metadata is invalid.') + const bytes = await readFile(resolve(root, screenshot.path)) + if (bytes.byteLength !== screenshot.byteLength || bytes.subarray(0, 8).toString('hex') !== '89504e470d0a1a0a') throw new Error(`Chrome screenshot is missing or is not PNG: ${screenshot.path}`) + if (createHash('sha256').update(bytes).digest('hex') !== screenshot.sha256) throw new Error(`Chrome screenshot hash mismatch: ${screenshot.path}`) +} + +console.log(JSON.stringify({ status: 'chrome-app-e2e-verification-pass', browserId: report.browserId, workflows: report.workflows, accessibility: report.screenReader, screenshots: report.screenshots }, null, 2)) diff --git a/scripts/check-chrome-assembly.mjs b/scripts/check-chrome-assembly.mjs new file mode 100644 index 0000000..64c9f61 --- /dev/null +++ b/scripts/check-chrome-assembly.mjs @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-assembly-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Assembly verification is not passing.') +if (report.geometry?.components !== 2 || report.geometry.validShapes !== 2) throw new Error('Assembly component/Bitbybit shape evidence is incomplete.') +if (report.solver?.status !== 'solved' || report.solver.iterations !== 2 || report.solver.coincident !== 'solved' || report.solver.distance !== 'solved' || report.solver.shaftX !== 5 || report.solver.diagnostics !== 0 || report.solver.workerStatus !== 'solved' || report.solver.angleStatus !== 'solved' || Math.abs(report.solver.angleYaw - Math.PI / 2) > 1e-12) throw new Error('Assembly Worker/fixed/distance/angle solver evidence is incomplete.') +if (report.tools?.bomRows !== 2 || report.tools.collisionCount !== 1 || report.tools.explodedMoved !== true || report.tools.variantX !== 7 || report.tools.motionFrames !== 5 || report.tools.motionEndX !== 9) throw new Error('Assembly tools and motion evidence is incomplete.') +if (report.scale?.components !== 1000 || report.scale.bomRows !== 10 || report.scale.durationMs > report.scale.budgetMs || report.scale.budgetMs !== 1000) throw new Error('Assembly large-model budget evidence is incomplete.') +if (report.fcstd?.bytes <= 0 || report.fcstd.objects !== 4 || report.fcstd.links !== 1 || report.fcstd.reopenedObjects !== 4 || report.fcstd.roundTrip !== true || report.fcstd.released !== true) throw new Error('Assembly FCStd link round-trip evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Assembly OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'ASM-TOOLS' || report.opfs.markerComponents !== 2 || report.opfs.markerRemoved !== true) throw new Error('Assembly OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Assembly harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-assembly-pass', browser: report.browser.product, geometry: report.geometry, solver: report.solver, tools: report.tools, scale: report.scale, fcstd: report.fcstd, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-bim.mjs b/scripts/check-chrome-bim.mjs new file mode 100644 index 0000000..86b76c0 --- /dev/null +++ b/scripts/check-chrome-bim.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-bim-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome BIM verification is not passing.') +if (report.model?.sites !== 1 || report.model.buildings !== 1 || report.model.levels !== 1 || report.model.spaces !== 1 || report.model.materials !== 1 || report.model.elements !== 1 || report.model.scheduleRows !== 1 || report.model.ifc4Bytes <= 0 || report.model.ifc2x3Bytes <= 0 || report.model.ifc4Schema !== 'IFC4' || report.model.ifc2x3Schema !== 'IFC2X3' || report.model.ifc4Entities < 7 || report.model.ifc4Hierarchy !== 4 || report.model.ifc4PropertySets < 1 || report.model.ifc4Classifications !== 1 || report.model.ifc2x3RoundTrip !== true) throw new Error('BIM hierarchy/IFC2X3/IFC4 evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('BIM OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'BIM-IFC' || report.opfs.elements !== 1 || report.opfs.markerRemoved !== true) throw new Error('BIM OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('BIM harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-bim-pass', browser: report.browser.product, model: report.model, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-cam-linuxcnc-machine.mjs b/scripts/check-chrome-cam-linuxcnc-machine.mjs new file mode 100644 index 0000000..5a280d7 --- /dev/null +++ b/scripts/check-chrome-cam-linuxcnc-machine.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-cam-linuxcnc-machine-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome') throw new Error('Chrome CAM LinuxCNC machine verification is not passing.') +if (JSON.stringify(report.stages) !== JSON.stringify(['CAD', 'OCL', 'CAMotics', 'GCODE', 'LinuxCNC WASM'])) throw new Error('CAM machine stage order is invalid.') +if (report.openCamLib?.backend !== 'upstream-opencamlib-wasm' || report.openCamLib.sourceRevision?.length !== 40 || report.openCamLib.artifactSha256?.length !== 64 || report.openCamLib.triangleCount < 2 || report.openCamLib.inputPoints < 2 || report.openCamLib.outputPoints < report.openCamLib.inputPoints || !(report.openCamLib.sampling > 0)) throw new Error('OpenCAMLib WASM stage evidence is incomplete.') +if (!report.gcode?.hasM428 || !report.gcode.hasM429 || !report.gcode.hasG93 || !report.gcode.hasG94 || !report.gcode.hasB || !report.gcode.hasC359 || !report.gcode.hasC361) throw new Error('LinuxCNC XYZBC RTCP G-code evidence is incomplete.') +if (report.machine?.backend !== 'linuxcnc-wasm' || report.machine.status !== 'accepted' || report.machine.dryRunStatus !== 'dry-run' || report.machine.parserAuthority !== 'linuxcnc-wasm' || report.machine.lines < 10 || report.machine.lines >= 1000 || report.machine.blocks < 2 || report.machine.blocks >= 1000 || report.machine.trajectorySegments < 2 || report.machine.trajectorySegments >= 1000) throw new Error('LinuxCNC WASM machine acceptance evidence is incomplete or belongs to a different program.') +console.log(JSON.stringify({ status: 'chrome-cam-linuxcnc-machine-pass', stages: report.stages, openCamLib: report.openCamLib, gcode: report.gcode, machine: report.machine, browser: report.browser }, null, 2)) diff --git a/scripts/check-chrome-cam-native-simulation.mjs b/scripts/check-chrome-cam-native-simulation.mjs new file mode 100644 index 0000000..5e07a52 --- /dev/null +++ b/scripts/check-chrome-cam-native-simulation.mjs @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-cam-native-simulation-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome native CAM simulation verification is not passing.') +if (report.capabilities?.openCamLib?.status !== 'available' || report.capabilities.openCamLib.backend !== 'upstream-opencamlib-wasm' || report.capabilities.camotics?.status !== 'native-host-available' || report.capabilities.camotics.backend !== 'camotics-native-host-qt5-tpl' || report.capabilities.camotics.workspaceNativeExecutable !== true || report.capabilities.camotics.nativeGuiPath !== 'CAMotics/camotics' || report.capabilities.camotics.nativeTplPath !== 'CAMotics/tplang' || report.capabilities.camotics.browserExecutable !== false || report.capabilities.camotics.browserWasmKernelExecutable !== true || report.capabilities.camotics.wasmKernel?.backend !== 'camotics-upstream-sweep-wasm' || report.capabilities.camotics.wasmKernel.fullCamoticsProgram !== false || report.capabilities.camotics.wasmKernel.gcodeParserIncluded !== false || report.capabilities.camotics.parserAuthority !== 'linuxcnc-wasm' || report.capabilities.camotics.camoticsParsesCanonicalGcode !== false) throw new Error('Native CAM capability evidence is incomplete.') +if (report.openCamLib?.backend !== 'upstream-opencamlib-wasm' || report.openCamLib.triangles !== 2 || report.openCamLib.points < 2 || Math.abs(report.openCamLib.minimumZ - 2) > 1e-9 || Math.abs(report.openCamLib.maximumZ - 2) > 1e-9 || report.openCamLib.deterministic !== true || !/^[0-9a-f]{64}$/.test(report.openCamLib.artifactSha256)) throw new Error('OpenCAMLib drop-cutter evidence is incomplete.') +if (report.camotics?.backend !== 'camotics-source-stage-contract' || report.camotics.nativeExecutable !== false || report.camotics.lineCount < 6 || report.camotics.gcodeBytes < 1 || !/^[0-9a-f]{64}$/.test(report.camotics.gcodeHash) || report.camotics.parserAuthority !== 'linuxcnc-wasm' || report.camotics.camoticsParsesCanonicalGcode !== false) throw new Error('CAMotics source-stage G-code evidence is incomplete.') +if (JSON.stringify(report.pipeline?.stages) !== JSON.stringify(['cad', 'opencamlib-wasm', 'camotics-source-stage', 'gcode', 'linuxcnc-wasm-parse-execute']) || report.pipeline.canonicalGcodeAuthority !== 'linuxcnc-wasm' || report.pipeline.camoticsSemanticParser !== false || report.pipeline.linuxcncWasmExecution !== 'handoff-required') throw new Error('CAMotics/LinuxCNC handoff order is invalid.') +if (report.solidRemoval?.backend !== 'bitbybit-occt-wasm' || report.solidRemoval.model !== 'sampled-flat-end-brep' || report.solidRemoval.sweepMode !== 'sampled-flat-end' || report.solidRemoval.nativeSolid !== true || report.solidRemoval.freeCadNativeEquivalent !== false || report.solidRemoval.sampleCount < 2 || report.solidRemoval.stockVolume <= report.solidRemoval.remainingVolume || report.solidRemoval.removedVolume <= 0 || Math.abs(report.solidRemoval.stockVolume - report.solidRemoval.removedVolume - report.solidRemoval.remainingVolume) > 1e-7 || report.solidRemoval.structuralValid !== true || report.solidRemoval.solids < 1 || report.solidRemoval.meshVertices < 1 || report.solidRemoval.meshTriangles < 1 || report.solidRemoval.brepBytes < 1 || !/^[0-9a-f]{64}$/.test(report.solidRemoval.brepHash)) throw new Error('OCCT native solid-removal evidence is incomplete.') +if (report.curvedSolidRemoval?.backend !== 'bitbybit-occt-wasm' || report.curvedSolidRemoval.model !== 'continuous-segment-sweep-brep' || report.curvedSolidRemoval.sweepMode !== 'continuous-segment' || report.curvedSolidRemoval.sampleCount <= 4 || report.curvedSolidRemoval.stockVolume <= report.curvedSolidRemoval.remainingVolume || report.curvedSolidRemoval.removedVolume <= 0 || report.curvedSolidRemoval.structuralValid !== true || report.curvedSolidRemoval.solids < 1 || report.curvedSolidRemoval.meshVertices < 1 || report.curvedSolidRemoval.meshTriangles < 1) throw new Error('OCCT arbitrary-curve sweep evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('OCCT native CAM ownership evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-cam-native-simulation-pass', browser: report.browser.product, openCamLib: report.openCamLib, camotics: report.camotics, pipeline: report.pipeline, solidRemoval: report.solidRemoval, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-cam.mjs b/scripts/check-chrome-cam.mjs new file mode 100644 index 0000000..61b0036 --- /dev/null +++ b/scripts/check-chrome-cam.mjs @@ -0,0 +1,15 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-cam-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome CAM verification is not passing.') +if (!report.geometry?.valid || report.job?.stockMode !== 'from-base-bound-box' || report.job.tools !== 2 || report.job.controllers !== 2 || report.job.operations !== 3) throw new Error('CAM Job/Stock/ToolBit/Controller evidence is incomplete.') +if (JSON.stringify(report.job.operationKinds) !== JSON.stringify(['profile', 'pocket', 'drilling']) || report.job.operationStatuses?.some((status) => status !== 'generated') || report.job.pathPoints < 20 || report.job.dressups !== 1) throw new Error('CAM operation and dress-up evidence is incomplete.') +if (report.job.setup?.safeHeightOffset !== 1 || report.job.setup.clearanceHeightOffset !== 2 || report.job.setup.coolantMode !== 'flood' || report.job.sanity !== 'pass' || report.job.sanityIssues !== 0) throw new Error('CAM SetupSheet or Sanity Check evidence is incomplete.') +if (report.job.simulation !== 'pass' || report.job.collisions !== 0 || report.job.collisionFixture !== 1 || report.job.simulationDiagnostics !== 0) throw new Error('CAM simulation and collision evidence is incomplete.') +if (report.extended?.commandSurface !== 60 || report.extended.operationKinds !== 22 || report.extended.dressupKinds !== 9 || report.extended.toolAssetRoundTrip !== true || report.extended.jobAssetRoundTrip !== true || report.extended.metadataRoundTrip !== true || report.extended.metadataComments !== 1 || report.extended.metadataProperties !== 3 || report.extended.metadataCompounds !== 1 || report.extended.undoRedo !== true || report.extended.startPointChanged !== true || report.extended.materialRemoval !== true || report.extended.removalTimelinePoints !== report.job.pathPoints || report.extended.fixtureCollision !== true || report.extended.multiAxis !== true) throw new Error('CAM extended command, asset lifecycle, metadata, material removal, collision, multi-axis or path-edit evidence is incomplete.') +if (JSON.stringify(report.job.postprocessors) !== JSON.stringify(['grbl', 'linuxcnc', 'mach3-mach4', 'centroid', 'marlin', 'masso-g3', 'snapmaker']) || report.job.post !== 'linuxcnc' || Object.keys(report.job.postHashes || {}).length !== 7 || Object.values(report.job.postHashes || {}).some((hash) => !/^[0-9a-f]{64}$/.test(hash)) || report.job.unsafePostRejected !== true || report.job.deterministic !== true || report.job.gcodeBytes <= 0 || !/^[0-9a-f]{64}$/.test(report.job.gcodeHash)) throw new Error('CAM sandboxed post/G-code evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('CAM OPFS evidence is incomplete.') +if (report.opfs?.markerSuite !== 'CAM-ALL' || report.opfs.operations !== 3 || report.opfs.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('CAM lifecycle evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-cam-pass', browser: report.browser.product, geometry: report.geometry, job: report.job, extended: report.extended, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-camotics-wasm.mjs b/scripts/check-chrome-camotics-wasm.mjs new file mode 100644 index 0000000..75aedcc --- /dev/null +++ b/scripts/check-chrome-camotics-wasm.mjs @@ -0,0 +1,16 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const [report, artifact] = await Promise.all([ + readFile(resolve(root, 'config/chrome-camotics-wasm-verification.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/camotics-wasm-artifact.json'), 'utf8').then(JSON.parse), +]) + +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true) throw new Error('Chrome CAMotics WASM report is not passing.') +if (!/^Chrome\//.test(report.browser?.product || '')) throw new Error('CAMotics WASM report was not produced by Chrome.') +if (report.kernel?.backend !== 'camotics-upstream-sweep-wasm' || report.kernel.sourceRevision !== artifact.upstream.revision || report.kernel.artifactSha256 !== artifact.artifact.sha256 || report.kernel.abiVersion !== 1 || report.kernel.imports !== 0 || report.kernel.fullCamoticsProgram !== false || report.kernel.gcodeParserIncluded !== false) throw new Error('Chrome CAMotics WASM identity or scope is invalid.') +if (report.sweep?.conicInsideDepth !== 1 || report.sweep.conicOutsideDepth !== -1 || report.sweep.spheroidInsideDepth !== 1 || report.sweep.longMoveBoundingBoxes !== 3 || report.sweep.deterministic !== true) throw new Error('Chrome CAMotics sweep results are invalid.') +if (report.parserAuthority !== 'linuxcnc-wasm') throw new Error('LinuxCNC WASM must remain the canonical G-code parser authority.') + +console.log(JSON.stringify({ status: 'chrome-camotics-wasm-pass', browser: report.browser.product, kernel: report.kernel, sweep: report.sweep, parserAuthority: report.parserAuthority }, null, 2)) diff --git a/scripts/check-chrome-data.mjs b/scripts/check-chrome-data.mjs new file mode 100644 index 0000000..d968b20 --- /dev/null +++ b/scripts/check-chrome-data.mjs @@ -0,0 +1,3 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-data-verification.json'), 'utf8')); if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome data modules verification is not passing.'); if (report.adapters?.total !== 7 || report.adapters.supported !== 4 || report.adapters.proxy !== 3 || report.records?.total !== 7 || report.records.proxy !== 3 || report.records.manifestBytes <= 0) throw new Error('Specialist data adapter coverage is incomplete.'); if (report.points?.sourceCount !== 6 || JSON.stringify(report.points.parsedFormats) !== JSON.stringify(['pts', 'pcd', 'ply']) || report.points.mergedCount !== 12 || report.points.croppedCount !== 4 || report.points.polygonCroppedCount !== 4 || report.points.reducedCount !== 1 || report.points.structured?.width !== 3 || report.points.structured?.height !== 2 || Object.values(report.points.exportBytes || {}).some((value) => value <= 0)) throw new Error('Chrome point-cloud operations evidence is incomplete.'); if (report.reverseEngineering?.planeRms > 1e-7 || Math.abs(report.reverseEngineering.sphereRadius - 2) > 1e-7 || Math.abs(report.reverseEngineering.cylinderRadius - 3) > 1e-7 || Math.abs(report.reverseEngineering.cylinderHeight - 8) > 1e-7 || report.reverseEngineering.polynomialRms > 1e-7 || report.reverseEngineering.segmentCount !== 2 || JSON.stringify(report.reverseEngineering.segmentSizes) !== JSON.stringify([2, 2])) throw new Error('Chrome reverse-engineering fit evidence is incomplete.'); if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Data modules OPFS resource evidence is incomplete.'); if (report.opfs?.markerSuite !== 'DATA-ALL' || report.opfs.records !== 7 || report.opfs.markerRemoved !== true) throw new Error('Data modules OPFS marker evidence is incomplete.'); if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Data harness leaked ShapeHandles.'); console.log(JSON.stringify({ status: 'chrome-data-pass', browser: report.browser.product, adapters: report.adapters, records: report.records, points: report.points, reverseEngineering: report.reverseEngineering, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-draft.mjs b/scripts/check-chrome-draft.mjs new file mode 100644 index 0000000..e6a8b18 --- /dev/null +++ b/scripts/check-chrome-draft.mjs @@ -0,0 +1,13 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-draft-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Draft verification is not passing.') +if (report.workingPlane?.worldPoint.x !== 10 || report.workingPlane.worldPoint.y !== 22 || report.workingPlane.worldPoint.z !== 33 || JSON.stringify(report.workingPlane.snapped) !== JSON.stringify({ x: 1, y: 2.5 })) throw new Error('Draft working plane/grid evidence is incomplete.') +if (report.objects?.total !== 9 || report.objects.lines !== 2 || report.objects.wires !== 1 || report.objects.circles !== 1 || report.objects.clones !== 5 || report.objects.arrays !== 4 || report.objects.layers !== 2 || report.objects.sourceDependencies !== 5) throw new Error('Draft parametric object/layer dependency evidence is incomplete.') +if (!report.operations?.moved || !report.operations.rotated || !report.operations.scaled || report.operations.offsetLength !== 8 || report.operations.trimmedLength !== 4 || report.operations.cloneTranslation.x !== 10 || report.operations.arrayCount !== 4) throw new Error('Draft operation evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Draft OPFS resource lifecycle evidence is incomplete.') +if (report.opfs?.markerSuite !== 'DRAFT-OPS' || report.opfs.markerObjects !== 9 || report.opfs.markerRemoved !== true) throw new Error('Draft OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Draft harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-draft-pass', browser: report.browser.product, workingPlane: report.workingPlane, objects: report.objects, operations: report.operations, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-engineering.mjs b/scripts/check-chrome-engineering.mjs new file mode 100644 index 0000000..b055ea3 --- /dev/null +++ b/scripts/check-chrome-engineering.mjs @@ -0,0 +1,13 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-engineering-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome engineering closure verification is not passing.') +if (report.integrity?.complete !== true || report.integrity.artifacts !== 4 || report.integrity.kinds !== 4 || report.integrity.missingKinds !== 0 || report.integrity.missingRefs !== 0 || report.integrity.projectVersion !== 8 || JSON.stringify(report.integrity.artifactVersions) !== JSON.stringify([2, 2, 2, 2]) || report.integrity.reopenedComplete !== true) throw new Error('ENG-CLOSURE integrity and version evidence is incomplete.') +if (report.workflow?.assemblyComponents !== 2 || report.workflow.bimElements !== 1 || report.workflow.meshTriangles <= 0 || report.workflow.surfacePatches !== 5 || report.workflow.edited.assemblyX !== 6 || report.workflow.edited.fireRating !== 'A1' || report.workflow.edited.meshMinX !== -2.75 || report.workflow.edited.surfaceOffset !== 0.5 || Object.values(report.workflow.exports).some((value) => typeof value !== 'number' || value <= 0)) throw new Error('ENG-CLOSURE cross-workbench edit/export evidence is incomplete.') +if (report.scale?.components !== 1000 || report.scale.bomRows !== 20 || report.scale.durationMs > report.scale.budgetMs || report.scale.budgetMs !== 1000) throw new Error('ENG-CLOSURE large-project budget evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('ENG-CLOSURE OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'ENG-CLOSURE' || report.opfs.artifacts !== 4 || report.opfs.markerRemoved !== true) throw new Error('ENG-CLOSURE OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('ENG-CLOSURE harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-engineering-pass', browser: report.browser.product, integrity: report.integrity, workflow: report.workflow, scale: report.scale, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-fault-injection.mjs b/scripts/check-chrome-fault-injection.mjs new file mode 100644 index 0000000..0b061cc --- /dev/null +++ b/scripts/check-chrome-fault-injection.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-fault-injection-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'dedicated-worker' || report.status !== 'pass' || report.crossOriginIsolated !== true || report.sharedArrayBuffer !== true) throw new Error('Chrome QA-06 Worker/WASM isolation evidence is invalid.') +const lifecycle = report.lifecycle +if (!lifecycle || lifecycle.initialAvailable !== true || lifecycle.completed !== 'completed' || lifecycle.cancelled !== 'cancelled' || lifecycle.crashInjected !== true || lifecycle.unavailableAfterCrash !== true || lifecycle.workerFactoryCount < 3 || lifecycle.recovered !== 'completed' || lifecycle.stale !== 'stale' || Math.abs(lifecycle.recoveredEnd?.x - 5) > 1e-7 || Math.abs(lifecycle.recoveredEnd?.y) > 1e-7) throw new Error('Chrome QA-06 cancellation, crash recovery, or stale-result evidence is invalid.') +if (lifecycle.nativeInitialAvailable !== true || lifecycle.nativeCrashInjected !== true || lifecycle.nativeUnavailableAfterCrash !== true || lifecycle.nativeWorkerFactoryCount < 2 || lifecycle.nativeRecoveredAvailable !== true) throw new Error('Chrome QA-06 native history Worker crash recovery evidence is invalid.') +if (!report.opfs || report.opfs.markerBytes !== 0 || report.opfs.markerRemoved !== true || !Number.isSafeInteger(report.activeWorkersBeforeDispose) || report.activeWorkersBeforeDispose < 3 || report.activeWorkersAfterDispose !== report.activeWorkersBeforeDispose || !Number.isSafeInteger(report.activeNativeWorkersBeforeDispose) || report.activeNativeWorkersBeforeDispose < 2 || report.activeNativeWorkersAfterDispose !== report.activeNativeWorkersBeforeDispose) throw new Error('Chrome QA-06 OPFS or Worker resource cleanup evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-fault-injection-pass', browserId: report.browserId, lifecycle, opfs: report.opfs, nativeWorkers: { beforeDispose: report.activeNativeWorkersBeforeDispose, afterDispose: report.activeNativeWorkersAfterDispose } }, null, 2)) diff --git a/scripts/check-chrome-fcstd-golden-verification.mjs b/scripts/check-chrome-fcstd-golden-verification.mjs new file mode 100644 index 0000000..506d25d --- /dev/null +++ b/scripts/check-chrome-fcstd-golden-verification.mjs @@ -0,0 +1,89 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { loadGoldenManifest } from './freecad-golden-contract.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-fcstd-golden-verification.json'), 'utf8')) +const manifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/manifest.json')) +const fail = (message) => { throw new Error(`Chrome FCStd golden verification: ${message}`) } + +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1' || report.freecadCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('FreeCAD baseline is not locked.') +if (report.bitbybitVersion !== '1.1.1' || report.geometryProvider !== 'Bitbybit OCCT') fail('Bitbybit 1.1.1 is not the sole geometry provider.') +if (report.browserId !== 'chrome' || !/^Chrome\//.test(report.browser?.product || '')) fail('the report must contain Chrome-only browser evidence.') +if (report.unknownDifferencesFail !== true || report.status !== 'pass') fail('unknown differences are not release-blocking.') +if (report.scenarioCount !== 100 || !Array.isArray(report.reports) || report.reports.length !== 100 || manifest.scenarios.length !== 100) fail('exactly 100 scenarios are required.') +if (!Array.isArray(report.pageErrors) || report.pageErrors.length !== 0) fail('Chrome page errors are present.') +if (report.productRecompute?.status !== 'pass') fail('the real product recompute probe did not pass.') +for (const [name, result] of Object.entries({ placedBox: report.productRecompute.placedBox, cut: report.productRecompute.cut, sphereTrim: report.productRecompute.sphereTrim, torus: report.productRecompute.torus, prism: report.productRecompute.prism, wedge: report.productRecompute.wedge, ellipsoid: report.productRecompute.ellipsoid })) { + if (!result?.quality?.structuralValid || result.quality.isNull || result.quality.structuralErrors !== 0 || result.quality.solids !== 1 || !(result.massProperties?.volume > 0)) fail(`product recompute ${name} Shape is invalid.`) + if (result.comparison?.status !== 'pass' || result.comparison.differences?.length !== 0) fail(`product recompute ${name} differs from FreeCAD.`) +} +if (report.productRecompute.placedBox.quality.boundingBox.min.some((value, index) => Math.abs(value - [3.9999999, 3.9999999, -1e-7][index]) > 1e-12) || report.productRecompute.placedBox.quality.boundingBox.max.some((value, index) => Math.abs(value - [6.0000001, 14.0000001, 5.0000001][index]) > 1e-12)) fail('the product Part::Box coordinate/translation mapping drifted.') +if (report.productRecompute.cut.comparison.knownDifferences?.length !== 1 || report.productRecompute.cut.comparison.knownDifferences[0].classification !== 'kernel-container-normalization') fail('the product Part::Cut container normalization is not explicitly classified.') +if (report.productRecompute.sphereTrim.comparison.knownDifferences?.length !== 1 || report.productRecompute.sphereTrim.comparison.knownDifferences[0].classification !== 'kernel-container-normalization' || report.productRecompute.sphereTrim.comparison.knownDifferences[0].expected !== 'solid' || report.productRecompute.sphereTrim.comparison.knownDifferences[0].actual !== 'compound') fail('the product Part::Sphere trim container normalization is not explicitly classified.') +const chromeTorusBound = 12.988706503508727 +if (report.productRecompute.torus.comparison.knownDifferences?.length !== 0 || Math.abs(report.productRecompute.torus.massProperties.volume - 60 * Math.PI ** 2) > 1e-6 || report.productRecompute.torus.quality.boundingBox.min.some((value, index) => Math.abs(value - [-chromeTorusBound, -chromeTorusBound, -2.0000001][index]) > 1e-9) || report.productRecompute.torus.quality.boundingBox.max.some((value, index) => Math.abs(value - [chromeTorusBound, chromeTorusBound, 2.0000001][index]) > 1e-9)) fail('the product Part::Torus result differs from FreeCAD.') +const prism = report.productRecompute.prism +if (prism.comparison.knownDifferences?.length !== 0 || prism.quality.faces !== 8 || prism.quality.edges !== 18 || prism.quality.vertices !== 12 || Math.abs(prism.massProperties.volume - 60 * Math.sqrt(3)) > 1e-6 || prism.quality.boundingBox.min.some((value, index) => Math.abs(value - [-2.0000001, -2.606937542828117, -1e-7][index]) > 1e-9) || prism.quality.boundingBox.max.some((value, index) => Math.abs(value - [3.76326990708465, 1.7320509075688775, 10.0000001][index]) > 1e-9)) fail('the product Part::Prism result differs from FreeCAD.') +const wedge = report.productRecompute.wedge +if (wedge.comparison.knownDifferences?.length !== 0 || wedge.quality.faces !== 6 || wedge.quality.edges !== 12 || wedge.quality.vertices !== 8 || Math.abs(wedge.massProperties.volume - 2440 / 3) > 1e-6 || wedge.quality.boundingBox.min.some((value, index) => Math.abs(value - [-1e-7, -1e-7, -1e-7][index]) > 1e-9) || wedge.quality.boundingBox.max.some((value, index) => Math.abs(value - [10.0000001, 10.0000001, 10.0000001][index]) > 1e-9)) fail('the product Part::Wedge result differs from FreeCAD.') +const ellipsoid = report.productRecompute.ellipsoid +if (ellipsoid.comparison.knownDifferences?.length !== 0 || ellipsoid.quality.faces !== 1 || ellipsoid.quality.edges !== 3 || ellipsoid.quality.vertices !== 2 || Math.abs(ellipsoid.massProperties.volume - 133.9826640573845) > 1e-6 || ellipsoid.quality.boundingBox.min.some((value, index) => Math.abs(value - [-8.0000001, -6.92820333027551, -2.0000001][index]) > 1e-9) || ellipsoid.quality.boundingBox.max.some((value, index) => Math.abs(value - [4.0000001, 6.928203330275507, 2.0000001][index]) > 1e-9)) fail('the product Part::Ellipsoid result differs from FreeCAD.') +if (report.productRecompute.afterRelease?.shapeCount !== 0 || report.productRecompute.afterRelease?.kernelReferenceCount !== 0) fail('the product recompute probe leaked Shape ownership.') + +const expectedIds = new Set(manifest.scenarios.map((entry) => entry.id)) +const seen = new Set() +let knownDifferences = 0 +let totalArchiveBytes = 0 +let totalBrepBytes = 0 +const formatSummary = { step: { passed: 0, totalBytes: 0, maximumVolumeDelta: 0, topologyNormalizations: 0, importedShapeTypes: {} }, iges: { passed: 0, totalBytes: 0, maximumVolumeDelta: 0, topologyNormalizations: 0, importedShapeTypes: {} }, brep: { passed: 0, totalBytes: 0, maximumVolumeDelta: 0, topologyNormalizations: 0, importedShapeTypes: {} } } +for (const item of report.reports) { + if (!expectedIds.has(item.id) || seen.has(item.id)) fail(`unexpected or duplicate scenario '${item.id}'.`) + seen.add(item.id) + if (item.status !== 'pass') fail(`${item.id} did not pass.`) + if (!item.source?.quality?.structuralValid || item.source.quality.isNull || item.source.quality.structuralErrors !== 0 || item.source.quality.solids !== 1) fail(`${item.id} source Shape is invalid.`) + if (!item.imported?.quality?.structuralValid || item.imported.quality.isNull || item.imported.quality.structuralErrors !== 0 || item.imported.quality.solids !== 1) fail(`${item.id} imported Shape is invalid.`) + for (const format of ['step', 'iges', 'brep']) { + const exchange = item.formatRoundTrips?.[format] + const expectedUnit = format === 'brep' ? 'unknown' : 'millimeter' + if (!exchange || exchange.status !== 'pass' || exchange.declaredUnit !== expectedUnit || !Number.isSafeInteger(exchange.sourceBytes) || exchange.sourceBytes <= 0 || !Number.isSafeInteger(exchange.importedBytes) || exchange.importedBytes <= 0 || !['solid', 'compound', 'shell', 'face'].includes(exchange.importedShapeType) || exchange.importedSolids > exchange.sourceSolids || !['none', 'format-topology-normalization'].includes(exchange.structuralNormalization) || Math.abs(exchange.importedVolume - exchange.sourceVolume) > 1e-6) fail(`${item.id}.${format} format round-trip evidence is invalid.`) + const aggregate = formatSummary[format] + aggregate.passed += 1 + aggregate.totalBytes += exchange.sourceBytes + aggregate.maximumVolumeDelta = Math.max(aggregate.maximumVolumeDelta, Math.abs(exchange.importedVolume - exchange.sourceVolume)) + if (exchange.structuralNormalization === 'format-topology-normalization') aggregate.topologyNormalizations += 1 + aggregate.importedShapeTypes[exchange.importedShapeType] = (aggregate.importedShapeTypes[exchange.importedShapeType] || 0) + 1 + } + if (!Number.isFinite(item.source.massProperties?.volume) || item.source.massProperties.volume <= 0 || !Number.isFinite(item.imported.massProperties?.volume) || item.imported.massProperties.volume <= 0) fail(`${item.id} has invalid mass properties.`) + if (!Number.isSafeInteger(item.fcstd?.archiveBytes) || item.fcstd.archiveBytes <= 0 || !Number.isSafeInteger(item.fcstd.brepBytes) || item.fcstd.brepBytes <= 0 || !/^[a-f0-9]{8}$/.test(item.fcstd.brepHash) || item.fcstd.shapeResources !== 1 || item.fcstd.references !== 1) fail(`${item.id} has invalid FCStd/BRep evidence.`) + totalArchiveBytes += item.fcstd.archiveBytes + totalBrepBytes += item.fcstd.brepBytes + for (const [name, comparison] of Object.entries(item.comparisons || {})) { + if (comparison.status !== 'pass' || !Array.isArray(comparison.differences) || comparison.differences.length !== 0 || !Array.isArray(comparison.knownDifferences)) fail(`${item.id}.${name} contains an unknown difference.`) + for (const difference of comparison.knownDifferences) { + const booleanOperation = ['cut', 'fuse', 'common'].includes(item.operation) + if (!booleanOperation || difference.classification !== 'kernel-container-normalization' || difference.domain !== 'identity' || difference.path !== 'shapeType' || difference.expected !== 'compound' || difference.actual !== 'solid') fail(`${item.id}.${name} contains an unclassified known difference.`) + knownDifferences += 1 + } + } +} +if (seen.size !== expectedIds.size) fail('one or more locked scenarios are missing.') + +const expectedOperationCounts = { box: 21, common: 8, cone: 16, cut: 10, cylinder: 21, fuse: 8, sphere: 16 } +if (report.summary?.passed !== 100 || report.summary.failed !== 0 || report.summary.unknownDifferences !== 0 || report.summary.knownDifferences !== knownDifferences || JSON.stringify(report.summary.operationCounts) !== JSON.stringify(expectedOperationCounts)) fail('summary counts do not match the locked corpus.') +if (report.summary.totalArchiveBytes !== totalArchiveBytes || report.summary.totalBrepBytes !== totalBrepBytes || totalArchiveBytes <= 0 || totalBrepBytes <= 0) fail('aggregate FCStd resource sizes are inconsistent.') +const canonicalFormatSummary = (summary) => Object.fromEntries(Object.entries(summary).map(([format, value]) => [format, { ...value, importedShapeTypes: Object.fromEntries(Object.entries(value.importedShapeTypes).sort(([left], [right]) => left.localeCompare(right))) }])) +if (JSON.stringify(canonicalFormatSummary(report.summary.formatRoundTrips)) !== JSON.stringify(canonicalFormatSummary(formatSummary))) fail('aggregate STEP/IGES/BREP tolerance evidence is inconsistent.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) fail('ShapeHandle or kernel references leaked.') + +console.log(JSON.stringify({ + status: 'chrome-fcstd-golden-verification-pass', + scenarioCount: report.scenarioCount, + operationCounts: report.summary.operationCounts, + knownDifferences, + unknownDifferences: 0, + totalArchiveBytes, + totalBrepBytes, + productRecompute: { status: report.productRecompute.status, afterRelease: report.productRecompute.afterRelease }, + afterRelease: report.afterRelease, +}, null, 2)) diff --git a/scripts/check-chrome-fcstd-roundtrip.mjs b/scripts/check-chrome-fcstd-roundtrip.mjs new file mode 100644 index 0000000..900e52e --- /dev/null +++ b/scripts/check-chrome-fcstd-roundtrip.mjs @@ -0,0 +1,9 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-fcstd-roundtrip-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.baseline?.freecadVersion !== '1.1.1' || report.baseline?.bitbybitVersion !== '1.1.1') throw new Error('Chrome FCStd round-trip verification is not passing.') +if (JSON.stringify(report.directions) !== '["freecad-web-freecad","web-freecad-web"]' || !Array.isArray(report.scenarios) || report.scenarios.length !== 2 || report.scenarios.some((scenario) => scenario.status !== 'pass' || scenario.differences.length !== 0)) throw new Error('FC-10 direction or difference evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.bytes <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true || report.opfs?.markerSuite !== 'FC-10' || report.opfs.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('FC-10 OPFS or resource release evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-fcstd-roundtrip-pass', browser: report.browser.product, directions: report.directions, scenarios: report.scenarios, persistence: report.persistence, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-fcstd-semantic.mjs b/scripts/check-chrome-fcstd-semantic.mjs new file mode 100644 index 0000000..7afdc80 --- /dev/null +++ b/scripts/check-chrome-fcstd-semantic.mjs @@ -0,0 +1,9 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-fcstd-semantic-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '')) throw new Error('Chrome FCStd semantic verification is not passing.') +if (JSON.stringify(report.objectNames) !== JSON.stringify(['Source', 'Spreadsheet', 'Cut', 'Sketch']) || report.expression !== 'Spreadsheet.Width * 2' || report.link !== 'Source' || report.linkSub?.objectId !== 'Source' || report.linkSub.subElement !== 'Face1' || JSON.stringify(report.linkSubList) !== JSON.stringify([{ objectId: 'Source', subElement: 'Face1' }, { objectId: 'Source', subElement: 'Face2' }]) || JSON.stringify(report.sketchGeometryIds) !== JSON.stringify(['profile']) || !report.dependencyRelations.includes('expression') || !report.dependencyRelations.includes('link') || !report.dependencyRelations.includes('topo-ref') || !report.dependencyRelations.includes('topo-ref-list') || report.archiveBytes <= 0) throw new Error('Chrome FCStd Expression/Link/LinkSub/Sketcher round-trip evidence is incomplete.') +if (JSON.stringify(report.guiViews) !== JSON.stringify(['Front', 'Top']) || report.shapeResource?.path !== 'Part/Source.Shape.brp' || report.shapeResource.byteLength <= 0 || report.shapeResource.elementMap !== '1' || report.shapeResource.elementMapEntries !== 1) throw new Error('Chrome FCStd GuiDocument/BRep/ElementMap evidence is incomplete.') +if (report.opfs?.markerSuite !== 'FC-06' || report.opfs.archiveBytes !== report.archiveBytes || report.opfs.markerRemoved !== true) throw new Error('Chrome FCStd semantic OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-fcstd-semantic-pass', browser: report.browser.product, objects: report.objectNames.length, dependencies: report.dependencyRelations, guiViews: report.guiViews, shapeResource: report.shapeResource, archiveBytes: report.archiveBytes, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-fem.mjs b/scripts/check-chrome-fem.mjs new file mode 100644 index 0000000..bdc380f --- /dev/null +++ b/scripts/check-chrome-fem.mjs @@ -0,0 +1,3 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-fem-verification.json'), 'utf8')); if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome FEM verification is not passing.'); if (!report.geometry?.valid || report.solve?.status !== 'solved' || report.solve.strategy !== 'local-reference' || report.solve.nodes !== 2 || report.solve.nodeSets !== 1 || JSON.stringify(report.solve.resultFields) !== JSON.stringify(['displacement', 'stress']) || report.solve.maxDisplacement !== 0.00125 || report.solve.maxStress !== 25 || report.solve.csvBytes <= 0) throw new Error('FEM reference solve/set/result-field evidence is incomplete.'); if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('FEM OPFS resource evidence is incomplete.'); if (report.opfs?.markerSuite !== 'FEM-ALL' || report.opfs.nodes !== 2 || report.opfs.markerRemoved !== true) throw new Error('FEM OPFS marker evidence is incomplete.'); if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('FEM harness leaked ShapeHandles.'); console.log(JSON.stringify({ status: 'chrome-fem-pass', browser: report.browser.product, geometry: report.geometry, solve: report.solve, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-geometry-features.mjs b/scripts/check-chrome-geometry-features.mjs new file mode 100644 index 0000000..a51a965 --- /dev/null +++ b/scripts/check-chrome-geometry-features.mjs @@ -0,0 +1,17 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-geometry-features-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '')) throw new Error('Chrome geometry feature verification is not a Chrome pass.') +const expected = ['fcstd-brep-import', 'extrude', 'revolution', 'fillet-selected-edge', 'chamfer-selected-edge', 'draft-selected-face', 'thickness', 'hole-counterbore', 'hole-countersink', 'hole-counterdrill', 'hole-angled-drill-point', 'hole-angled-included-depth', 'hole-tapered', 'loft', 'loft-ruled', 'loft-additive', 'loft-subtractive', 'pipe', 'extrude-two-sided', 'revolution-symmetric', 'revolution-two-angles', 'pad-two-sided', 'pocket-two-sided', 'pad-tapered', 'pocket-tapered', 'pocket-through-all', 'pocket-up-to-face', 'pad-midplane', 'linear-pattern-spacing', 'polar-pattern-spacing'] +if (JSON.stringify(report.operations?.map((operation) => operation.name)) !== JSON.stringify(expected)) throw new Error('Chrome geometry feature operation order is incomplete.') +if (!report.operations.every((operation) => operation.meshVertices >= 3 && operation.meshTriangles >= 1)) throw new Error('Chrome geometry feature mesh evidence is incomplete.') +if (!['pad-tapered', 'pocket-tapered', 'pocket-through-all', 'pocket-up-to-face', 'pad-midplane'].every((name) => Number.isFinite(report.operations.find((operation) => operation.name === name)?.volume) && report.operations.find((operation) => operation.name === name).volume > 0)) throw new Error('Chrome PartDesign base mass evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome geometry feature handles were not fully released.') +if (!Number.isFinite(report.performance?.durationMs) || report.performance.durationMs <= 0 || report.performance.operationCount !== report.operations.length || !Number.isFinite(report.performance.averageOperationMs) || report.performance.peakShapeCount < report.performance.operationCount || report.performance.stressObjectCount !== 1000 || !Number.isFinite(report.performance.stressDurationMs) || report.performance.stressDurationMs <= 0 || report.performance.stressPeakShapeCount < report.performance.stressObjectCount) throw new Error('Chrome geometry performance evidence is incomplete.') +const triangleStress = report.performance.triangleStress +if (!triangleStress || triangleStress.radius !== 100 || triangleStress.precision !== 0.01 || !Number.isFinite(triangleStress.triangles) || triangleStress.triangles < 100_000 || !Number.isFinite(triangleStress.vertices) || triangleStress.vertices < 3 || !Number.isFinite(triangleStress.durationMs) || triangleStress.durationMs <= 0) throw new Error('Chrome high-tessellation performance evidence is incomplete.') +if (!report.fcstdBrep || report.fcstdBrep.references !== 1 || report.fcstdBrep.topology?.faces !== 6 || report.fcstdBrep.topology?.edges !== 12 || report.fcstdBrep.topology?.vertices !== 8 || Math.abs(report.fcstdBrep.massProperties?.source?.volume - 24) > 1e-7 || Math.abs(report.fcstdBrep.massProperties?.source?.volume - report.fcstdBrep.massProperties?.imported?.volume) > 1e-7 || Math.abs(report.fcstdBrep.massProperties?.source?.surfaceArea - report.fcstdBrep.massProperties?.imported?.surfaceArea) > 1e-7 || !report.fcstdBrep.emptyRejected || !report.fcstdBrep.cancelledBeforeImport || !report.fcstdBrep.cancelledResultReleased) throw new Error('Chrome FCStd BRep instantiation evidence is incomplete.') +if (!report.exchangeFormats?.iges || report.exchangeFormats.iges.sourceBytes <= 0 || Math.abs(report.exchangeFormats.iges.sourceVolume - report.exchangeFormats.iges.importedVolume) > 1e-7 || report.exchangeFormats.iges.importedFaces !== 6 || report.exchangeFormats.iges.importedEdges < 1 || report.exchangeFormats.iges.importedVertices < 1) throw new Error('Chrome IGES exchange evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-geometry-features-pass', browser: report.browser.product, operations: report.operations.length, afterRelease: report.afterRelease })) diff --git a/scripts/check-chrome-inspection.mjs b/scripts/check-chrome-inspection.mjs new file mode 100644 index 0000000..880743f --- /dev/null +++ b/scripts/check-chrome-inspection.mjs @@ -0,0 +1,9 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-inspection-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Inspection verification is not passing.') +if (!report.shape?.valid || report.shape.solids !== 1 || report.measurements?.distance !== 5 || report.measurements.angle !== 90 || report.measurements.volume !== report.shape.volume || report.measurements.area !== report.shape.area || Math.abs(report.measurements.deviation - 0.01) > 1e-12 || report.measurements.deviationStatus !== 'resolved' || Math.abs(report.measurements.sectionArea - 24) > 1e-5 || report.measurements.topoRefs !== 2 || report.measurements.stableRefs !== 1 || JSON.stringify(report.measurements.unresolvedRefs) !== JSON.stringify(['Face2']) || report.measurements.csvRows !== 6) throw new Error('Inspection measurement/section/deviation/TopoRef evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Inspection OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'INSP-ALL' || report.opfs.measurements !== 5 || report.opfs.markerRemoved !== true) throw new Error('Inspection OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Inspection harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-inspection-pass', browser: report.browser.product, shape: report.shape, measurements: report.measurements, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-mesh.mjs b/scripts/check-chrome-mesh.mjs new file mode 100644 index 0000000..9992fc8 --- /dev/null +++ b/scripts/check-chrome-mesh.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-mesh-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Mesh verification is not passing.') +if (report.geometry?.vertices <= 0 || report.geometry.triangles <= 0 || report.geometry.boundaryEdges !== 0 || report.geometry.nonManifoldEdges !== 0 || report.geometry.degenerateTriangles !== 0 || report.geometry.selfIntersections !== 0) throw new Error('Mesh quality evidence is incomplete.') +if (report.operations?.welded <= 0 || JSON.stringify(report.operations.transformedMin) !== JSON.stringify([-6.5, -1, -3]) || report.operations.objBytes <= 0 || report.operations.plyBytes <= 0 || report.operations.stlBytes <= 0 || report.operations.lodTriangles !== report.operations.workerLodTriangles || !/^[0-9a-f]{64}$/.test(report.operations.objHash)) throw new Error('Mesh normalize/transform/LOD/export evidence is incomplete.') +if (report.repairs?.selfIntersectionFixture !== 1 || report.repairs.nonManifoldFixture !== 1 || report.repairs.holeFilledTriangles !== 1) throw new Error('Mesh self-intersection/non-manifold/hole repair evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Mesh OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'MESH-CORE' || report.opfs.triangles !== report.geometry.triangles || report.opfs.markerRemoved !== true) throw new Error('Mesh OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Mesh harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-mesh-pass', browser: report.browser.product, geometry: report.geometry, operations: report.operations, repairs: report.repairs, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-chamfer-history.mjs b/scripts/check-chrome-native-chamfer-history.mjs new file mode 100644 index 0000000..e11274c --- /dev/null +++ b/scripts/check-chrome-native-chamfer-history.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-chamfer-history-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'geometry-and-history-workers' || report.crossOriginIsolated !== true || report.status !== 'pass') throw new Error('Chrome native Chamfer history evidence is invalid.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.operations?.includes('chamfer') !== true) throw new Error('Native OCCT Chamfer Worker capability evidence is incomplete.') +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || report.history.relations?.modified <= 0 || report.history.relations?.generated <= 0 || report.history.relations?.deleted <= 0 || JSON.stringify(report.history.sourceObjects) !== JSON.stringify(['Base'])) throw new Error('Native OCCT Chamfer relation evidence is incomplete.') +if (report.result?.structuralValid !== true || report.result?.solids !== 1 || !(report.result.volume > 0 && report.result.volume < 216)) throw new Error('Native OCCT Chamfer result evidence is invalid.') +if (report.opfs?.markerCreated !== true || report.opfs?.markerSuite !== 'chamfer' || report.opfs?.markerRemoved !== true) throw new Error('Chrome native Chamfer OPFS evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Chamfer history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-chamfer-history-pass', browserId: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, volume: report.result.volume, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-draft-history.mjs b/scripts/check-chrome-native-draft-history.mjs new file mode 100644 index 0000000..5afa56c --- /dev/null +++ b/scripts/check-chrome-native-draft-history.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-draft-history-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'geometry-and-history-workers' || report.crossOriginIsolated !== true || report.status !== 'pass') throw new Error('Chrome native Draft history evidence is invalid.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.operations?.includes('draft') !== true) throw new Error('Native OCCT Draft Worker capability evidence is incomplete.') +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || report.history.relations?.modified <= 0 || JSON.stringify(report.history.sourceObjects) !== JSON.stringify(['Base'])) throw new Error('Native OCCT Draft relation evidence is incomplete.') +if (report.result?.structuralValid !== true || report.result?.solids !== 1 || !(report.result.volume > 0)) throw new Error('Native OCCT Draft result evidence is invalid.') +if (report.opfs?.markerCreated !== true || report.opfs?.markerSuite !== 'draft' || report.opfs?.markerRemoved !== true) throw new Error('Chrome native Draft OPFS evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Draft history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-draft-history-pass', browserId: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, volume: report.result.volume, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-fillet-history.mjs b/scripts/check-chrome-native-fillet-history.mjs new file mode 100644 index 0000000..fa25d15 --- /dev/null +++ b/scripts/check-chrome-native-fillet-history.mjs @@ -0,0 +1,12 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-fillet-history-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'geometry-and-history-workers' || report.crossOriginIsolated !== true || report.status !== 'pass') throw new Error('Chrome native Fillet history evidence is invalid.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.operations?.includes('fillet') !== true) throw new Error('Native OCCT Fillet Worker capability evidence is incomplete.') +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || report.history.relations?.modified <= 0 || report.history.relations?.generated <= 0 || report.history.relations?.deleted <= 0 || JSON.stringify(report.history.sourceObjects) !== JSON.stringify(['Base'])) throw new Error('Native OCCT Fillet relation evidence is incomplete.') +if (report.result?.structuralValid !== true || report.result?.solids !== 1 || !(report.result.volume > 0 && report.result.volume < 216)) throw new Error('Native OCCT Fillet result evidence is invalid.') +if (report.opfs?.markerCreated !== true || report.opfs?.markerSuite !== 'fillet' || report.opfs?.markerRemoved !== true) throw new Error('Chrome native Fillet OPFS evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Fillet history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-fillet-history-pass', browserId: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, volume: report.result.volume, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-groove-history.mjs b/scripts/check-chrome-native-groove-history.mjs new file mode 100644 index 0000000..7b20423 --- /dev/null +++ b/scripts/check-chrome-native-groove-history.mjs @@ -0,0 +1,16 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-groove-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true) throw new Error('Chrome native Groove history verification is not passing.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.transport !== 'step-text' || report.nativeCapabilities?.operations?.includes('groove') !== true) throw new Error('Native OCCT Groove Worker capability evidence is incomplete.') +const stages = report.history?.stages || [] +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || stages.length !== 2 || stages[0]?.operation !== 'revolution' || JSON.stringify(stages[0]?.inputObjectIds) !== JSON.stringify(['Profile']) || stages[0]?.recordCount <= 0 || stages[0]?.topologyEntries <= 0 || stages[1]?.operation !== 'cut' || JSON.stringify(stages[1]?.inputObjectIds) !== JSON.stringify(['Base', stages[0]?.resultObjectId]) || stages[1]?.recordCount !== report.history.recordCount || stages[1]?.topologyEntries <= 0 || !report.history.sourceObjects?.includes('Base') || !report.history.sourceObjects?.includes('Profile') || !report.history.sourceObjects?.includes(stages[0]?.resultObjectId)) throw new Error('Native OCCT Groove staged source relation evidence is incomplete.') +if (report.history.relations?.modified <= 0 || report.history.relations.generated + report.history.relations.deleted <= 0) throw new Error('Native OCCT Groove history relation evidence is incomplete.') +const twoAngleStages = report.twoAngleHistory?.stages || [] +if (report.nativeCapabilities?.operations?.includes('rotate') !== true || report.twoAngleHistory?.recordCount <= 0 || report.twoAngleHistory?.structuralValid !== true || report.twoAngleHistory?.unexplainedStructuralErrors !== 0 || report.twoAngleHistory?.solids !== 1 || Math.abs(report.twoAngleHistory.volume - (800 - 3 * Math.PI)) > 1e-5 || twoAngleStages.length !== 3 || twoAngleStages[0]?.operation !== 'rotate' || JSON.stringify(twoAngleStages[0]?.inputObjectIds) !== JSON.stringify(['Profile']) || twoAngleStages[0]?.topologyEntries <= 0 || twoAngleStages[1]?.operation !== 'revolution' || JSON.stringify(twoAngleStages[1]?.inputObjectIds) !== JSON.stringify([twoAngleStages[0]?.resultObjectId]) || twoAngleStages[1]?.topologyEntries <= 0 || twoAngleStages[2]?.operation !== 'cut' || JSON.stringify(twoAngleStages[2]?.inputObjectIds) !== JSON.stringify(['Base', twoAngleStages[1]?.resultObjectId]) || twoAngleStages[2]?.resultObjectId !== 'GrooveTwoAngles' || twoAngleStages[2]?.topologyEntries <= 0 || !report.twoAngleHistory.sourceObjects?.includes('Base') || !report.twoAngleHistory.sourceObjects?.includes('Profile') || !report.twoAngleHistory.sourceObjects?.includes(twoAngleStages[0]?.resultObjectId) || !report.twoAngleHistory.sourceObjects?.includes(twoAngleStages[1]?.resultObjectId)) throw new Error('Native OCCT Groove TwoAngles offset-sweep evidence is incomplete.') +if (report.result?.structuralValid !== true || report.result?.solids !== 1 || Math.abs(report.result.volume - (800 - 6 * Math.PI)) > 1e-5) throw new Error('Native OCCT Groove result evidence is invalid.') +if (report.opfs?.markerOperation !== 'groove' || report.opfs?.markerRemoved !== true) throw new Error('Chrome native Groove OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Groove history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-groove-history-pass', browser: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, stages, twoAngleStages, volume: report.result.volume, twoAngleVolume: report.twoAngleHistory.volume, afterRelease: report.afterRelease, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-native-history.mjs b/scripts/check-chrome-native-history.mjs new file mode 100644 index 0000000..f616dc6 --- /dev/null +++ b/scripts/check-chrome-native-history.mjs @@ -0,0 +1,10 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true) throw new Error('Chrome native history verification is not passing.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.transport !== 'step-text' || report.nativeCapabilities?.operations?.includes('cut') !== true) throw new Error('Native OCCT history Worker capability evidence is incomplete.') +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || !report.history.relations?.modified && !report.history.relations?.generated && !report.history.relations?.deleted) throw new Error('Native OCCT history relation evidence is empty.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-history-pass', browser: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-hole-history.mjs b/scripts/check-chrome-native-hole-history.mjs new file mode 100644 index 0000000..b254b36 --- /dev/null +++ b/scripts/check-chrome-native-hole-history.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-hole-history-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'geometry-and-history-workers' || report.crossOriginIsolated !== true || report.status !== 'pass') throw new Error('Chrome native Hole history evidence is invalid.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.operations?.includes('hole') !== true) throw new Error('Native OCCT Hole Worker capability evidence is incomplete.') +const stages = report.history?.stages || [] +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || report.history.relations?.modified <= 0 || report.history.relations?.deleted <= 0 || stages.length !== 2 || stages[0]?.operation !== 'hole' || stages[0]?.inputObjectIds?.length !== 0 || stages[0]?.topologyEntries <= 0 || stages[1]?.operation !== 'cut' || JSON.stringify(stages[1]?.inputObjectIds) !== JSON.stringify(['Base', stages[0]?.resultObjectId]) || stages[1]?.topologyEntries <= 0 || JSON.stringify(report.history.sourceObjects) !== JSON.stringify(['Base', stages[0]?.resultObjectId]) || JSON.stringify(report.history.resultStageIds) !== JSON.stringify([stages[1]?.stageId])) throw new Error('Native OCCT Hole staged relation evidence is incomplete.') +if (report.result?.structuralValid !== true || report.result?.solids !== 1 || !(report.result.volume > 0 && report.result.volume < 1000)) throw new Error('Native OCCT Hole result evidence is invalid.') +if (report.opfs?.markerCreated !== true || report.opfs?.markerSuite !== 'hole' || report.opfs?.markerRemoved !== true) throw new Error('Chrome native Hole OPFS evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Hole history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-hole-history-pass', browserId: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, stages, volume: report.result.volume, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-linear-pattern-history.mjs b/scripts/check-chrome-native-linear-pattern-history.mjs new file mode 100644 index 0000000..bbed1be --- /dev/null +++ b/scripts/check-chrome-native-linear-pattern-history.mjs @@ -0,0 +1 @@ +import {readFile} from 'node:fs/promises';import {resolve} from 'node:path';const report=JSON.parse(await readFile(resolve(new URL('..',import.meta.url).pathname,'config/chrome-native-linear-pattern-history-verification.json'),'utf8'));if(report.status!=='pass'||report.browserId!=='chrome'||report.nativeCapabilities?.operations?.includes('linear-pattern')!==true||report.history?.recordCount<=0||JSON.stringify(report.history?.sourceObjects)!==JSON.stringify(['Base'])||report.result?.bitbybitSolids!==1||Math.abs(report.result.bitbybitVolume-12)>1e-7||report.result?.nativeStructuralValid!==true||report.result?.nativeSolids!==1||Math.abs(report.result.nativeVolume-12)>1e-7||report.opfs?.markerRemoved!==true||report.afterRelease?.shapeCount!==0||report.afterRelease?.kernelReferenceCount!==0)throw new Error('Chrome native LinearPattern evidence is invalid.');console.log(JSON.stringify({status:'chrome-native-linear-pattern-history-pass',records:report.history.recordCount,relations:report.history.relations,result:report.result,afterRelease:report.afterRelease},null,2)) diff --git a/scripts/check-chrome-native-loft-history.mjs b/scripts/check-chrome-native-loft-history.mjs new file mode 100644 index 0000000..ebdfb53 --- /dev/null +++ b/scripts/check-chrome-native-loft-history.mjs @@ -0,0 +1,5 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const report = JSON.parse(await readFile(resolve(new URL('..', import.meta.url).pathname, 'config/chrome-native-loft-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true || report.nativeCapabilities?.operations?.includes('loft') !== true || report.history?.recordCount <= 0 || report.history?.relations?.generated <= 0 || !report.history?.sourceObjects?.includes('FirstSection') || !report.history?.sourceObjects?.includes('SecondSection') || report.result?.bitbybitSolids !== 1 || Math.abs(report.result.bitbybitVolume - 20) > 1e-7 || report.opfs?.markerPayload?.sections !== 2 || report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Loft history evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-native-loft-history-pass', records: report.history.recordCount, relations: report.history.relations, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-mirrored-history.mjs b/scripts/check-chrome-native-mirrored-history.mjs new file mode 100644 index 0000000..e1bef07 --- /dev/null +++ b/scripts/check-chrome-native-mirrored-history.mjs @@ -0,0 +1,5 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const report = JSON.parse(await readFile(resolve(new URL('..', import.meta.url).pathname, 'config/chrome-native-mirrored-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.nativeCapabilities?.operations?.includes('mirrored') !== true || report.history?.recordCount <= 0 || JSON.stringify(report.history?.sourceObjects) !== JSON.stringify(['Base']) || report.result?.bitbybitSolids !== 1 || Math.abs(report.result.bitbybitVolume - 3) > 1e-7 || report.result?.nativeStructuralValid !== true || report.result?.nativeSolids !== 1 || Math.abs(report.result.nativeVolume - 3) > 1e-7 || report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Mirrored evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-native-mirrored-history-pass', records: report.history.recordCount, relations: report.history.relations, result: report.result, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-multi-transform-history.mjs b/scripts/check-chrome-native-multi-transform-history.mjs new file mode 100644 index 0000000..4ee2fe6 --- /dev/null +++ b/scripts/check-chrome-native-multi-transform-history.mjs @@ -0,0 +1,7 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const report = JSON.parse(await readFile(resolve(new URL('..', import.meta.url).pathname, 'config/chrome-native-multi-transform-history-verification.json'), 'utf8')) +const stages = report.history?.stages || [] +const lineage = report.history?.finalRecordLineage +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.nativeCapabilities?.operations?.includes('multi-transform') !== true || report.history?.recordCount <= 0 || report.history?.relations?.modified <= 0 || report.history?.relations?.generated <= 0 || JSON.stringify(report.history?.transformKinds) !== JSON.stringify(['linear', 'mirrored']) || JSON.stringify(report.history?.sourceObjects) !== JSON.stringify(['Base']) || stages.length !== 2 || stages[0]?.operation !== 'linear-pattern' || stages[1]?.operation !== 'mirrored' || JSON.stringify(stages[0]?.inputObjectIds) !== JSON.stringify(['Base']) || stages[1]?.inputObjectIds?.[0] !== stages[0]?.resultObjectId || stages[1]?.resultObjectId !== 'MultiTransform' || stages.some((stage) => stage.topologyEntries <= 0 || stage.recordCount <= 0) || lineage?.records !== report.history?.stagedRecordCount || JSON.stringify(lineage?.sourceObjectIds) !== JSON.stringify([stages[0]?.resultObjectId]) || JSON.stringify(lineage?.sourceStageIds) !== JSON.stringify([stages[0]?.stageId]) || JSON.stringify(lineage?.resultStageIds) !== JSON.stringify([stages[1]?.stageId]) || report.result?.bitbybitSolids !== 1 || Math.abs(report.result.bitbybitVolume - 5) > 1e-7 || report.result?.nativeStructuralValid !== true || report.result?.nativeSolids !== 1 || Math.abs(report.result.nativeVolume - 5) > 1e-7 || JSON.stringify(report.opfs?.markerPayload?.transformKinds) !== JSON.stringify(['linear', 'mirrored']) || report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native MultiTransform evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-native-multi-transform-history-pass', records: report.history.recordCount, relations: report.history.relations, stages, result: report.result, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-pad-history.mjs b/scripts/check-chrome-native-pad-history.mjs new file mode 100644 index 0000000..7473ed1 --- /dev/null +++ b/scripts/check-chrome-native-pad-history.mjs @@ -0,0 +1,8 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-pad-history-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'dedicated-worker' || report.crossOriginIsolated !== true || report.status !== 'pass' || report.workerDisposed !== true) throw new Error('Chrome native Pad history Worker evidence is invalid.') +if (report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.operations?.includes('pad') !== true || report.execution?.status !== 'completed' || report.execution.recordCount <= 0 || report.execution.crossKindRecords <= 0 || JSON.stringify(report.execution.profileKinds.sort()) !== JSON.stringify(['edge', 'face', 'vertex']) || report.execution.summary?.isValid !== true || report.execution.summary?.solids !== 1 || Math.abs(report.execution.summary.volume - 30) > 1e-7) throw new Error('Chrome native Pad Generated/Modified/Deleted evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-native-pad-history-pass', browserId: report.browserId, nativeCapabilities: report.nativeCapabilities, execution: report.execution }, null, 2)) diff --git a/scripts/check-chrome-native-pipe-history.mjs b/scripts/check-chrome-native-pipe-history.mjs new file mode 100644 index 0000000..6152ed8 --- /dev/null +++ b/scripts/check-chrome-native-pipe-history.mjs @@ -0,0 +1,5 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const report = JSON.parse(await readFile(resolve(new URL('..', import.meta.url).pathname, 'config/chrome-native-pipe-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true || report.nativeCapabilities?.operations?.includes('pipe') !== true || report.history?.recordCount <= 0 || report.history?.relations?.modified <= 0 || report.history?.relations?.generated <= 0 || !report.history?.sourceObjects?.includes('Profile') || !report.history?.sourceObjects?.includes('Spine') || report.result?.bitbybitSolids !== 1 || Math.abs(report.result.bitbybitVolume - 20) > 1e-7 || report.opfs?.markerPayload?.spineEdges !== 1 || report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Pipe history evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-native-pipe-history-pass', records: report.history.recordCount, relations: report.history.relations, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-pocket-history.mjs b/scripts/check-chrome-native-pocket-history.mjs new file mode 100644 index 0000000..85d9702 --- /dev/null +++ b/scripts/check-chrome-native-pocket-history.mjs @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-pocket-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true) throw new Error('Chrome native Pocket history verification is not passing.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.transport !== 'step-text' || report.nativeCapabilities?.operations?.includes('pocket') !== true) throw new Error('Native OCCT Pocket history Worker capability evidence is incomplete.') +const stages = report.history?.stages || [] +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || stages.length !== 2 || stages[0]?.operation !== 'pad' || JSON.stringify(stages[0]?.inputObjectIds) !== JSON.stringify(['Profile']) || stages[0]?.recordCount <= 0 || stages[0]?.topologyEntries <= 0 || stages[1]?.operation !== 'cut' || JSON.stringify(stages[1]?.inputObjectIds) !== JSON.stringify(['Base', stages[0]?.resultObjectId]) || stages[1]?.recordCount !== report.history.recordCount || stages[1]?.topologyEntries <= 0 || !report.history.sourceObjects?.includes('Base') || !report.history.sourceObjects?.includes('Profile') || !report.history.sourceObjects?.includes(stages[0]?.resultObjectId)) throw new Error('Native OCCT Pocket staged source relation evidence is incomplete.') +const twoSidedStages = report.twoSidedHistory?.stages || [] +if (report.nativeCapabilities?.operations?.includes('pad') !== true || report.nativeCapabilities?.operations?.includes('fuse') !== true || report.nativeCapabilities?.operations?.includes('cut') !== true || report.twoSidedHistory?.recordCount <= 0 || report.twoSidedHistory?.structuralValid !== true || report.twoSidedHistory?.solids !== 1 || twoSidedStages.length !== 4 || twoSidedStages[0]?.operation !== 'pad' || JSON.stringify(twoSidedStages[0]?.inputObjectIds) !== JSON.stringify(['Profile']) || twoSidedStages[0]?.topologyEntries <= 0 || twoSidedStages[1]?.operation !== 'pad' || JSON.stringify(twoSidedStages[1]?.inputObjectIds) !== JSON.stringify(['Profile']) || twoSidedStages[1]?.topologyEntries <= 0 || twoSidedStages[2]?.operation !== 'fuse' || JSON.stringify(twoSidedStages[2]?.inputObjectIds) !== JSON.stringify([twoSidedStages[0]?.resultObjectId, twoSidedStages[1]?.resultObjectId]) || twoSidedStages[2]?.topologyEntries <= 0 || twoSidedStages[3]?.operation !== 'cut' || JSON.stringify(twoSidedStages[3]?.inputObjectIds) !== JSON.stringify(['BaseTwoSided', twoSidedStages[2]?.resultObjectId]) || twoSidedStages[3]?.resultObjectId !== 'PocketTwoSided' || twoSidedStages[3]?.topologyEntries <= 0 || !report.twoSidedHistory?.sourceObjects?.includes('BaseTwoSided') || !report.twoSidedHistory?.sourceObjects?.includes('Profile')) throw new Error('Native OCCT two-sided Pocket stage evidence is incomplete.') +if (report.history.relations?.modified <= 0 || report.history.relations.generated + report.history.relations.deleted <= 0) throw new Error('Native OCCT Pocket history relation evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Pocket history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-pocket-history-pass', browser: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, stages, twoSidedStages, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-polar-pattern-history.mjs b/scripts/check-chrome-native-polar-pattern-history.mjs new file mode 100644 index 0000000..a204170 --- /dev/null +++ b/scripts/check-chrome-native-polar-pattern-history.mjs @@ -0,0 +1,5 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const report = JSON.parse(await readFile(resolve(new URL('..', import.meta.url).pathname, 'config/chrome-native-polar-pattern-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.nativeCapabilities?.operations?.includes('polar-pattern') !== true || report.history?.recordCount <= 0 || JSON.stringify(report.history?.sourceObjects) !== JSON.stringify(['Base']) || report.result?.bitbybitSolids !== 1 || Math.abs(report.result.bitbybitVolume - 3) > 1e-7 || report.result?.nativeStructuralValid !== true || report.result?.nativeSolids !== 1 || Math.abs(report.result.nativeVolume - 3) > 1e-7 || report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native PolarPattern evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-native-polar-pattern-history-pass', records: report.history.recordCount, relations: report.history.relations, result: report.result, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-revolution-history.mjs b/scripts/check-chrome-native-revolution-history.mjs new file mode 100644 index 0000000..064a1dc --- /dev/null +++ b/scripts/check-chrome-native-revolution-history.mjs @@ -0,0 +1,13 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-revolution-history-verification.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true) throw new Error('Chrome native Revolution history verification is not passing.') +if (report.capabilities?.status !== 'ready' || report.nativeCapabilities?.availability !== 'available' || report.nativeCapabilities?.transport !== 'step-text' || report.nativeCapabilities?.operations?.includes('revolution') !== true) throw new Error('Native OCCT Revolution Worker capability evidence is incomplete.') +if (!Number.isSafeInteger(report.history?.recordCount) || report.history.recordCount <= 0 || report.history.crossKindRecords <= 0 || report.history.relations?.modified <= 0 || report.history.relations?.generated <= 0) throw new Error('Native OCCT Revolution history relation evidence is incomplete.') +const twoSidedStages = report.twoSidedHistory?.stages || [] +if (report.nativeCapabilities?.operations?.includes('rotate') !== true || report.twoSidedHistory?.recordCount <= 0 || report.twoSidedHistory?.structuralValid !== true || report.twoSidedHistory?.unexplainedStructuralErrors !== 0 || report.twoSidedHistory?.solids !== 1 || twoSidedStages.length !== 2 || twoSidedStages[0]?.operation !== 'rotate' || JSON.stringify(twoSidedStages[0]?.inputObjectIds) !== JSON.stringify(['Profile']) || twoSidedStages[0]?.topologyEntries <= 0 || twoSidedStages[1]?.operation !== 'revolution' || JSON.stringify(twoSidedStages[1]?.inputObjectIds) !== JSON.stringify([twoSidedStages[0]?.resultObjectId]) || twoSidedStages[1]?.resultObjectId !== 'RevolutionTwoSided' || twoSidedStages[1]?.topologyEntries <= 0 || Math.abs(report.twoSidedHistory.volume - 12 * Math.PI) > 1e-5) throw new Error('Native OCCT offset Revolution stage evidence is incomplete.') +if (report.result?.structuralValid !== true || report.result?.solids !== 1 || Math.abs(report.result.volume - 24 * Math.PI) > 1e-5) throw new Error('Native OCCT Revolution result evidence is invalid.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Revolution history handles were not released.') +console.log(JSON.stringify({ status: 'chrome-native-revolution-history-pass', browser: report.browserId, occtVersion: report.nativeCapabilities.occtVersion, records: report.history.recordCount, relations: report.history.relations, twoSidedStages, volume: report.result.volume, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-native-thickness-history.mjs b/scripts/check-chrome-native-thickness-history.mjs new file mode 100644 index 0000000..ce98301 --- /dev/null +++ b/scripts/check-chrome-native-thickness-history.mjs @@ -0,0 +1,5 @@ +import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path'; const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-native-thickness-history-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.crossOriginIsolated !== true || report.status !== 'pass' || report.nativeCapabilities?.operations?.includes('thickness') !== true) throw new Error('Chrome native Thickness capability evidence is invalid.') +if (report.history?.recordCount <= 0 || report.history?.relations?.modified <= 0 || JSON.stringify(report.history?.sourceObjects) !== JSON.stringify(['Base'])) throw new Error('Chrome native Thickness relation evidence is invalid.') +if (report.result?.bitbybitSolids !== 1 || !(report.result?.bitbybitVolume > 0) || report.result?.nativeStructuralValid !== true || report.result?.nativeSolids !== 1 || !(report.result?.nativeVolume > 0) || report.opfs?.markerSuite !== 'thickness' || report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Thickness result or resource evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-native-thickness-history-pass', browserId: report.browserId, records: report.history.recordCount, relations: report.history.relations, result: report.result, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-offline.mjs b/scripts/check-chrome-offline.mjs new file mode 100644 index 0000000..131cf00 --- /dev/null +++ b/scripts/check-chrome-offline.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-offline-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('REL-01 Chrome offline verification is not passing.') +const worker = report.serviceWorker +if (worker?.registered !== true || worker.controlled !== true || worker.shellCached !== true || worker.staleCacheRemoved !== true || worker.offlineFallback !== true || !worker.cacheNames.includes('bitbybit-cad-shell-v1')) throw new Error('REL-01 Service Worker cache lifecycle evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.bytes <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('REL-01 OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'REL-01' || report.opfs.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('REL-01 OPFS or Shape ownership evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-offline-pass', browser: report.browser.product, serviceWorker: worker, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-opfs-migration.mjs b/scripts/check-chrome-opfs-migration.mjs new file mode 100644 index 0000000..f4a0af2 --- /dev/null +++ b/scripts/check-chrome-opfs-migration.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-opfs-migration-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome REL-02 OPFS migration evidence is not passing.') +const migration = report.migration +if (!migration || migration.sourceSchemaVersion !== 1 || migration.migratedSchemaVersion !== 6 || migration.migratedDocumentVersion !== 3 || migration.migratedObjectCount !== 1 || migration.recomputeDefaulted !== true || migration.reopenedSchemaVersion !== 6 || migration.reopenedVersion !== 4 || migration.checkpointVersion !== 4 || migration.recoveryIntegrity !== 'ok' || migration.reopenedRecoveryIntegrity !== 'ok' || migration.resourceRoundTrip !== true || migration.resourceReleased !== true) throw new Error('Chrome REL-02 forward migration, reopen, checkpoint, or resource evidence is invalid.') +if (!report.rollback || report.rollback.rejected !== true || report.rollback.interruptedAfterMarker !== true || !/interruption after schema version 3/.test(report.rollback.error || '') || JSON.stringify(report.rollback.appliedVersionsAfterFailure) !== '[1]') throw new Error('Chrome REL-02 SQLite interruption rollback evidence is invalid.') +if (!report.cleanup || !Array.isArray(report.cleanup.removedFiles) || report.cleanup.removedFiles.length === 0 || report.cleanup.removedFiles.some((name) => typeof name !== 'string' || !name.startsWith(report.cleanup.databasePath.slice(1)))) throw new Error('Chrome REL-02 OPFS database cleanup evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-opfs-migration-pass', browserId: report.browserId, migration, cleanup: report.cleanup }, null, 2)) diff --git a/scripts/check-chrome-part-primitives.mjs b/scripts/check-chrome-part-primitives.mjs new file mode 100644 index 0000000..2d3a566 --- /dev/null +++ b/scripts/check-chrome-part-primitives.mjs @@ -0,0 +1,12 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-part-primitives-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '')) throw new Error('Chrome Part primitive verification is not passing.') +const expected = ['ellipsoid', 'torus', 'prism', 'wedge', 'helix'] +if (JSON.stringify(report.operations?.map((operation) => operation.name)) !== JSON.stringify(expected) || !report.operations.slice(0, 4).every((operation) => operation.meshVertices >= 3 && operation.meshTriangles >= 1) || !(report.operations[4]?.length > 0)) throw new Error('Chrome Part primitive mesh/curve evidence is incomplete.') +if (report.operations.find((operation) => operation.name === 'ellipsoid')?.volume <= 0 || report.operations.find((operation) => operation.name === 'torus')?.volume <= 0 || report.operations.find((operation) => operation.name === 'prism')?.volume <= 0 || report.operations.find((operation) => operation.name === 'wedge')?.volume <= 0) throw new Error('Chrome Part primitive mass evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome Part primitive handles were not fully released.') +if (report.opfs?.markerSuite !== 'PART-ALL' || report.opfs.markerOperations !== 5 || report.opfs.markerRemoved !== true) throw new Error('Chrome Part primitive OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-part-primitives-pass', browser: report.browser.product, operations: report.operations, afterRelease: report.afterRelease, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-partdesign-lifecycle.mjs b/scripts/check-chrome-partdesign-lifecycle.mjs new file mode 100644 index 0000000..7c4ae78 --- /dev/null +++ b/scripts/check-chrome-partdesign-lifecycle.mjs @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-partdesign-lifecycle-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome PartDesign lifecycle evidence is not passing or isolated.') +if (JSON.stringify(report.structural?.initialOrder) !== JSON.stringify(['sketch', 'pad', 'pocket', 'fillet']) || JSON.stringify(report.structural?.restoredOrder) !== JSON.stringify(report.structural.initialOrder) || report.structural?.reorderRejected !== true || report.structural?.dependencyRemovalRejected !== true || JSON.stringify(report.structural?.deleted?.removed) !== JSON.stringify(['fillet']) || report.structural.deleted.tip !== 'pocket' || report.structural.deleted.filletExists !== false || report.structural.deletionUndone?.tip !== 'fillet' || report.structural.deletionUndone.filletExists !== true || report.structural.deletionRedone?.tip !== 'pocket' || report.structural.deletionRedone.filletExists !== false || report.structural.restoredTip !== 'fillet') throw new Error('Chrome PartDesign reorder/delete/Undo/Redo evidence is invalid.') +if (report.initial?.length !== 42 || report.initial?.tip !== 'pad' || report.initial?.support !== 'XY_Plane' || report.initial?.pocketSuppressed !== true || report.initial?.filletSuppressed !== true || !(report.initial?.volume > 0) || report.initial?.solids !== 1) throw new Error('Chrome PartDesign initial suppression/Tip state is invalid.') +if (report.edited?.length !== 31 || report.edited?.tip !== 'pad' || report.edited?.support !== 'XY_Plane' || report.edited?.recompute !== 'completed' || report.edited?.shapeCount < 1 || report.edited?.kernelReferenceCount < 1 || !(report.edited?.volume > 0) || report.edited?.solids !== 1 || report.edited?.shapeId === report.initial?.shapeId) throw new Error('Chrome PartDesign edited recompute evidence is invalid or stale.') +if (report.undone?.length !== 42 || report.undone?.tip !== 'pad' || report.undone?.support !== 'XY_Plane' || report.undone?.recompute !== 'completed' || report.undone?.shapeCount < 1 || report.undone?.kernelReferenceCount < 1 || !(report.undone?.volume > 0) || report.undone?.solids !== 1 || report.undone?.shapeId === report.edited?.shapeId || Math.abs(report.undone?.volume - report.initial?.volume) > 1e-7) throw new Error('Chrome PartDesign undo/recompute evidence is invalid or stale.') +if (report.reopened?.length !== 42 || report.reopened?.persistedLength !== 42 || report.reopened?.tip !== 'pad' || report.reopened?.support !== 'XY_Plane' || report.reopened?.pocketSuppressed !== true || report.reopened?.filletSuppressed !== true || report.reopened?.recompute !== 'completed' || report.reopened?.persistenceMode !== 'sqlite-opfs' || !(report.reopened?.volume > 0) || report.reopened?.solids !== 1 || report.reopened?.shapeId === report.edited?.shapeId || Math.abs(report.reopened?.volume - report.initial?.volume) > 1e-7) throw new Error('Chrome PartDesign OPFS reopen evidence is invalid or stale.') +if (report.released?.shapeCount !== 0 || report.released?.kernelReferenceCount !== 0) throw new Error('Chrome PartDesign lifecycle leaked Bitbybit shapes.') + +console.log(JSON.stringify({ status: 'chrome-partdesign-lifecycle-pass', browserId: report.browserId, structural: report.structural, initial: report.initial, edited: report.edited, undone: report.undone, reopened: report.reopened, released: report.released }, null, 2)) diff --git a/scripts/check-chrome-partdesign-loft.mjs b/scripts/check-chrome-partdesign-loft.mjs new file mode 100644 index 0000000..4f9f374 --- /dev/null +++ b/scripts/check-chrome-partdesign-loft.mjs @@ -0,0 +1,15 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-partdesign-loft-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome PartDesign loft verification is not passing.') +if (JSON.stringify(report.operations?.map((operation) => operation.command)) !== JSON.stringify(['additive-loft', 'additive-pipe', 'subtractive-loft', 'subtractive-pipe'])) throw new Error('PartDesign loft/pipe operation coverage is incomplete.') +if (report.operations.some((operation) => !operation.objectId || !operation.typeId || !operation.shapeId || operation.recompute !== 'completed' || !Number.isFinite(operation.volume) || operation.volume <= 0)) throw new Error('PartDesign loft/pipe solid recompute evidence is incomplete.') +const recovery = report.failureRecovery +if (!recovery || recovery.loft?.status !== 'failed' || recovery.loft?.code !== 'LOFT_SECTIONS_DUPLICATE' || recovery.loft?.retainedShapeId !== recovery.loft?.previousShapeId || recovery.loft?.restoredStatus !== 'completed' || !recovery.loft?.restoredShapeId) throw new Error('Loft failure recovery evidence is incomplete.') +if (recovery.pipe?.status !== 'failed' || recovery.pipe?.code !== 'PIPE_PATH_BRANCH' || recovery.pipe?.retainedShapeId !== recovery.pipe?.previousShapeId || recovery.pipe?.restoredStatus !== 'completed' || !recovery.pipe?.restoredShapeId) throw new Error('Pipe failure recovery evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.objectCount < 1 || report.persistence.reopenedTip !== report.operations[3]?.objectId) throw new Error('PartDesign loft OPFS round-trip evidence is incomplete.') +if (report.opfs?.markerSuite !== 'PD-LOFT' || report.opfs.markerOperations !== 4 || report.opfs.markerRemoved !== true) throw new Error('PartDesign loft OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('PartDesign loft ShapeHandles were not fully released.') +console.log(JSON.stringify({ status: 'chrome-partdesign-loft-pass', browser: report.browser.product, operations: report.operations, failureRecovery: report.failureRecovery, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-partdesign-transform.mjs b/scripts/check-chrome-partdesign-transform.mjs new file mode 100644 index 0000000..11ac3dc --- /dev/null +++ b/scripts/check-chrome-partdesign-transform.mjs @@ -0,0 +1,19 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-partdesign-transform-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome PartDesign transform verification is not passing.') +const expected = ['hole', 'fillet', 'chamfer', 'draft', 'thickness', 'hole', 'hole', 'linear-pattern', 'mirrored', 'mirrored', 'linear-pattern', 'polar-pattern', 'multi-transform', 'hole'] +if (JSON.stringify(report.operations?.map((operation) => operation.command)) !== JSON.stringify(expected)) throw new Error('PartDesign transform operation coverage is incomplete.') +if (report.operations.some((operation) => operation.recompute !== 'completed' || !operation.objectId || !operation.typeId || !operation.shapeId || !(operation.volume > 0) || operation.solids !== 1 || operation.shapeCount < 1 || operation.kernelReferenceCount < 1)) throw new Error('PartDesign transform recompute, single-solid, or ownership evidence is incomplete.') +const featureTransforms = report.operations.filter((operation) => operation.transformMode === 'Features') +if (featureTransforms.length !== 2 || featureTransforms.some((operation) => !Array.isArray(operation.originals) || operation.originals.length !== 1)) throw new Error('PartDesign Feature-list transform evidence is incomplete.') +const threadedHoles = report.operations.filter((operation) => operation.command === 'hole' && operation.threaded === true) +if (threadedHoles.length !== 2 || threadedHoles[0].modelThread !== false || threadedHoles[0].threadType !== 'ISOMetricProfile' || threadedHoles[0].threadSize !== 'M1x0.25' || threadedHoles[1].modelThread !== true || threadedHoles[1].threadDirection !== 'Left') throw new Error('PartDesign Hole thread-standard evidence is incomplete.') +if (report.topologyMigration?.editedPadLength !== 31 || report.topologyMigration?.wrongBindings !== 0 || report.topologyMigration?.stable < 1 || report.topologyMigration?.ambiguous < 1 || report.topologyMigration?.ambiguityDiagnostics !== report.topologyMigration?.ambiguous || JSON.stringify(report.topologyMigration?.migrated?.map((entry) => entry.command)) !== JSON.stringify(['fillet', 'chamfer', 'draft', 'thickness']) || report.topologyMigration.migrated.some((entry) => entry.objectId !== report.operations[0].objectId || !['stable', 'ambiguous'].includes(entry.status) || !entry.persistentId)) throw new Error('PartDesign dress-up topology migration evidence is incomplete.') +if (report.ambiguityRecovery?.command !== 'fillet' || report.ambiguityRecovery?.status !== 'failed' || report.ambiguityRecovery?.code !== 'DRESSUP_EDGE_REFERENCE_UNRESOLVED' || report.ambiguityRecovery?.retainedShapeId !== report.ambiguityRecovery?.previousShapeId || report.ambiguityRecovery?.restoredStatus !== 'completed' || !report.ambiguityRecovery?.restoredShapeId) throw new Error('PartDesign dress-up ambiguity recovery evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.objectCount < 1 || report.persistence.reopenedTip !== report.operations.at(-1)?.objectId) throw new Error('PartDesign transform OPFS round-trip evidence is incomplete.') +if (report.opfs?.markerSuite !== 'PD-TRANSFORM' || report.opfs.markerOperations !== 14 || report.opfs.markerRemoved !== true) throw new Error('PartDesign transform OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error('PartDesign transform ShapeHandles were not fully released.') +console.log(JSON.stringify({ status: 'chrome-partdesign-transform-pass', browser: report.browser.product, operations: report.operations, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-performance.mjs b/scripts/check-chrome-performance.mjs new file mode 100644 index 0000000..46a71f5 --- /dev/null +++ b/scripts/check-chrome-performance.mjs @@ -0,0 +1,3 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-performance-verification.json'), 'utf8')); if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome performance verification is not passing.'); if (report.benchmark?.objects !== 1000 || report.benchmark.triangles !== 1_000_000 || report.benchmark.tableCells !== 100_000 || report.benchmark.pass !== true || report.benchmark.objectMs > 2000 || report.benchmark.triangleMs > 4000 || report.benchmark.tableMs > 2000) throw new Error('QA-05 performance budget evidence is incomplete.'); if (report.benchmark.heapBytes !== null && report.benchmark.heapBytes > 512 * 1024 * 1024) throw new Error('QA-05 heap budget exceeded.'); if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('QA-05 OPFS resource evidence is incomplete.'); if (report.opfs?.markerSuite !== 'QA-05' || report.opfs.triangles !== 1_000_000 || report.opfs.markerRemoved !== true) throw new Error('QA-05 OPFS marker evidence is incomplete.'); if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('QA-05 harness leaked ShapeHandles.'); console.log(JSON.stringify({ status: 'chrome-performance-pass', browser: report.browser.product, benchmark: report.benchmark, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-persistence-verification.mjs b/scripts/check-chrome-persistence-verification.mjs new file mode 100644 index 0000000..8fa5d7a --- /dev/null +++ b/scripts/check-chrome-persistence-verification.mjs @@ -0,0 +1,10 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-persistence-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome OPFS persistence verification is not passing.') +const capabilities = report.capabilities +const roundTrip = report.roundTrip +if (capabilities?.mode !== 'sqlite-opfs' || capabilities.sqliteWasm !== true || capabilities.opfs !== true || roundTrip?.savedMode !== 'sqlite-opfs' || roundTrip.loadedVersion !== 7 || roundTrip.checkpointVersion !== 7 || roundTrip.resourceRoundTrip !== true || roundTrip.recoveryIntegrity !== 'ok') throw new Error('Chrome SQLite OPFS round-trip evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-persistence-verification-pass', browserId: report.browserId, capabilities, roundTrip }, null, 2)) diff --git a/scripts/check-chrome-planegcs-verification.mjs b/scripts/check-chrome-planegcs-verification.mjs new file mode 100644 index 0000000..426bde1 --- /dev/null +++ b/scripts/check-chrome-planegcs-verification.mjs @@ -0,0 +1,56 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-planegcs-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.executionContext !== 'dedicated-worker' || report.status !== 'pass' || report.crossOriginIsolated !== true || report.sharedArrayBuffer !== true) throw new Error('Chrome planegcs dedicated Worker, isolation, or browser verification is not passing.') +if (report.solve?.solveStatus > 1 || Math.abs(report.solve?.startY - report.solve?.endY) > 1e-7 || Math.abs(report.solve?.residual) > 1e-7 || Math.abs(Math.hypot(report.solve?.endX - report.solve?.startX, report.solve?.endY - report.solve?.startY) - 5) > 1e-7) throw new Error('Chrome planegcs solve evidence is invalid.') +if (report.verticalSolve?.solveStatus > 1 || Math.abs(report.verticalSolve?.startX - report.verticalSolve?.endX) > 1e-7 || Math.abs(report.verticalSolve?.residual) > 1e-7 || Math.abs(Math.hypot(report.verticalSolve?.endX - report.verticalSolve?.startX, report.verticalSolve?.endY - report.verticalSolve?.startY) - 5) > 1e-7) throw new Error('Chrome vertical planegcs solve evidence is invalid.') +if (report.distanceXSolve?.solveStatus > 1 || Math.abs(report.distanceXSolve?.endX - report.distanceXSolve?.startX - 6) > 1e-7 || Math.abs(report.distanceXSolve?.startY - report.distanceXSolve?.endY) > 1e-7 || Math.abs(report.distanceXSolve?.residual) > 1e-7) throw new Error('Chrome distanceX planegcs solve evidence is invalid.') +if (report.distanceYSolve?.solveStatus > 1 || Math.abs(report.distanceYSolve?.endY - report.distanceYSolve?.startY - 6) > 1e-7 || Math.abs(report.distanceYSolve?.startX - report.distanceYSolve?.endX) > 1e-7 || Math.abs(report.distanceYSolve?.residual) > 1e-7) throw new Error('Chrome distanceY planegcs solve evidence is invalid.') +if (report.angleSolve?.solveStatus > 1 || Math.abs(Math.hypot(report.angleSolve?.endX - report.angleSolve?.startX, report.angleSolve?.endY - report.angleSolve?.startY) - 5) > 1e-7 || Math.abs(Math.atan2(report.angleSolve?.endY - report.angleSolve?.startY, report.angleSolve?.endX - report.angleSolve?.startX) - report.angleSolve?.targetAngle) > 1e-7 || Math.abs(report.angleSolve?.lengthResidual) > 1e-7 || Math.abs(report.angleSolve?.residual) > 1e-7) throw new Error('Chrome angle planegcs solve evidence is invalid.') +if (report.circleRadiusSolve?.solveStatus > 1 || Math.abs(report.circleRadiusSolve?.centerX - 2) > 1e-7 || Math.abs(report.circleRadiusSolve?.centerY - 3) > 1e-7 || Math.abs(report.circleRadiusSolve?.radius - 4) > 1e-7 || Math.abs(report.circleRadiusSolve?.residual) > 1e-7) throw new Error('Chrome circle radius planegcs solve evidence is invalid.') +if (report.circleDiameterSolve?.solveStatus > 1 || Math.abs(report.circleDiameterSolve?.centerX - 2) > 1e-7 || Math.abs(report.circleDiameterSolve?.centerY - 3) > 1e-7 || Math.abs(report.circleDiameterSolve?.radius * 2 - 8) > 1e-7 || Math.abs(report.circleDiameterSolve?.residual) > 1e-7) throw new Error('Chrome circle diameter planegcs solve evidence is invalid.') +if (report.equalLinesSolve?.solveStatus > 1 || Math.abs(Math.hypot(report.equalLinesSolve?.firstEndX - report.equalLinesSolve?.firstStartX, report.equalLinesSolve?.firstEndY - report.equalLinesSolve?.firstStartY) - Math.hypot(report.equalLinesSolve?.secondEndX - report.equalLinesSolve?.secondStartX, report.equalLinesSolve?.secondEndY - report.equalLinesSolve?.secondStartY)) > 1e-7 || Math.abs(report.equalLinesSolve?.residual) > 1e-7) throw new Error('Chrome equal-length planegcs solve evidence is invalid.') +if (report.equalCirclesSolve?.solveStatus > 1 || Math.abs(report.equalCirclesSolve?.firstCenterX - 2) > 1e-7 || Math.abs(report.equalCirclesSolve?.firstCenterY - 3) > 1e-7 || Math.abs(report.equalCirclesSolve?.firstRadius - 4) > 1e-7 || Math.abs(report.equalCirclesSolve?.secondCenterX - 8) > 1e-7 || Math.abs(report.equalCirclesSolve?.secondCenterY - 9) > 1e-7 || Math.abs(report.equalCirclesSolve?.secondRadius - 4) > 1e-7 || Math.abs(report.equalCirclesSolve?.residual) > 1e-7) throw new Error('Chrome equal-radius planegcs solve evidence is invalid.') +if (report.tangentCirclesSolve?.solveStatus > 1 || Math.abs(report.tangentCirclesSolve?.firstCenterX - 2) > 1e-7 || Math.abs(report.tangentCirclesSolve?.firstCenterY - 3) > 1e-7 || Math.abs(report.tangentCirclesSolve?.firstRadius - 4) > 1e-7 || Math.abs(report.tangentCirclesSolve?.secondCenterX - 10) > 1e-7 || Math.abs(report.tangentCirclesSolve?.secondCenterY - 3) > 1e-7 || Math.abs(report.tangentCirclesSolve?.secondRadius - 4) > 1e-7 || Math.abs(report.tangentCirclesSolve?.residual) > 1e-7) throw new Error('Chrome tangent-circle planegcs solve evidence is invalid.') +if (report.pointSymmetrySolve?.solveStatus > 1 || Math.abs(report.pointSymmetrySolve?.firstX - 1) > 1e-7 || Math.abs(report.pointSymmetrySolve?.firstY - 2) > 1e-7 || Math.abs(report.pointSymmetrySolve?.secondX - 7) > 1e-7 || Math.abs(report.pointSymmetrySolve?.secondY - 10) > 1e-7 || Math.abs(report.pointSymmetrySolve?.centerX - 4) > 1e-7 || Math.abs(report.pointSymmetrySolve?.centerY - 6) > 1e-7 || Math.abs(report.pointSymmetrySolve?.residual) > 1e-7) throw new Error('Chrome point-symmetry planegcs solve evidence is invalid.') +if (report.pointOnLineSolve?.solveStatus > 1 || Math.abs(report.pointOnLineSolve?.pointX - 2) > 1e-7 || Math.abs(report.pointOnLineSolve?.pointY) > 1e-7 || Math.abs(report.pointOnLineSolve?.startX) > 1e-7 || Math.abs(report.pointOnLineSolve?.startY) > 1e-7 || Math.abs(report.pointOnLineSolve?.endX - 4) > 1e-7 || Math.abs(report.pointOnLineSolve?.endY) > 1e-7 || Math.abs(report.pointOnLineSolve?.residual) > 1e-7) throw new Error('Chrome point-on-line planegcs solve evidence is invalid.') +if (report.pointOnCircleSolve?.solveStatus > 1 || Math.abs(report.pointOnCircleSolve?.pointX - 4) > 1e-7 || Math.abs(report.pointOnCircleSolve?.pointY - 6.464101615137754) > 1e-7 || Math.abs(report.pointOnCircleSolve?.centerX - 2) > 1e-7 || Math.abs(report.pointOnCircleSolve?.centerY - 3) > 1e-7 || Math.abs(report.pointOnCircleSolve?.radius - 4) > 1e-7 || Math.abs(report.pointOnCircleSolve?.residual) > 1e-7) throw new Error('Chrome point-on-circle planegcs solve evidence is invalid.') +if (report.pointOnCircleProvider?.completed !== 'completed' || Math.abs(report.pointOnCircleProvider?.point?.x - 4) > 1e-7 || Math.abs(report.pointOnCircleProvider?.point?.y - 6.464101615137754) > 1e-7) throw new Error('Chrome point-on-circle planegcs provider evidence is invalid.') +if (report.pointOnArcSolve?.solveStatus > 1 || Math.abs(report.pointOnArcSolve?.pointX - 2) > 1e-7 || Math.abs(report.pointOnArcSolve?.pointY - 7) > 1e-7 || Math.abs(report.pointOnArcSolve?.centerX - 2) > 1e-7 || Math.abs(report.pointOnArcSolve?.centerY - 3) > 1e-7 || Math.abs(report.pointOnArcSolve?.radius - 4) > 1e-7 || Math.abs(report.pointOnArcSolve?.startAngle) > 1e-7 || Math.abs(report.pointOnArcSolve?.endAngle - Math.PI) > 1e-7 || Math.abs(report.pointOnArcSolve?.residual) > 1e-7) throw new Error('Chrome point-on-arc planegcs solve evidence is invalid.') +if (report.pointOnArcProvider?.completed !== 'completed' || Math.abs(report.pointOnArcProvider?.point?.x - 2) > 1e-7 || Math.abs(report.pointOnArcProvider?.point?.y - 7) > 1e-7 || Math.abs(report.pointOnArcProvider?.arc?.center?.x - 2) > 1e-7 || Math.abs(report.pointOnArcProvider?.arc?.center?.y - 3) > 1e-7 || Math.abs(report.pointOnArcProvider?.arc?.radius - 4) > 1e-7 || Math.abs(report.pointOnArcProvider?.arc?.startAngle) > 1e-7 || Math.abs(report.pointOnArcProvider?.arc?.endAngle - Math.PI) > 1e-7) throw new Error('Chrome point-on-arc planegcs provider evidence is invalid.') +if (report.pointOnEllipseSolve?.solveStatus > 1 || Math.abs(report.pointOnEllipseSolve?.pointX - 2) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.pointY - 6) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.centerX - 2) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.centerY - 3) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.focusX - 6) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.focusY - 3) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.minorRadius - 3) > 1e-7 || Math.abs(report.pointOnEllipseSolve?.residual) > 1e-7) throw new Error('Chrome point-on-ellipse planegcs solve evidence is invalid.') +if (report.pointOnEllipseProvider?.completed !== 'completed' || Math.abs(report.pointOnEllipseProvider?.point?.x - 2) > 1e-7 || Math.abs(report.pointOnEllipseProvider?.point?.y - 6) > 1e-7 || Math.abs(report.pointOnEllipseProvider?.ellipse?.center?.x - 2) > 1e-7 || Math.abs(report.pointOnEllipseProvider?.ellipse?.center?.y - 3) > 1e-7 || Math.abs(report.pointOnEllipseProvider?.ellipse?.majorRadius - 5) > 1e-7 || Math.abs(report.pointOnEllipseProvider?.ellipse?.minorRadius - 3) > 1e-7 || Math.abs(report.pointOnEllipseProvider?.ellipse?.rotation) > 1e-7) throw new Error('Chrome point-on-ellipse planegcs provider evidence is invalid.') +if (report.pointOnBsplineSolve?.solveStatus > 1 || Math.abs(report.pointOnBsplineSolve?.pointX - 2) > 1e-7 || Math.abs(report.pointOnBsplineSolve?.pointY - 1.5) > 1e-7 || Math.abs(report.pointOnBsplineSolve?.pointParameter - 0.5) > 1e-7 || Math.abs(report.pointOnBsplineSolve?.residualX) > 1e-7 || Math.abs(report.pointOnBsplineSolve?.residualY) > 1e-7) throw new Error('Chrome point-on-B-spline planegcs solve evidence is invalid.') +if (report.pointOnBsplineProvider?.completed !== 'completed' || Math.abs(report.pointOnBsplineProvider?.point?.x - 2) > 1e-7 || Math.abs(report.pointOnBsplineProvider?.point?.y - 1.5) > 1e-7 || report.pointOnBsplineProvider?.bspline?.degree !== 3 || report.pointOnBsplineProvider?.bspline?.controlPoints?.length !== 4 || report.pointOnBsplineProvider?.bspline?.periodic !== false) throw new Error('Chrome point-on-B-spline planegcs provider evidence is invalid.') +if (report.blockProvider?.completed !== 'completed' || report.blockProvider?.degreesOfFreedom !== 0 || report.blockProvider?.line?.start?.x !== 1 || report.blockProvider?.line?.start?.y !== 2 || report.blockProvider?.line?.end?.x !== 4 || report.blockProvider?.line?.end?.y !== 6) throw new Error('Chrome planegcs Block provider evidence is invalid.') +if (report.parallelSolve?.solveStatus > 1 || Math.abs(report.parallelSolve?.firstEndY - report.parallelSolve?.firstStartY) > 1e-7 || Math.abs(report.parallelSolve?.secondEndY - report.parallelSolve?.secondStartY) > 1e-7 || Math.abs(report.parallelSolve?.secondEndX - 5) > 1e-7 || Math.abs(report.parallelSolve?.residual) > 1e-7) throw new Error('Chrome parallel planegcs solve evidence is invalid.') +if (report.perpendicularSolve?.solveStatus > 1 || Math.abs(report.perpendicularSolve?.firstEndY - report.perpendicularSolve?.firstStartY) > 1e-7 || Math.abs(report.perpendicularSolve?.secondEndX - report.perpendicularSolve?.secondStartX) > 1e-7 || Math.abs(report.perpendicularSolve?.secondEndY - 7) > 1e-7 || Math.abs(report.perpendicularSolve?.residual) > 1e-7) throw new Error('Chrome perpendicular planegcs solve evidence is invalid.') +if (report.coincidentSolve?.solveStatus > 1 || Math.abs(report.coincidentSolve?.firstEndX - report.coincidentSolve?.secondStartX) > 1e-7 || Math.abs(report.coincidentSolve?.firstEndY - report.coincidentSolve?.secondStartY) > 1e-7 || Math.abs(report.coincidentSolve?.residual) > 1e-7) throw new Error('Chrome coincident planegcs solve evidence is invalid.') +const expectedCoincidentPairs = ['start:start', 'start:end', 'end:start', 'end:end'] +const validateCoincidentEndpointEvidence = (entries, provider) => Array.isArray(entries) && entries.length === 4 && entries.every((entry, index) => `${entry.firstPoint}:${entry.secondPoint}` === expectedCoincidentPairs[index] && (!provider || entry.completed === 'completed') && (!provider || Number.isFinite(entry.secondLength)) && (provider || entry.solveStatus <= 1) && Math.abs(entry.first?.x - entry.second?.x) <= 1e-7 && Math.abs(entry.first?.y - entry.second?.y) <= 1e-7 && Math.abs(entry.secondLength - 5) <= 1e-7 && (provider || Math.abs(entry.residual) <= 1e-7)) +if (!validateCoincidentEndpointEvidence(report.coincidentEndpointSolves, false)) throw new Error('Chrome selectable Coincident Embind endpoint evidence is invalid.') +if (!validateCoincidentEndpointEvidence(report.coincidentEndpointProviders, true)) throw new Error('Chrome selectable Coincident provider endpoint evidence is invalid.') +const snellsSolve = report.snellsLawSolve +if (snellsSolve?.solveStatus > 1 || Math.abs(snellsSolve?.firstStart?.x - snellsSolve?.secondStart?.x) > 1e-7 || Math.abs(snellsSolve?.firstStart?.y - snellsSolve?.secondStart?.y) > 1e-7 || Math.abs(Math.hypot(snellsSolve?.secondEnd?.x - snellsSolve?.secondStart?.x, snellsSolve?.secondEnd?.y - snellsSolve?.secondStart?.y) - 5) > 1e-7 || Math.abs(snellsSolve?.boundaryStart?.y) > 1e-7 || Math.abs(snellsSolve?.boundaryEnd?.y) > 1e-7 || snellsSolve?.ratio !== 1.5 || Math.abs(snellsSolve?.residual) > 1e-7) throw new Error('Chrome SnellsLaw Embind evidence is invalid.') +const snellsProvider = report.snellsLawProvider +if (snellsProvider?.completed !== 'completed' || snellsProvider?.degreesOfFreedom !== 8 || Math.abs(snellsProvider?.residual) > 1e-7 || Math.abs(snellsProvider?.first?.start?.x - snellsProvider?.second?.start?.x) > 1e-7 || Math.abs(snellsProvider?.first?.start?.y - snellsProvider?.second?.start?.y) > 1e-7 || Math.abs(Math.hypot(snellsProvider?.second?.end?.x - snellsProvider?.second?.start?.x, snellsProvider?.second?.end?.y - snellsProvider?.second?.start?.y) - 5) > 1e-7 || Math.abs(snellsProvider?.boundary?.start?.y) > 1e-7 || Math.abs(snellsProvider?.boundary?.end?.y) > 1e-7) throw new Error('Chrome SnellsLaw provider evidence is invalid.') +const ellipseAlignmentSolves = report.ellipseInternalAlignmentSolves +if (!Array.isArray(ellipseAlignmentSolves) || ellipseAlignmentSolves.length !== 4 || ellipseAlignmentSolves.some((entry, index) => entry.alignmentType !== index + 1 || entry.solveStatus > 1 || Math.abs(entry.center?.x - 2) > 1e-7 || Math.abs(entry.center?.y - 3) > 1e-7 || Math.abs(entry.minorRadius - 3) > 1e-7 || Math.abs(entry.helperError) > 1e-7 || Math.abs(entry.residual) > 1e-7)) throw new Error('Chrome Ellipse InternalAlignment Embind evidence is invalid.') +const ellipseAlignmentProvider = report.ellipseInternalAlignmentProvider +if (ellipseAlignmentProvider?.completed !== 'completed' || ellipseAlignmentProvider?.degreesOfFreedom !== 5 || Math.abs(ellipseAlignmentProvider?.residual) > 1e-7 || ellipseAlignmentProvider?.ellipse?.center?.x !== 2 || ellipseAlignmentProvider?.ellipse?.center?.y !== 3 || ellipseAlignmentProvider?.ellipse?.majorRadius !== 5 || ellipseAlignmentProvider?.ellipse?.minorRadius !== 3 || ellipseAlignmentProvider?.ellipse?.rotation !== 0.25) throw new Error('Chrome Ellipse InternalAlignment provider evidence is invalid.') +const bsplineWeightSolve = report.bsplineWeightSolve +if (bsplineWeightSolve?.solveStatus > 1 || bsplineWeightSolve?.weights?.length !== 4 || Math.abs(bsplineWeightSolve?.weights?.[0] - 1) > 1e-7 || Math.abs(bsplineWeightSolve?.weights?.[1] - 1.5) > 1e-7 || Math.abs(bsplineWeightSolve?.weights?.[2] - 1.25) > 1e-7 || Math.abs(bsplineWeightSolve?.weights?.[3] - 1) > 1e-7 || Math.abs(bsplineWeightSolve?.helper?.center?.x - 1) > 1e-7 || Math.abs(bsplineWeightSolve?.helper?.center?.y - 2) > 1e-7 || Math.abs(bsplineWeightSolve?.helper?.radius - 1.5) > 1e-7 || Math.abs(bsplineWeightSolve?.alignmentResidual) > 1e-7 || Math.abs(bsplineWeightSolve?.residual) > 1e-7) throw new Error('Chrome B-spline Weight Embind evidence is invalid.') +const bsplineWeightProvider = report.bsplineWeightProvider +if (bsplineWeightProvider?.completed !== 'completed' || bsplineWeightProvider?.degreesOfFreedom !== 11 || Math.abs(bsplineWeightProvider?.residual) > 1e-7 || bsplineWeightProvider?.bspline?.degree !== 3 || bsplineWeightProvider?.bspline?.weights?.length !== 4 || Math.abs(bsplineWeightProvider?.bspline?.weights?.[0] - 1) > 1e-7 || Math.abs(bsplineWeightProvider?.bspline?.weights?.[1] - 1.5) > 1e-7 || Math.abs(bsplineWeightProvider?.bspline?.weights?.[2] - 1.25) > 1e-7 || Math.abs(bsplineWeightProvider?.bspline?.weights?.[3] - 1) > 1e-7 || bsplineWeightProvider?.bspline?.periodic !== false) throw new Error('Chrome B-spline Weight provider evidence is invalid.') +const lifecycle = report.providerLifecycle +if (!lifecycle?.supportedGeometry?.includes('arc')) throw new Error('Chrome planegcs Arc capability evidence is invalid.') +if (!lifecycle?.supportedGeometry?.includes('ellipse')) throw new Error('Chrome planegcs Ellipse capability evidence is invalid.') +if (!lifecycle?.supportedGeometry?.includes('bspline')) throw new Error('Chrome planegcs B-spline capability evidence is invalid.') +if (!lifecycle?.supportedConstraints?.includes('block')) throw new Error('Chrome planegcs Block capability evidence is invalid.') +if (!lifecycle?.supportedConstraints?.includes('snellsLaw')) throw new Error('Chrome planegcs SnellsLaw capability evidence is invalid.') +if (!lifecycle?.supportedConstraints?.includes('internalAlignment')) throw new Error('Chrome planegcs InternalAlignment capability evidence is invalid.') +if (!lifecycle?.supportedConstraints?.includes('weight')) throw new Error('Chrome planegcs Weight capability evidence is invalid.') +if (lifecycle?.availability !== 'available' || lifecycle?.engine !== 'planegcs-wasm' || !lifecycle?.supportedGeometry?.includes('point') || !lifecycle?.supportedGeometry?.includes('circle') || !lifecycle?.supportedConstraints?.includes('vertical') || !lifecycle?.supportedConstraints?.includes('angle') || !lifecycle?.supportedConstraints?.includes('radius') || !lifecycle?.supportedConstraints?.includes('diameter') || !lifecycle?.supportedConstraints?.includes('equal') || !lifecycle?.supportedConstraints?.includes('tangent') || !lifecycle?.supportedConstraints?.includes('symmetric') || !lifecycle?.supportedConstraints?.includes('pointOnObject') || !lifecycle?.supportedConstraints?.includes('parallel') || !lifecycle?.supportedConstraints?.includes('perpendicular') || !lifecycle?.supportedConstraints?.includes('coincident') || lifecycle?.completed !== 'completed' || lifecycle?.verticalCompleted !== 'completed' || Math.abs(lifecycle?.verticalEnd?.x) > 1e-7 || Math.abs(lifecycle?.verticalEnd?.y - 5) > 1e-7 || lifecycle?.angleCompleted !== 'completed' || Math.abs(Math.hypot(lifecycle?.angleEnd?.x, lifecycle?.angleEnd?.y) - 5) > 1e-7 || Math.abs(Math.atan2(lifecycle?.angleEnd?.y, lifecycle?.angleEnd?.x) - Math.PI / 4) > 1e-7 || lifecycle?.circleRadiusCompleted !== 'completed' || Math.abs(lifecycle?.circleRadius?.center?.x - 2) > 1e-7 || Math.abs(lifecycle?.circleRadius?.center?.y - 3) > 1e-7 || Math.abs(lifecycle?.circleRadius?.radius - 4) > 1e-7 || lifecycle?.circleDiameterCompleted !== 'completed' || Math.abs(lifecycle?.circleDiameter?.center?.x - 2) > 1e-7 || Math.abs(lifecycle?.circleDiameter?.center?.y - 3) > 1e-7 || Math.abs(lifecycle?.circleDiameter?.radius * 2 - 8) > 1e-7 || lifecycle?.equalLinesCompleted !== 'completed' || Math.abs(Math.hypot(lifecycle?.equalLinesSecond?.end?.x - lifecycle?.equalLinesSecond?.start?.x, lifecycle?.equalLinesSecond?.end?.y - lifecycle?.equalLinesSecond?.start?.y) - 4) > 1e-7 || lifecycle?.equalCirclesCompleted !== 'completed' || Math.abs(lifecycle?.equalCirclesSecond?.center?.x - 8) > 1e-7 || Math.abs(lifecycle?.equalCirclesSecond?.center?.y - 9) > 1e-7 || Math.abs(lifecycle?.equalCirclesSecond?.radius - 4) > 1e-7 || lifecycle?.tangentCirclesCompleted !== 'completed' || Math.abs(lifecycle?.tangentCirclesSecond?.center?.x - 10) > 1e-7 || Math.abs(lifecycle?.tangentCirclesSecond?.center?.y - 3) > 1e-7 || Math.abs(lifecycle?.tangentCirclesSecond?.radius - 4) > 1e-7 || lifecycle?.pointSymmetryCompleted !== 'completed' || Math.abs(lifecycle?.pointSymmetrySecond?.x - 7) > 1e-7 || Math.abs(lifecycle?.pointSymmetrySecond?.y - 10) > 1e-7 || lifecycle?.pointOnLineCompleted !== 'completed' || Math.abs(lifecycle?.pointOnLinePoint?.x - 2) > 1e-7 || Math.abs(lifecycle?.pointOnLinePoint?.y) > 1e-7 || lifecycle?.pointOnLineCompleted !== 'completed' || Math.abs(lifecycle?.pointOnLinePoint?.x - 2) > 1e-7 || Math.abs(lifecycle?.pointOnLinePoint?.y) > 1e-7 || lifecycle?.parallelCompleted !== 'completed' || Math.abs(lifecycle?.parallelEnd?.y - 2) > 1e-7 || Math.abs(lifecycle?.parallelEnd?.x - 5) > 1e-7 || lifecycle?.perpendicularCompleted !== 'completed' || Math.abs(lifecycle?.perpendicularEnd?.x) > 1e-7 || Math.abs(lifecycle?.perpendicularEnd?.y - 7) > 1e-7 || lifecycle?.coincidentCompleted !== 'completed' || Math.abs(lifecycle?.coincidentStart?.x - 4) > 1e-7 || Math.abs(lifecycle?.coincidentStart?.y) > 1e-7 || lifecycle?.cancelled !== 'cancelled' || lifecycle?.recovered !== 'completed' || lifecycle?.stale !== 'stale' || Math.abs(lifecycle?.recoveredEnd?.x - 5) > 1e-7 || Math.abs(lifecycle?.recoveredEnd?.y) > 1e-7) throw new Error('Chrome planegcs Facade provider lifecycle evidence is invalid.') +console.log(JSON.stringify({ status: 'chrome-planegcs-verification-pass', browserId: report.browserId, solve: report.solve, verticalSolve: report.verticalSolve, distanceXSolve: report.distanceXSolve, distanceYSolve: report.distanceYSolve, angleSolve: report.angleSolve, circleRadiusSolve: report.circleRadiusSolve, circleDiameterSolve: report.circleDiameterSolve, equalLinesSolve: report.equalLinesSolve, equalCirclesSolve: report.equalCirclesSolve, tangentCirclesSolve: report.tangentCirclesSolve, pointSymmetrySolve: report.pointSymmetrySolve, pointOnLineSolve: report.pointOnLineSolve, pointOnCircleSolve: report.pointOnCircleSolve, pointOnCircleProvider: report.pointOnCircleProvider, pointOnEllipseSolve: report.pointOnEllipseSolve, pointOnEllipseProvider: report.pointOnEllipseProvider, parallelSolve: report.parallelSolve, perpendicularSolve: report.perpendicularSolve, coincidentSolve: report.coincidentSolve, providerLifecycle: lifecycle }, null, 2)) diff --git a/scripts/check-chrome-plot.mjs b/scripts/check-chrome-plot.mjs new file mode 100644 index 0000000..9d7adf6 --- /dev/null +++ b/scripts/check-chrome-plot.mjs @@ -0,0 +1,16 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-plot-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Plot verification is not passing.') +if (report.series?.count !== 2 || report.series.boundSource !== 'Spreadsheet' || report.series.points !== 3 || report.series.updatedValue !== 16 || report.series.legend !== true) throw new Error('Plot bound-series update evidence is incomplete.') +if (report.axes?.x !== 'Revision' || report.axes.y !== 'Length (mm)' || JSON.stringify(report.axes.xRange) !== JSON.stringify([0, 2]) || JSON.stringify(report.axes.yRange) !== JSON.stringify([0, 20])) throw new Error('Plot axes evidence is incomplete.') +if (report.logAxis?.xScale !== 'log' || report.logAxis?.yScale !== 'log' || report.logAxis.svgHasLogMapping !== true || report.logAxis.rejectedNonPositive !== true) throw new Error('Plot logarithmic-axis evidence is incomplete.') +if (report.svg?.bytes <= 0 || report.svg.deterministic !== true || report.svg.paths !== 2 || report.svg.accessible !== true || !/^[0-9a-f]{64}$/.test(report.svg.sha256)) throw new Error('Plot deterministic SVG evidence is incomplete.') +if (report.png?.bytes <= 0 || report.png.deterministic !== true || report.png.validSignature !== true || report.png.width !== 640 || report.png.height !== 360 || !/^[0-9a-f]{64}$/.test(report.png.sha256)) throw new Error('Plot deterministic PNG evidence is incomplete.') +if (report.csv?.bytes <= 0 || report.csv.rows !== 7 || !/^[0-9a-f]{64}$/.test(report.csv.sha256)) throw new Error('Plot CSV evidence is incomplete.') +if (!Array.isArray(report.resources) || report.resources.length !== 3 || !report.resources.some((resource) => resource.mediaType === 'image/png') || report.resources.some((resource) => !resource.hash || resource.byteLength <= 0 || resource.roundTrip !== true || resource.released !== true)) throw new Error('Plot OPFS resource lifecycle evidence is incomplete.') +if (report.opfs?.markerSuite !== 'PLOT-ALL' || report.opfs.markerSeries !== 2 || report.opfs.markerRemoved !== true) throw new Error('Plot OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Plot harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-plot-pass', browser: report.browser.product, series: report.series, axes: report.axes, svg: report.svg, png: report.png, csv: report.csv, resources: report.resources, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-production-document.mjs b/scripts/check-chrome-production-document.mjs new file mode 100644 index 0000000..2e05120 --- /dev/null +++ b/scripts/check-chrome-production-document.mjs @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-production-document-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome production document verification is not passing.') +if (report.closure?.complete !== true || report.closure.artifacts !== 4 || report.closure.missingKinds !== 0 || report.closure.missingDependencies !== 0 || report.closure.cycles !== 0 || report.closure.documentVersion !== 8 || report.closure.reopenedComplete !== true || JSON.stringify(report.closure.artifactVersions) !== JSON.stringify([2, 2, 2, 2])) throw new Error('DOC-CLOSURE dependency and reopen evidence is incomplete.') +if (report.workflow?.created.spreadsheetCells !== 2 || report.workflow.created.draftObjects !== 1 || report.workflow.created.techdrawViews !== 1 || report.workflow.created.plotSeries !== 1) throw new Error('DOC-CLOSURE real artifact creation evidence is incomplete.') +if (report.workflow?.edited.spreadsheetValue !== 6 || report.workflow.edited.draftStartX !== 1 || report.workflow.edited.techdrawDimension !== 5 || report.workflow.edited.plotValue !== 6) throw new Error('DOC-CLOSURE cross-workbench edit evidence is incomplete.') +if (report.workflow?.exports.techdrawPdfValid !== true || Object.entries(report.workflow.exports).some(([name, value]) => name !== 'techdrawPdfValid' && (typeof value !== 'number' || value <= 0))) throw new Error('DOC-CLOSURE real export evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('DOC-CLOSURE OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'DOC-CLOSURE' || report.opfs.artifacts !== 4 || report.opfs.markerRemoved !== true) throw new Error('DOC-CLOSURE OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('DOC-CLOSURE harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-production-document-pass', browser: report.browser.product, closure: report.closure, workflow: report.workflow, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-profile-validation.mjs b/scripts/check-chrome-profile-validation.mjs new file mode 100644 index 0000000..01f7bce --- /dev/null +++ b/scripts/check-chrome-profile-validation.mjs @@ -0,0 +1,18 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-profile-validation-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome profile validation verification is not passing.') +const fixtures = report.fixtures ?? {} +const is = (fixture, status, ringCount, intersections = 0) => fixture?.status === status && fixture.ringCount === ringCount && fixture.selfIntersections === intersections +if (!is(fixtures.closed, 'closed', 1) || !is(fixtures.open, 'open', 1) || !is(fixtures.multiRing, 'multi-ring', 2) || !is(fixtures.selfIntersecting, 'self-intersecting', 1, 1) || !is(fixtures.invalidNesting, 'invalid-nesting', 2) || !is(fixtures.nonPlanar, 'non-planar', 1) || !is(fixtures.degenerate, 'degenerate', 1)) throw new Error('Chrome profile classification evidence is incomplete.') +const errors = report.validationErrors ?? {} +if (errors.closed !== null || errors.multiRing !== null || !/open/.test(errors.open ?? '') || !/self-intersecting/.test(errors.selfIntersecting ?? '') || !/contained directly/.test(errors.invalidNesting ?? '') || !/coplanar/.test(errors.nonPlanar ?? '') || !/collinear/.test(errors.degenerate ?? '')) throw new Error('Chrome profile validation error evidence is incomplete.') +const partDesign = report.partDesignProfiles ?? {} +if (partDesign.closed?.code !== null || partDesign.closed.regionCount !== 1 || partDesign.multiRing?.code !== null || partDesign.multiRing.outerPoints !== 4 || partDesign.multiRing.holeCount !== 1 || partDesign.multiRing.regionCount !== 1 || partDesign.open?.code !== 'PROFILE_OPEN' || partDesign.selfIntersecting?.code !== null || partDesign.selfIntersecting.regionCount !== 2 || JSON.stringify(partDesign.selfIntersecting.regionPoints) !== '[3,3]' || partDesign.invalidNesting?.code !== null || partDesign.invalidNesting.regionCount !== 2 || JSON.stringify(partDesign.invalidNesting.regionPoints) !== '[4,4]') throw new Error('Chrome PartDesign profile consumption evidence is incomplete.') +const geometry = report.partDesignGeometry ?? {} +const geometryMatches = (name, volume, solids, shapeType) => Math.abs(geometry[name]?.volume - volume) <= 1e-7 && geometry[name]?.solids === solids && geometry[name]?.shapeType === shapeType +if (!geometryMatches('closed', 360, 1, 'solid') || !geometryMatches('multiRing', 320, 1, 'solid') || !geometryMatches('selfIntersecting', 80, 2, 'compound') || !geometryMatches('invalidNesting', 370, 2, 'compound')) throw new Error('Chrome PartDesign OCCT profile geometry does not match FreeCAD.') +if (report.opfs?.markerSuite !== 'SK-11' || report.opfs.markerCases !== 12 || report.opfs.markerRemoved !== true) throw new Error('Chrome profile validation OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-profile-validation-pass', browser: report.browserId, fixtures: report.fixtures, validationErrors: report.validationErrors, partDesignProfiles: report.partDesignProfiles, partDesignGeometry: report.partDesignGeometry, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-qa08.mjs b/scripts/check-chrome-qa08.mjs new file mode 100644 index 0000000..d2b4296 --- /dev/null +++ b/scripts/check-chrome-qa08.mjs @@ -0,0 +1,16 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname) +const [report, app] = await Promise.all([ + readFile(resolve(root, 'config/chrome-qa08-verification.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/chrome-app-e2e-verification.json'), 'utf8').then(JSON.parse), +]) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome QA-08 verification is not passing.') +if (report.locales?.supported !== 3 || report.locales.snapshots !== 3 || report.locales.longLabel !== true || report.locales.decimalSamples.some((sample) => !sample.includes('mm'))) throw new Error('Locale evidence is incomplete.') +if (report.accessibility?.checked !== 4 || report.accessibility.missingNames !== 0 || report.accessibility.duplicates !== 0 || report.accessibility.unnamedFocusable !== 0 || report.accessibility.pass !== true) throw new Error('Accessibility semantics evidence is incomplete.') +const screenshotKeys = Object.keys(app.screenshots || {}) +if (app.status !== 'pass' || app.mobile?.viewport?.width !== 390 || app.mobile.bodyHorizontalOverflow > 1 || app.keyboard?.steps !== 8 || app.keyboard.named !== 8 || app.keyboard.unnamedVisible !== 0 || app.screenReader?.nodes < 10 || app.screenReader.controls < 8 || app.screenReader.namedControls !== app.screenReader.controls || app.screenReader.unnamedControls !== 0 || !['desktop', 'mobile'].every((key) => screenshotKeys.includes(key))) throw new Error('Keyboard, screen-reader, locale, or mobile accessibility matrix is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('QA-08 OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'QA-08' || report.opfs.localeCount !== 3 || report.opfs.markerRemoved !== true) throw new Error('QA-08 OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('QA-08 harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-qa08-pass', browser: report.browser.product, locales: report.locales, accessibility: report.accessibility, application: { mobile: app.mobile, keyboard: app.keyboard, screenReader: app.screenReader, screenshots: Object.keys(app.screenshots) }, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-robot.mjs b/scripts/check-chrome-robot.mjs new file mode 100644 index 0000000..8b1c8db --- /dev/null +++ b/scripts/check-chrome-robot.mjs @@ -0,0 +1,7 @@ +import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-robot-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Robot verification is not passing.') +if (!report.geometry?.valid || report.trajectory?.joints !== 3 || report.trajectory.waypoints !== 2 || report.trajectory.poses !== 5 || report.trajectory.status !== 'generated' || report.trajectory.violations !== 0 || report.trajectory.maxReach !== 6 || report.trajectory.homeX !== 6 || report.trajectory.collisions < 1 || report.trajectory.controllerBytes <= 0 || report.trajectory.csvBytes <= 0) throw new Error('Robot trajectory/kinematics/workspace/collision/controller evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || !/^[0-9a-f]{64}$/.test(report.persistence.hash) || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Robot OPFS evidence is incomplete.') +if (report.opfs?.markerSuite !== 'ROBOT-ALL' || report.opfs.poses !== 5 || report.opfs.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Robot lifecycle evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-robot-pass', browser: report.browser.product, geometry: report.geometry, trajectory: report.trajectory, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-script.mjs b/scripts/check-chrome-script.mjs new file mode 100644 index 0000000..7ec7699 --- /dev/null +++ b/scripts/check-chrome-script.mjs @@ -0,0 +1,3 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-script-verification.json'), 'utf8')); if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome script sandbox verification is not passing.'); if (report.macro?.commands !== 2 || report.macro.replay !== 'replayed' || report.macro.executed !== 2 || report.macro.bytes <= 0) throw new Error('Script macro replay evidence is incomplete.'); if (!report.security?.disallowedRejected || !report.security.quotaRejected || !report.security.noDynamicExecution || JSON.stringify(report.security.deniedCapabilities) !== JSON.stringify(['file', 'network', 'time', 'resource'])) throw new Error('Script file/network/time/resource permission evidence is incomplete.'); if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Script OPFS resource evidence is incomplete.'); if (report.opfs?.markerSuite !== 'SCRIPT-ALL' || report.opfs.commands !== 2 || report.opfs.markerRemoved !== true) throw new Error('Script OPFS marker evidence is incomplete.'); if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Script harness leaked ShapeHandles.'); console.log(JSON.stringify({ status: 'chrome-script-pass', browser: report.browser.product, macro: report.macro, security: report.security, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-secondary-formats.mjs b/scripts/check-chrome-secondary-formats.mjs new file mode 100644 index 0000000..73e27bf --- /dev/null +++ b/scripts/check-chrome-secondary-formats.mjs @@ -0,0 +1,12 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-secondary-formats-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome secondary format verification is not passing.') +const expected = ['DXF', 'SVG', 'OBJ', 'PLY', 'STL', 'PDF', 'IFC', 'CSV'] +if (report.formats?.descriptors !== expected.length || report.formats.records !== expected.length || report.formats.nativeExports !== 3 || report.formats.proxyImports !== expected.length || report.formats.bytes <= 0 || JSON.stringify(report.formats.categories) !== JSON.stringify(['2d', 'bim', 'data', 'mesh']) || JSON.stringify(report.formats.matrix?.map((entry) => entry.format)) !== JSON.stringify(expected) || report.formats.matrix.some((entry) => !entry.imported || !entry.rejectedInvalid || !entry.byteExactRoundTrip || !entry.deterministic || !entry.proxy || entry.byteLength <= 0)) throw new Error('Secondary format success/failure/round-trip matrix is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Secondary format OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'FC-09' || report.opfs.records !== expected.length || report.opfs.markerRemoved !== true) throw new Error('Secondary format OPFS marker evidence is incomplete.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Secondary format harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-secondary-formats-pass', browser: report.browser.product, formats: report.formats, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-security.mjs b/scripts/check-chrome-security.mjs new file mode 100644 index 0000000..01abb67 --- /dev/null +++ b/scripts/check-chrome-security.mjs @@ -0,0 +1,3 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-security-verification.json'), 'utf8')); if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome security verification is not passing.'); if (report.checks?.path !== 5 || report.checks.archiveEntries !== 3 || report.checks.xmlBytes <= 0 || report.checks.permissionChecks !== 3 || report.checks.rejectedCases !== 4 || report.checks.pass !== true) throw new Error('QA-07 security preflight evidence is incomplete.'); if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('QA-07 OPFS resource evidence is incomplete.'); if (report.opfs?.markerSuite !== 'QA-07' || report.opfs.checks !== 4 || report.opfs.markerRemoved !== true) throw new Error('QA-07 OPFS marker evidence is incomplete.'); if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('QA-07 harness leaked ShapeHandles.'); console.log(JSON.stringify({ status: 'chrome-security-pass', browser: report.browser.product, checks: report.checks, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-sketcher-bspline.mjs b/scripts/check-chrome-sketcher-bspline.mjs new file mode 100644 index 0000000..e77c356 --- /dev/null +++ b/scripts/check-chrome-sketcher-bspline.mjs @@ -0,0 +1,21 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-sketcher-bspline-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome Sketcher B-spline verification is not passing.') +const edit = report.edit ?? {} +if (edit.stableId !== true || edit.degree !== 1 || edit.poleCount !== 3 || edit.middlePole?.x !== 2 || edit.middlePole?.y !== 3 || JSON.stringify(edit.weights) !== JSON.stringify([1, 0.5, 1]) || JSON.stringify(edit.knots) !== JSON.stringify([0, 0, 0.5, 1, 1]) || edit.periodic !== true || edit.sourceUnchanged !== true) throw new Error('Chrome B-spline pole, weight, knot, degree, or periodic evidence is incomplete.') +const errors = report.validationErrors ?? {} +if (!/weights/.test(errors.invalidWeight ?? '') || !/knots/.test(errors.invalidKnots ?? '') || !/degree \+ 1/.test(errors.invalidDegree ?? '')) throw new Error('Chrome B-spline validation error evidence is incomplete.') +const roundTrip = report.roundTrip ?? {} +if (!(roundTrip.archiveBytes > 0) || roundTrip.geometryEqual !== true || roundTrip.constraintsEqual !== true || JSON.stringify(roundTrip.constraintTypes) !== '["weight","internalAlignment","weight"]' || JSON.stringify(roundTrip.weights) !== '[1,1.5,1.25,1]' || JSON.stringify(roundTrip.knots) !== '[0,0,0,0,1,1,1,1]') throw new Error('Chrome B-spline FCStd round-trip evidence is incomplete.') +const planegcs = JSON.parse(await readFile(resolve(root, 'config/chrome-planegcs-verification.json'), 'utf8')) +const native = planegcs.bsplineWeightSolve +const provider = planegcs.bsplineWeightProvider +if (planegcs.status !== 'pass' || native?.solveStatus > 1 || JSON.stringify(native?.weights) !== '[1,1.5,1.25,1]' || Math.abs(native?.alignmentResidual) > 1e-7 || Math.abs(native?.residual) > 1e-7 || provider?.completed !== 'completed' || provider?.degreesOfFreedom !== 11 || JSON.stringify(provider?.bspline?.weights) !== '[1,1.5,1.25,1]' || provider?.bspline?.periodic !== false) throw new Error('Chrome planegcs B-spline Weight/InternalAlignment evidence is incomplete.') +const freecad = JSON.parse(await readFile(resolve(root, 'config/freecad-sketcher-constraint-oracle.json'), 'utf8')) +const weightFixture = freecad.successCases?.find((entry) => entry.constraintType === 'Weight') +if (freecad.status !== 'pass' || weightFixture?.observed !== 'success' || weightFixture.solveStatus !== 0 || Math.abs(weightFixture.residual) > freecad.tolerance) throw new Error('FreeCAD B-spline Weight oracle evidence is incomplete.') +if (report.opfs?.markerSuite !== 'SK-10' || report.opfs.markerFields !== 8 || report.opfs.markerRemoved !== true) throw new Error('Chrome Sketcher B-spline OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-sketcher-bspline-pass', browser: report.browserId, edit: report.edit, roundTrip: report.roundTrip, nativeWeight: native, providerWeight: provider, freecadWeight: weightFixture, validationErrors: report.validationErrors, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-sketcher-diagnostics.mjs b/scripts/check-chrome-sketcher-diagnostics.mjs new file mode 100644 index 0000000..d7402de --- /dev/null +++ b/scripts/check-chrome-sketcher-diagnostics.mjs @@ -0,0 +1,18 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-sketcher-diagnostics-verification.json'), 'utf8')) +const oracle = JSON.parse(await readFile(resolve(root, 'config/freecad-sketcher-constraint-oracle.json'), 'utf8')) +if (report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true) throw new Error('Chrome Sketcher diagnostics verification is not passing.') +if (report.fixtures?.reference?.status !== 'under-constrained' || report.fixtures.reference.degreesOfFreedom !== 3 || report.fixtures.reference.diagnostic !== true || report.fixtures.reference.unchangedEnd !== true) throw new Error('Chrome reference dimensional fixture evidence is incomplete.') +if (report.fixtures?.redundant?.status !== 'under-constrained' || report.fixtures.redundant.diagnostic !== true) throw new Error('Chrome redundant dimensional fixture evidence is incomplete.') +if (report.fixtures?.conflicting?.status !== 'conflicting' || report.fixtures.conflicting.diagnostic !== true || report.fixtures.conflicting.notConverged !== true) throw new Error('Chrome conflicting dimensional fixture evidence is incomplete.') +const referenceOracle = oracle.classificationCases?.find((entry) => entry.id === 'reference-dimension') +const redundantOracle = oracle.classificationCases?.find((entry) => entry.id === 'redundant-dimension') +const conflictingOracle = oracle.classificationCases?.find((entry) => entry.id === 'conflicting-dimension') +if (oracle.status !== 'pass' || referenceOracle?.solveStatus !== 0 || referenceOracle?.degreesOfFreedom !== report.fixtures.reference.degreesOfFreedom || referenceOracle?.driving !== false || redundantOracle?.solveStatus !== -2 || JSON.stringify(redundantOracle?.redundant) !== '[2]' || conflictingOracle?.solveStatus !== -3 || JSON.stringify(conflictingOracle?.conflicting) !== '[1,2]') throw new Error('Chrome Sketcher diagnostic classifications do not match the locked FreeCAD oracle.') +if (report.fixtures?.coincident?.status !== 'under-constrained' || report.fixtures.coincident.residual !== 0 || report.fixtures.coincident.sharedPoint !== true) throw new Error('Chrome coincident constraint evidence is incomplete.') +if (report.fixtures?.block?.status !== 'solved' || report.fixtures.block.degreesOfFreedom !== 0 || report.fixtures.block.unchanged !== true) throw new Error('Chrome block constraint evidence is incomplete.') +if (report.opfs?.markerSuite !== 'SK-06/SK-07' || report.opfs?.markerRemoved !== true) throw new Error('Chrome Sketcher diagnostics OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-sketcher-diagnostics-pass', browser: report.browserId, fixtures: report.fixtures, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-sketcher-editor.mjs b/scripts/check-chrome-sketcher-editor.mjs new file mode 100644 index 0000000..8b90a8f --- /dev/null +++ b/scripts/check-chrome-sketcher-editor.mjs @@ -0,0 +1,16 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-sketcher-editor-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome Sketcher editor verification is not passing.') +const operations = report.operations ?? {} +if (operations.drag?.start?.y !== 2 || operations.drag?.end?.x !== 8 || operations.drag.end.y !== 2 || operations.drag.sourceUnchanged !== true) throw new Error('Chrome drag evidence is incomplete.') +if (JSON.stringify(operations.split?.ids) !== JSON.stringify(['line', 'line-2']) || JSON.stringify(operations.split.constraintTypes) !== JSON.stringify(['coincident']) || operations.extend?.end?.x !== 15 || operations.extend.sourceUnchanged !== true || operations.trim?.end?.x !== 7 || JSON.stringify(operations.trim.constraintTypes) !== JSON.stringify(['pointOnObject']) || operations.trim.sourceUnchanged !== true) throw new Error('Chrome trim/extend/split evidence is incomplete.') +if (operations.construction?.enabled !== true || operations.construction.sourceUnchanged !== true) throw new Error('Chrome construction-toggle evidence is incomplete.') +if (JSON.stringify(operations.autoConstraint?.suggestionReasons) !== JSON.stringify(['coincident', 'horizontal']) || operations.autoConstraint.appliedIds.length !== 2 || operations.autoConstraint.sourceUnchanged !== true) throw new Error('Chrome autoconstraint evidence is incomplete.') +if (operations.replay?.applied !== 2 || operations.replay.undone !== 1 || operations.replay.redone !== 1 || operations.replay.finalEnd?.x !== 6) throw new Error('Chrome undo/redo replay evidence is incomplete.') +const interactions = report.interactions ?? {} +if (interactions.nativeEvents?.pointer !== 3 || interactions.nativeEvents.keyboard !== 3 || interactions.start?.y !== 2 || interactions.end?.x !== 8 || interactions.end?.y !== 2 || interactions.tool !== 'select' || interactions.pointerActive !== false || interactions.applied !== 1 || interactions.undone !== 1 || interactions.redone !== 1) throw new Error('Chrome native pointer/keyboard interaction evidence is incomplete.') +if (report.opfs?.markerSuite !== 'SK-09' || report.opfs.markerOperations !== 9 || report.opfs.markerRemoved !== true) throw new Error('Chrome Sketcher editor OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-sketcher-editor-pass', browser: report.browserId, operations: report.operations, interactions: report.interactions, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-sketcher-stress.mjs b/scripts/check-chrome-sketcher-stress.mjs new file mode 100644 index 0000000..1083de7 --- /dev/null +++ b/scripts/check-chrome-sketcher-stress.mjs @@ -0,0 +1,10 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-sketcher-stress-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome Sketcher stress verification is not passing.') +const stress = report.stress ?? {} +if (stress.seed !== 539363331 || stress.models !== 500 || stress.solves !== 1000 || stress.deterministicMismatches !== 0 || stress.unexpectedResults !== 0 || stress.maxIterations > 64 || stress.maxResidual > 1e-12 || stress.digest !== 'edac8aed' || stress.durationMs > 2_000) throw new Error('Chrome Sketcher stress deterministic or performance evidence is incomplete.') +if (report.opfs?.markerSuite !== 'SK-12' || report.opfs.markerModels !== 500 || report.opfs.markerSolves !== 1000 || report.opfs.markerRemoved !== true) throw new Error('Chrome Sketcher stress OPFS marker was not verified and removed.') +console.log(JSON.stringify({ status: 'chrome-sketcher-stress-pass', browser: report.browserId, stress: report.stress, opfs: report.opfs }, null, 2)) diff --git a/scripts/check-chrome-spreadsheet.mjs b/scripts/check-chrome-spreadsheet.mjs new file mode 100644 index 0000000..0683626 --- /dev/null +++ b/scripts/check-chrome-spreadsheet.mjs @@ -0,0 +1,19 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-spreadsheet-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome Spreadsheet verification is not passing.') +if (report.cells?.width !== 6 || report.cells.length !== 12 || report.cells.updatedLength !== 16 || report.cells.dimension !== 'length') throw new Error('Spreadsheet formula/unit recompute evidence is incomplete.') +if (JSON.stringify(report.aliases) !== JSON.stringify(['Length', 'Width']) || report.dependencies?.length !== 2) throw new Error('Spreadsheet alias/dependency evidence is incomplete.') +if (report.cycle?.detected !== true || JSON.stringify(report.cycle.cells) !== JSON.stringify(['C1', 'D1'])) throw new Error('Spreadsheet cycle diagnostics are incomplete.') +if (report.binding?.alias !== 'Length' || report.binding.objectId !== 'pad' || report.binding.propertyName !== 'Length' || report.binding.appliedValue !== 16 || report.binding.undoValue !== 12 || report.binding.redoValue !== 16) throw new Error('Spreadsheet model-property binding lifecycle evidence is incomplete.') +if (report.expression?.value !== 13 || report.expression.dimension !== 'length' || !report.expression.references.includes('Spreadsheet.Length')) throw new Error('Spreadsheet Facade expression bridge evidence is incomplete.') +if (report.layout?.styledCells !== 4 || report.layout.namedRange !== 'A1:A3' || report.layout.mergedRange !== 'A1:C3' || report.layout.shiftedFormulaAddress !== 'A3') throw new Error('Spreadsheet style/merge/named-range address migration evidence is incomplete.') +if (report.csv?.rows !== 2 || report.csv.columns !== 4 || report.csv.bytes <= 0) throw new Error('Spreadsheet CSV evidence is incomplete.') +if (report.largeSheet?.cells !== 10000 || report.largeSheet.rows !== 100 || report.largeSheet.columns !== 100 || report.largeSheet.evaluationErrors !== 0 || report.largeSheet.csvBytes <= 0 || !(report.largeSheet.durationMs >= 0) || report.largeSheet.durationMs > report.largeSheet.budgetMs || report.largeSheet.budgetMs !== 5000) throw new Error('Spreadsheet large-sheet performance evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.reopenedValue !== 16 || report.persistence.reopenedVersion !== report.persistence.savedVersion) throw new Error('Spreadsheet-bound OPFS project round-trip evidence is incomplete.') +if (!report.resource?.hash || report.resource.byteLength <= 0 || report.resource.roundTrip !== true || report.resource.released !== true) throw new Error('Spreadsheet OPFS resource lifecycle evidence is incomplete.') +if (report.opfs?.markerSuite !== 'SS-ALL' || report.opfs.markerCells !== 9 || report.opfs.markerRemoved !== true) throw new Error('Spreadsheet OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Spreadsheet harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-spreadsheet-pass', browser: report.browser.product, cells: report.cells, aliases: report.aliases, dependencies: report.dependencies, cycle: report.cycle, binding: report.binding, persistence: report.persistence, resource: report.resource, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-surface.mjs b/scripts/check-chrome-surface.mjs new file mode 100644 index 0000000..bb73121 --- /dev/null +++ b/scripts/check-chrome-surface.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-surface-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome surface verification is not passing.') +if (report.model?.patches !== 5 || report.model.poles !== 20 || report.model.trimmed !== 1 || report.model.sewn !== 1 || report.model.continuity !== 'C0' || report.model.fillKind !== 'bezier' || report.model.offsetDistance !== 1.5 || report.model.topoRefs !== 4 || report.model.objBytes <= 0) throw new Error('Surface fill/offset/trim/sew/TopoRef evidence is incomplete.') +if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error('Surface OPFS resource evidence is incomplete.') +if (report.opfs?.markerSuite !== 'SURF-CORE' || report.opfs.patches !== 5 || report.opfs.markerRemoved !== true) throw new Error('Surface OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('Surface harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-surface-pass', browser: report.browser.product, model: report.model, persistence: report.persistence, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-techdraw.mjs b/scripts/check-chrome-techdraw.mjs new file mode 100644 index 0000000..2c2c279 --- /dev/null +++ b/scripts/check-chrome-techdraw.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +const root = resolve(new URL('..', import.meta.url).pathname); const report = JSON.parse(await readFile(resolve(root, 'config/chrome-techdraw-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || !/Chrome/i.test(report.browser?.product || '') || report.crossOriginIsolated !== true) throw new Error('Chrome TechDraw verification is not passing.') +if (report.page?.views !== 2 || report.page.sections !== 1 || report.page.dimensions !== 1 || report.page.annotations !== 1 || report.page.tolerances !== 1 || report.page.updatedDimension !== 6 || JSON.stringify(report.page.unresolvedRefs) !== JSON.stringify(['Vertex3']) || JSON.stringify(report.page.unresolvedTolerances) !== JSON.stringify(['flatness'])) throw new Error('TechDraw view/section/dimension/GD&T/TopoRef update evidence is incomplete.') +if (report.svg?.bytes <= 0 || !/^[0-9a-f]{64}$/.test(report.svg.sha256) || report.svg.deterministic !== true || report.svg.lines !== 2 || report.svg.accessible !== true) throw new Error('TechDraw deterministic SVG evidence is incomplete.') +if (report.pdf?.bytes <= 0 || !/^[0-9a-f]{64}$/.test(report.pdf.sha256) || report.pdf.deterministic !== true || report.pdf.validHeader !== true || report.pdf.validXref !== true) throw new Error('TechDraw deterministic PDF evidence is incomplete.') +if (!Array.isArray(report.resources) || report.resources.length !== 3 || report.resources.some((resource) => !resource.hash || resource.byteLength <= 0 || resource.roundTrip !== true || resource.released !== true) || !report.resources.some((resource) => resource.mediaType === 'application/pdf')) throw new Error('TechDraw OPFS resource lifecycle evidence is incomplete.') +if (report.opfs?.markerSuite !== 'TD-ALL' || report.opfs.markerViews !== 2 || report.opfs.markerRemoved !== true) throw new Error('TechDraw OPFS marker was not verified and removed.') +if (report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error('TechDraw harness leaked ShapeHandles.') +console.log(JSON.stringify({ status: 'chrome-techdraw-pass', browser: report.browser.product, page: report.page, svg: report.svg, resources: report.resources, opfs: report.opfs, afterRelease: report.afterRelease }, null, 2)) diff --git a/scripts/check-chrome-topology-verification.mjs b/scripts/check-chrome-topology-verification.mjs new file mode 100644 index 0000000..c858d47 --- /dev/null +++ b/scripts/check-chrome-topology-verification.mjs @@ -0,0 +1,8 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/chrome-topology-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.browserId !== 'chrome' || report.status !== 'pass' || report.crossOriginIsolated !== true) throw new Error('Chrome topology verification is not passing.') +if (report.capabilities?.status !== 'ready' || report.topology?.faces !== 6 || report.topology?.edges !== 12 || report.topology?.vertices !== 8 || report.topology.analyticFaces !== 6 || report.topology.analyticEdges !== 12 || report.topology.transientIndexFree !== true || report.topology.opfsTopologyRoundTrip !== true || report.topology.adjacencyKeys.length !== 5 || report.topology.adjacencyKeys.some((count) => count === 0)) throw new Error('Chrome topology analytic, adjacency, or OPFS evidence is incomplete.') +console.log(JSON.stringify({ status: 'chrome-topology-verification-pass', counts: report.topology }, null, 2)) diff --git a/scripts/check-dependency-audit.mjs b/scripts/check-dependency-audit.mjs new file mode 100644 index 0000000..78911a5 --- /dev/null +++ b/scripts/check-dependency-audit.mjs @@ -0,0 +1,11 @@ +import { createHash } from 'node:crypto' +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const lockfileSha256 = createHash('sha256').update(await readFile(resolve(root, 'package-lock.json'))).digest('hex') +const report = JSON.parse(await readFile(resolve(root, 'config/npm-audit-critical.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass' || report.command !== 'npm audit --omit=dev --audit-level=critical --json') throw new Error('npm critical audit report is not passing.') +if (report.lockfileSha256 !== lockfileSha256) throw new Error('npm critical audit report does not match package-lock.json; rerun `npm run test:dependency-audit`.') +if (Number(report.metadata?.vulnerabilities?.critical ?? -1) !== 0 || Object.keys(report.vulnerabilities ?? {}).length !== 0) throw new Error('npm critical audit contains unresolved vulnerabilities.') +console.log(JSON.stringify({ status: 'dependency-audit-pass', critical: report.metadata.vulnerabilities.critical, productionDependencies: report.metadata.dependencies.prod, totalDependencies: report.metadata.dependencies.total, lockfileSha256 }, null, 2)) diff --git a/scripts/check-document-closure.mjs b/scripts/check-document-closure.mjs new file mode 100644 index 0000000..bfda8a6 --- /dev/null +++ b/scripts/check-document-closure.mjs @@ -0,0 +1,24 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (name) => JSON.parse(await readFile(resolve(root, `config/${name}`), 'utf8')) +const [techdraw, spreadsheet, draft, plot, production] = await Promise.all([ + load('chrome-techdraw-verification.json'), + load('chrome-spreadsheet-verification.json'), + load('chrome-draft-verification.json'), + load('chrome-plot-verification.json'), + load('chrome-production-document-verification.json'), +]) + +for (const [name, report] of Object.entries({ techdraw, spreadsheet, draft, plot, production })) { + if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true || !/Chrome/i.test(report.browser?.product || '')) throw new Error(`P07 ${name} Chrome evidence is not passing.`) + if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error(`P07 ${name} leaked ShapeHandles.`) +} +if (techdraw.page?.views !== 2 || techdraw.page.sections !== 1 || techdraw.page.dimensions !== 1 || techdraw.page.tolerances !== 1 || techdraw.pdf?.validHeader !== true || techdraw.pdf.validXref !== true || techdraw.pdf.deterministic !== true) throw new Error('TD-ALL page, GD&T or deterministic PDF evidence is incomplete.') +if (spreadsheet.largeSheet?.cells !== 10000 || spreadsheet.largeSheet.evaluationErrors !== 0 || spreadsheet.largeSheet.durationMs > spreadsheet.largeSheet.budgetMs || spreadsheet.cycle?.detected !== true || spreadsheet.binding?.redoValue !== 16) throw new Error('SS-ALL formula, binding or large-sheet evidence is incomplete.') +if (draft.objects?.sourceDependencies !== 5 || draft.operations?.trimmedLength !== 4 || draft.operations.offsetLength !== 8 || draft.persistence?.roundTrip !== true || draft.persistence.released !== true) throw new Error('DRAFT-BASE/DRAFT-OPS parametric operation evidence is incomplete.') +if (plot.series?.updatedValue !== 16 || plot.png?.validSignature !== true || plot.png.deterministic !== true || plot.png.width !== 640 || plot.png.height !== 360 || !plot.resources?.some((resource) => resource.mediaType === 'image/png' && resource.roundTrip && resource.released)) throw new Error('PLOT-ALL binding or real PNG evidence is incomplete.') +if (production.closure?.complete !== true || production.closure.documentVersion !== 8 || production.closure.reopenedComplete !== true || production.workflow?.edited.techdrawDimension !== 5 || production.workflow.exports.techdrawPdfValid !== true || production.persistence?.roundTrip !== true || production.persistence.released !== true) throw new Error('DOC-CLOSURE real create/edit/save/load/export evidence is incomplete.') + +console.log(JSON.stringify({ status: 'document-closure-pass', browser: production.browser.product, tasks: ['TD-ALL', 'SS-ALL', 'DRAFT-BASE', 'DRAFT-OPS', 'PLOT-ALL', 'DOC-CLOSURE'], techdraw: { views: techdraw.page.views, pdfBytes: techdraw.pdf.bytes, tolerances: techdraw.page.tolerances }, spreadsheet: spreadsheet.largeSheet, draft: draft.operations, plot: plot.png, production: { closure: production.closure, workflow: production.workflow } }, null, 2)) diff --git a/scripts/check-engineering-closure.mjs b/scripts/check-engineering-closure.mjs new file mode 100644 index 0000000..b7fed86 --- /dev/null +++ b/scripts/check-engineering-closure.mjs @@ -0,0 +1,18 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (name) => JSON.parse(await readFile(resolve(root, `config/${name}`), 'utf8')) +const [assembly, bim, mesh, surface, engineering] = await Promise.all([ + load('chrome-assembly-verification.json'), load('chrome-bim-verification.json'), load('chrome-mesh-verification.json'), load('chrome-surface-verification.json'), load('chrome-engineering-verification.json'), +]) +for (const [name, report] of Object.entries({ assembly, bim, mesh, surface, engineering })) { + if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true || !/Chrome/i.test(report.browser?.product || '')) throw new Error(`P08 ${name} Chrome evidence is not passing.`) + if (report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error(`P08 ${name} leaked ShapeHandles.`) +} +if (assembly.solver?.workerStatus !== 'solved' || assembly.solver.angleStatus !== 'solved' || assembly.tools?.motionFrames !== 5 || assembly.scale?.components !== 1000 || assembly.fcstd?.links !== 1 || assembly.fcstd.roundTrip !== true) throw new Error('ASM-CORE/ASM-TOOLS evidence is incomplete.') +if (bim.model?.sites !== 1 || bim.model.buildings !== 1 || bim.model.ifc4Schema !== 'IFC4' || bim.model.ifc2x3Schema !== 'IFC2X3' || bim.model.ifc4PropertySets < 1 || bim.model.ifc4Classifications !== 1) throw new Error('BIM-CORE/BIM-IFC evidence is incomplete.') +if (mesh.geometry?.selfIntersections !== 0 || mesh.repairs?.selfIntersectionFixture !== 1 || mesh.repairs.nonManifoldFixture !== 1 || mesh.repairs.holeFilledTriangles !== 1 || mesh.operations?.workerLodTriangles !== mesh.operations?.lodTriangles) throw new Error('MESH-CORE analysis/repair/Worker LOD evidence is incomplete.') +if (surface.model?.patches !== 5 || surface.model.fillKind !== 'bezier' || surface.model.offsetDistance !== 1.5 || surface.model.topoRefs !== 4 || surface.model.continuity !== 'C0') throw new Error('SURF-CORE modeling/TopoRef evidence is incomplete.') +if (engineering.integrity?.complete !== true || engineering.integrity.projectVersion !== 8 || engineering.integrity.reopenedComplete !== true || JSON.stringify(engineering.integrity.artifactVersions) !== JSON.stringify([2, 2, 2, 2]) || engineering.scale?.components !== 1000 || engineering.persistence?.roundTrip !== true || engineering.persistence.released !== true) throw new Error('ENG-CLOSURE mixed-project evidence is incomplete.') +console.log(JSON.stringify({ status: 'engineering-closure-pass', browser: engineering.browser.product, tasks: ['ASM-CORE', 'ASM-TOOLS', 'BIM-CORE', 'BIM-IFC', 'MESH-CORE', 'SURF-CORE', 'ENG-CLOSURE'], assembly: { solver: assembly.solver, scale: assembly.scale, fcstd: assembly.fcstd }, bim: bim.model, mesh: { geometry: mesh.geometry, operations: mesh.operations, repairs: mesh.repairs }, surface: surface.model, engineering: { integrity: engineering.integrity, workflow: engineering.workflow, scale: engineering.scale } }, null, 2)) diff --git a/scripts/check-facade-boundary.mjs b/scripts/check-facade-boundary.mjs index e347a0e..9fb8f13 100644 --- a/scripts/check-facade-boundary.mjs +++ b/scripts/check-facade-boundary.mjs @@ -5,7 +5,8 @@ const sourceRoot = new URL('../src/', import.meta.url) const forbidden = [ /from\s+["']three(?:\/|["'])/, /from\s+["']@types\/three/, /from\s+["']sqlite3?/, /from\s+["']@sqlite/, /from\s+["']opfs/, /SharedArrayBuffer/, /\bpostMessage\s*\(/, ] -const allowDirectRuntime = new Set(['facade/threeViewport.ts', 'facade/threeViewport.tsx', 'facade/persistenceWorker.ts', 'facade/projectStore.ts', 'facade/geometryWorker.ts', 'facade/nativeHistoryWorkerClient.ts', 'facade/nativeHistoryWorkerEntry.ts']) +const allowDirectRuntime = new Set(['facade/threeViewport.ts', 'facade/threeViewport.tsx', 'facade/persistenceWorker.ts', 'facade/projectStore.ts', 'facade/projectMigrationSeedWorker.ts', 'facade/geometryWorker.ts', 'facade/nativeHistoryWorkerClient.ts', 'facade/nativeHistoryWorkerEntry.ts', 'facade/planegcsWorkerClient.ts', 'facade/planegcsWorkerEntry.ts']) +const allowWorkerMessaging = new Set(['assemblySolverWorker.ts', 'meshLodWorker.ts', 'chromeAssemblyHarness.ts', 'chromeMeshHarness.ts', 'facade/camPipeline.ts']) async function walk(relative = '') { const directory = new URL(relative, sourceRoot) @@ -23,7 +24,10 @@ const violations = [] for (const file of await walk()) { if (allowDirectRuntime.has(file)) continue const content = await readFile(new URL(file, sourceRoot), 'utf8') - for (const pattern of forbidden) if (pattern.test(content)) violations.push(`${file}: ${pattern}`) + for (const pattern of forbidden) { + if (pattern.source === '\\bpostMessage\\s*\\(' && allowWorkerMessaging.has(file)) continue + if (pattern.test(content)) violations.push(`${file}: ${pattern}`) + } } if (violations.length) { diff --git a/scripts/check-fcstd-closure.mjs b/scripts/check-fcstd-closure.mjs new file mode 100644 index 0000000..03fe965 --- /dev/null +++ b/scripts/check-fcstd-closure.mjs @@ -0,0 +1,31 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawnSync } from 'node:child_process' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const native = await load('config/freecad-fcstd-roundtrip-verification.json') +const semantic = await load('config/chrome-fcstd-semantic-verification.json') +const chromeRoundTrip = await load('config/chrome-fcstd-roundtrip-verification.json') +const golden = await load('config/chrome-fcstd-golden-verification.json') +const secondary = await load('config/chrome-secondary-formats-verification.json') +const fail = (message) => { throw new Error(`FCStd closure: ${message}`) } + +if (native.status !== 'verified' || native.baselineId !== 'freecad-1.1.1' || native.freecadCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || native.scenarioCount !== 22 || native.scenarios?.length !== 22 || native.unknownDifferencesFail !== true || JSON.stringify(native.directions) !== JSON.stringify(['freecad-web-freecad', 'web-freecad-web'])) fail('native round-trip baseline or direction matrix is incomplete.') +if (native.scenarios.some((scenario) => scenario.status !== 'pass' || scenario.differences?.length !== 0 || scenario.domains?.length === 0 || scenario.evidence === undefined)) fail('native round-trip contains an unknown difference or missing evidence.') +const proxy = native.scenarios.find((scenario) => scenario.id === 'proxy-byte-preservation')?.evidence +if (!proxy || proxy.byteIdentical !== true || proxy.sourceArchiveBytes !== proxy.preservedArchiveBytes || proxy.sourceSha256 !== proxy.preservedSha256 || proxy.proxyObjectCount !== 8 || proxy.resavedProxyObjectCount !== 8) fail('unknown/proxy archive bytes were not preserved.') +const shape = native.scenarios.find((scenario) => scenario.id === 'locked-partdesign-shape')?.evidence +if (!shape || shape.solidCount !== 1 || shape.faceCount !== 23 || shape.elementMapCount !== 2 || shape.elementMapPostfixCount !== 63 || !(shape.stringHasherBytes > 0)) fail('BRep/ElementMap/StringHasher evidence is incomplete.') + +if (semantic.status !== 'pass' || semantic.objectNames?.length !== 4 || semantic.archiveBytes <= 0 || semantic.expression !== 'Spreadsheet.Width * 2' || semantic.link !== 'Source' || semantic.linkSub?.subElement !== 'Face1' || semantic.linkSubList?.length !== 2 || semantic.guiViews?.length !== 2 || semantic.shapeResource?.byteLength <= 0 || semantic.opfs?.markerRemoved !== true) fail('Chrome Expression/Link/TopoRef/Sketcher/GuiDocument semantic evidence is incomplete.') +if (chromeRoundTrip.status !== 'pass' || chromeRoundTrip.directions?.length !== 2 || chromeRoundTrip.scenarios?.some((scenario) => scenario.status !== 'pass' || scenario.differences?.length !== 0) || chromeRoundTrip.persistence?.roundTrip !== true || chromeRoundTrip.persistence?.released !== true || chromeRoundTrip.opfs?.markerRemoved !== true || chromeRoundTrip.afterRelease?.shapeCount !== 0 || chromeRoundTrip.afterRelease?.kernelReferenceCount !== 0) fail('Chrome bidirectional FCStd round-trip evidence is incomplete.') + +if (golden.status !== 'pass' || golden.scenarioCount !== 100 || golden.summary?.passed !== 100 || golden.summary?.unknownDifferences !== 0 || golden.summary?.formatRoundTrips?.step?.passed !== 100 || golden.summary?.formatRoundTrips?.iges?.passed !== 100 || golden.summary?.formatRoundTrips?.brep?.passed !== 100 || golden.summary?.formatRoundTrips?.step?.maximumVolumeDelta > 1e-6 || golden.summary?.formatRoundTrips?.iges?.maximumVolumeDelta > 1e-6 || golden.summary?.formatRoundTrips?.brep?.maximumVolumeDelta > 1e-6 || golden.afterRelease?.shapeCount !== 0 || golden.afterRelease?.kernelReferenceCount !== 0) fail('100-model Shape/STEP/IGES/BREP quality and tolerance golden is incomplete.') + +const formats = ['DXF', 'SVG', 'OBJ', 'PLY', 'STL', 'PDF', 'IFC', 'CSV'] +if (secondary.status !== 'pass' || secondary.formats?.descriptors !== formats.length || secondary.formats.records !== formats.length || JSON.stringify(secondary.formats.categories) !== JSON.stringify(['2d', 'bim', 'data', 'mesh']) || secondary.formats.matrix?.length !== formats.length || secondary.formats.matrix.some((entry) => !entry.imported || !entry.rejectedInvalid || !entry.byteExactRoundTrip || !entry.deterministic) || secondary.persistence?.roundTrip !== true || secondary.persistence?.released !== true || secondary.opfs?.markerRemoved !== true || secondary.afterRelease?.shapeCount !== 0 || secondary.afterRelease?.kernelReferenceCount !== 0) fail('secondary 2D/Mesh/BIM/data format matrix is incomplete.') + +const hardening = spawnSync('./npmw', ['run', 'check:fcstd-hardening'], { cwd: root, encoding: 'utf8', timeout: 120_000 }) +if (hardening.status !== 0) fail(`FC-11 hardening suite failed: ${(hardening.stdout || '') + (hardening.stderr || '')}`) +console.log(JSON.stringify({ status: 'fcstd-closure-pass', nativeScenarios: native.scenarioCount, semanticObjects: semantic.objectNames.length, goldenModels: golden.scenarioCount, formatMatrix: secondary.formats.matrix, chromeDirections: chromeRoundTrip.directions, hardening: 'pass' }, null, 2)) diff --git a/scripts/check-freecad-cam-path-oracle.mjs b/scripts/check-freecad-cam-path-oracle.mjs new file mode 100644 index 0000000..fcea2e6 --- /dev/null +++ b/scripts/check-freecad-cam-path-oracle.mjs @@ -0,0 +1,55 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-cam-path-oracle.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD CAM Path oracle check: ${message}`) } + +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1' || report.sourceCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('the locked FreeCAD baseline is invalid') +if (report.status !== 'verified-with-native-path-editable-subset' || report.boundary?.exactParityClaim !== false) fail('the report must retain the explicit non-exact Web codec boundary') +if (report.runtime?.guiUp !== true || !String(report.runtime?.pathModule).includes('install-desktop')) fail('the native GUI Path runtime evidence is missing') +if (report.profileAlgorithm?.fixture !== 'Mod/CAM/CAMTests/test_profile.fcstd' || report.profileAlgorithm?.pathPropertyType !== 'Path::PropertyPath') fail('the native Profile fixture contract is invalid') +if (report.profileAlgorithm?.cuttingCommandCount !== 20 || report.profileAlgorithm?.commandCount < 20 || report.profileAlgorithm?.normalizationToleranceMm !== 0.01 || !/^[0-9a-f]{64}$/.test(report.profileAlgorithm?.commandSha256 ?? '')) fail('the native Profile command evidence is incomplete') +if (report.profileAlgorithm?.firstCuttingCommand?.name !== 'G1' || report.profileAlgorithm?.lastCuttingCommand?.name !== 'G2') fail('the locked Profile cutting path endpoints changed') +if (report.profileAlgorithm?.variants?.length !== 2 || report.profileAlgorithm.variants[0]?.id !== 'outside-cw-tool-comp' || report.profileAlgorithm.variants[1]?.id !== 'outside-cw-no-comp' || report.profileAlgorithm.variants.some((variant) => variant.commandCount !== 32 || variant.cuttingCommandCount !== 20 || !/^[0-9a-f]{64}$/.test(variant.commandSha256 ?? ''))) fail('the Profile compensation variants are incomplete') + +const helix = report.helixAlgorithm +const expectedHelixDirections = { 'inside-conventional': ['CW', 'G2'], 'outside-climb': ['CW', 'G2'], 'inside-climb': ['CCW', 'G3'], 'outside-conventional': ['CCW', 'G3'] } +if (helix?.fixture !== 'Mod/CAM/CAMTests/test_holes00.fcstd' || helix?.pathPropertyType !== 'Path::PropertyPath' || helix?.toolDiameterMm !== 0.9 || helix?.baseSubElementCount !== 9 || helix?.scenarioCount !== 4) fail('the native Helix fixture contract is invalid') +if (helix.scenarios.some((scenario) => { + const expected = expectedHelixDirections[scenario.id] + return !expected || scenario.direction !== expected[0] || scenario.expectedDirection !== expected[0] || scenario.expectedArc !== expected[1] || JSON.stringify(scenario.arcNames) !== JSON.stringify([expected[1]]) || scenario.arcCommandCount !== 1260 || scenario.commandCount < 1400 || !/^[0-9a-f]{64}$/.test(scenario.commandSha256 ?? '') || scenario.commandHistogram?.[expected[1]] !== 1260 +})) fail('a native Helix direction scenario changed') + +const qt = report.qtDynamicOracle +if (qt?.guiUp !== true || qt?.workbench !== 'CAMWorkbench' || qt?.activeWorkbench !== 'CAMWorkbench' || !/^6\./.test(qt?.qtVersion ?? '')) fail('the Qt CAM workbench evidence is invalid') +if (qt?.camCommandCount < 50 || qt?.toolbarCount < 1 || qt?.menuCount < 1) fail('the live Qt CAM action/menu/toolbar surface is incomplete') +const required = ['CAM_Job', 'CAM_Profile', 'CAM_Pocket_Shape', 'CAM_Drilling', 'CAM_Adaptive', 'CAM_Pocket3D', 'CAM_Post', 'CAM_Simulator', 'CAM_Sanity', 'CAM_ToolBitDock'] +if (required.some((id) => !qt?.requiredCommands?.some((command) => command.id === id && command.emptySelection?.registered === true && command.selectedModel?.registered === true && command.selectedJob?.registered === true && command.selectedOperation?.registered === true && command.emptyDocument?.registered === true && command.selectedModel?.actionCount >= 1 && command.selectedModel?.iconPresent === true))) fail('a required live CAM QAction is missing') +if (!qt.requiredCommands.some((command) => command.selectionChangesEnabledState)) fail('the Qt oracle did not observe any selection-dependent CAM action state') +if (qt.taskLifecycleVerified !== true || !Array.isArray(qt.taskLifecycles) || qt.taskLifecycles.length < 3 || qt.taskLifecycles.some((item) => item.dialogOpened !== true || item.dialogClosed !== true || item.buttonClicked !== true || item.active.buttonBoxCount !== 1 || item.active.fieldCount < 10 || !item.active.buttonTexts.some((button) => button.text === 'OK') || !item.active.buttonTexts.some((button) => button.text === 'Cancel'))) fail('the live Qt CAM Task panel lifecycle evidence is incomplete') + +const fcstd = report.fcstdRoundTrip +if (![fcstd?.source, fcstd?.mutated, fcstd?.webTransparentPreservation?.archive].every((archive) => /^[0-9a-f]{64}$/.test(archive?.semanticSha256 ?? ''))) fail('deterministic FCStd semantic hashes are missing') +if (fcstd.source.semanticSha256 !== fcstd.webTransparentPreservation.archive.semanticSha256) fail('Web-preserved FCStd Path semantics changed') +if (fcstd?.sourceBeforeClose?.length !== 2 || fcstd?.sourceReopened?.length !== 2 || fcstd?.mutatedReopened?.length !== 2) fail('the native Path FCStd lifecycle is incomplete') +if (fcstd.sourceReopened.some((object) => object.commandCount !== 5 || object.pathPropertyType !== 'Path::PropertyPath')) fail('native Path objects did not survive the initial save/open') +if (fcstd.mutatedReopened.some((object) => object.commandCount !== 6 || !object.label.endsWith('Mutated') || !object.oracleTag.endsWith('-v2'))) fail('native Path objects did not survive mutate/save/open') +if (JSON.stringify(fcstd.webInspection?.objectTypes) !== JSON.stringify(['Path::Feature', 'Path::FeaturePython']) || fcstd.webInspection?.pathPropertyTypes?.some((type) => type !== 'Path::PropertyPath')) fail('Web inspection did not retain Path types') +if (fcstd.webInspection?.proxyReadOnly !== true || fcstd.webInspection?.compatibility?.blockedObjects < 1) fail('the Web FeaturePython security boundary was lost') +if (fcstd.webTransparentPreservation?.byteExact !== true || fcstd.webTransparentPreservation?.nativeReopenVerified !== true || fcstd.webTransparentPreservation?.objects?.some((object) => object.commandCount !== 5)) fail('native-Web-native transparent round-trip evidence is incomplete') +if (fcstd.webEditablePathProperty?.objectName !== 'NativePath' || fcstd.webEditablePathProperty?.sourceCommandCount !== 5 || fcstd.webEditablePathProperty?.editedCommandCount !== 6 || fcstd.webEditablePathProperty?.lastCommand?.name !== 'M3' || fcstd.webEditablePathProperty?.nativeReopenVerified !== true || fcstd.webEditablePathProperty?.featurePythonExecutionBlocked !== true) fail('the editable native Path::PropertyPath codec evidence is incomplete') +if (fcstd.webEditableFeaturePythonPathProperty?.objectName !== 'PythonPath' || fcstd.webEditableFeaturePythonPathProperty?.sourceCommandCount !== 5 || fcstd.webEditableFeaturePythonPathProperty?.editedCommandCount !== 6 || fcstd.webEditableFeaturePythonPathProperty?.lastCommand?.name !== 'M2' || fcstd.webEditableFeaturePythonPathProperty?.nativeReopenVerified !== true || fcstd.webEditableFeaturePythonPathProperty?.scriptExecution !== 'blocked' || fcstd.webEditableFeaturePythonPathProperty?.optInRequired !== true) fail('the safe opt-in FeaturePython Path::PropertyPath codec evidence is incomplete') +if (report.claims?.nativeProfilePathAlgorithm !== 'verified' || report.claims?.nativeHelixPathAlgorithm !== 'verified-four-direction-cases' || report.claims?.qtCamWorkbenchDynamicOracle !== 'verified' || report.claims?.nativePathFeatureFcstdSaveOpenMutateSaveOpen !== 'verified' || report.claims?.nativeWebNativePathFcstdTransparentRoundTrip !== 'verified' || report.claims?.webEditablePathPropertyCodec !== 'verified-native-path-feature') fail('claim states are inconsistent') + +console.log(JSON.stringify({ + status: report.status, + profileCommands: report.profileAlgorithm.commandCount, + cuttingCommands: report.profileAlgorithm.cuttingCommandCount, + helixScenarios: helix.scenarioCount, + camCommands: qt.camCommandCount, + qtVersion: qt.qtVersion, + nativeRoundTripObjects: fcstd.sourceReopened.length, + webTransparentRoundTrip: fcstd.webTransparentPreservation.nativeReopenVerified, + remainingGap: report.boundary.remainingGap, +}, null, 2)) diff --git a/scripts/check-freecad-composite-history-elementmap-oracle.mjs b/scripts/check-freecad-composite-history-elementmap-oracle.mjs new file mode 100644 index 0000000..2976676 --- /dev/null +++ b/scripts/check-freecad-composite-history-elementmap-oracle.mjs @@ -0,0 +1,77 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { elementMap2SemanticDigest, parseElementMap2, validateElementMap2, writeElementMap2 } from '../src/facade/elementMap2.ts' +import { validateNativeNamingEvidence } from '../src/facade/nativeNamingEvidence.ts' +import { migrateStringHasherSchema, parseStringHasherTable, validateStringHasherTable, writeStringHasherTable } from '../src/facade/stringHasher.ts' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-composite-history-elementmap-oracle.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1-composite-history-elementmap2' || report.freecadVersion !== '1.1.1' || report.status !== 'pass' || report.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') throw new Error('FreeCAD composite history ElementMap2 oracle baseline is invalid.') +if (report.summary?.cases !== 30 || report.summary?.passed !== 30 || report.summary?.failed !== 0 || !Array.isArray(report.cases) || report.cases.length !== 30) throw new Error('FreeCAD composite oracle must contain exactly 30 passing cases.') +let parsedResources = 0 +let parsedStringHasherResources = 0 +let namingEvidenceStages = 0 +let namingEvidenceMissing = 0 +let namingEvidenceBoundaryViolations = 0 +let nativeEvidenceValidatedStages = 0 +let nativeMappedNameStages = 0 +let nativeIndexedNameStages = 0 +let privateTokenEvidenceCompleteStages = 0 +let internalBuilderEvidenceStages = 0 +let internalBuilderEvidenceMissingStages = 0 +for (const fixture of report.cases) { + if (fixture.status !== 'pass' || !fixture.finalObject || !fixture.stages?.length) throw new Error(`FreeCAD composite fixture ${fixture.id} has no valid feature history stages.`) + if (fixture.roundtripNameDrift !== 0) throw new Error(`FreeCAD composite fixture ${fixture.id} changed mapped names after FreeCAD reopen.`) + const names = new Set() + let historyStages = 0 + for (const stage of fixture.stages) { + if (!stage.shape?.valid || !stage.names?.length) throw new Error(`FreeCAD composite fixture ${fixture.id}/${stage.name} has invalid topology.`) + namingEvidenceStages += 1 + if (!['final-shape-only', 'opaque-preserved', 'native-evidence', 'ambiguous', 'missing'].includes(stage.namingEvidenceStatus)) namingEvidenceMissing += 1 + if (stage.namingEvidenceStatus === 'opaque-preserved' && !fixture.stringHasherResource?.text) namingEvidenceBoundaryViolations += 1 + if (!stage.nativeEvidence || stage.nativeEvidence.stageId !== stage.name || stage.nativeEvidence.resultObjectId !== stage.name) throw new Error(`FreeCAD composite fixture ${fixture.id}/${stage.name} has incomplete native naming evidence identity.`) + if (stage.nativeEvidence.status !== stage.namingEvidenceStatus) throw new Error(`FreeCAD composite fixture ${fixture.id}/${stage.name} has inconsistent naming evidence status.`) + const nativeEvidence = { ...stage.nativeEvidence } + if (fixture.stringHasherResource?.text) nativeEvidence.stringHasher = migrateStringHasherSchema(parseStringHasherTable(fixture.stringHasherResource.text)) + const nativeValidation = validateNativeNamingEvidence(nativeEvidence) + if (!nativeValidation.valid) throw new Error(`FreeCAD native naming evidence validation failed for ${fixture.id}/${stage.name}: ${nativeValidation.issues[0].path}: ${nativeValidation.issues[0].message}`) + nativeEvidenceValidatedStages += 1 + if (stage.nativeEvidence.mappedNameApiEntries > 0) nativeMappedNameStages += 1 + if (stage.nativeEvidence.indexedNameApiEntries > 0) nativeIndexedNameStages += 1 + if (stage.nativeEvidence.privateTokenEvidenceComplete === true) { + if (stage.nativeEvidence.mappedNameApiEntries !== stage.nativeEvidence.mappedNames.length) throw new Error(`FreeCAD composite fixture ${fixture.id}/${stage.name} claims incomplete private token evidence as complete.`) + privateTokenEvidenceCompleteStages += 1 + } + if (stage.nativeEvidence.status === 'native-evidence' && stage.nativeEvidence.internalBuilderEvidence === true) internalBuilderEvidenceStages += 1 + else if (stage.nativeEvidence.status === 'native-evidence' && stage.nativeEvidence.internalBuilderEvidence !== true && /^(Part::(Fuse|Cut|Common|Extrusion|Revolution|Loft|Sweep|Fillet|Chamfer)|PartDesign::(Pad|Pocket|Revolution|Groove|AdditiveLoft|SubtractiveLoft|AdditivePipe|SubtractivePipe|Fillet|Chamfer|Draft|Thickness|Mirrored|MultiTransform|LinearPattern|PolarPattern|Hole))$/.test(stage.typeId || '')) internalBuilderEvidenceMissingStages += 1 + const stageHasHistory = stage.names.some((entry) => Array.isArray(entry.history) && entry.history.length > 0) + if (stageHasHistory) historyStages += 1 + for (const entry of stage.names) { + if (names.has(`${stage.name}:${entry.name}`)) throw new Error(`Duplicate ElementMap name ${fixture.id}/${stage.name}/${entry.name}.`) + names.add(`${stage.name}:${entry.name}`) + } + } + if (historyStages === 0) throw new Error(`Missing FreeCAD getElementHistory chain for ${fixture.id}.`) + if (fixture.stringHasherResource?.text !== null && fixture.stringHasherResource?.text !== undefined) { + const table = migrateStringHasherSchema(parseStringHasherTable(fixture.stringHasherResource.text)) + const validation = validateStringHasherTable(table) + if (!validation.valid) throw new Error(`StringHasher semantic validation failed for ${fixture.id}: ${validation.issues[0].path}: ${validation.issues[0].message}`) + const reparsed = migrateStringHasherSchema(parseStringHasherTable(writeStringHasherTable(table))) + if (JSON.stringify(reparsed) !== JSON.stringify(table)) throw new Error(`StringHasher semantic roundtrip changed native naming evidence for ${fixture.id}.`) + parsedStringHasherResources += 1 + } + for (const [path, resource] of Object.entries(fixture.elementMapResources || {})) { + const document = parseElementMap2(resource.text) + const validation = validateElementMap2(document) + if (!validation.valid) throw new Error(`ElementMap2 semantic validation failed for ${fixture.id}/${path}: ${validation.issues[0].path}: ${validation.issues[0].message}`) + const canonical = writeElementMap2(document) + const reparsed = parseElementMap2(canonical) + if (reparsed.maps.length !== document.maps.length || reparsed.postfixes.length !== document.postfixes.length) throw new Error(`ElementMap2 schema roundtrip changed counts for ${fixture.id}/${path}.`) + if (elementMap2SemanticDigest(reparsed) !== elementMap2SemanticDigest(document)) throw new Error(`ElementMap2 semantic roundtrip changed native naming history for ${fixture.id}/${path}.`) + parsedResources += 1 + } +} +if (parsedResources === 0) throw new Error('FreeCAD composite oracle did not capture any ElementMap2 resources.') +if (nativeIndexedNameStages !== namingEvidenceStages) throw new Error(`FreeCAD composite oracle must retain direct indexed-name evidence for every stage, found ${nativeIndexedNameStages}/${namingEvidenceStages}.`) +if (namingEvidenceMissing !== 0 || namingEvidenceBoundaryViolations !== 0) throw new Error(`FreeCAD naming evidence boundary is incomplete: missing=${namingEvidenceMissing}, violations=${namingEvidenceBoundaryViolations}.`) +console.log(JSON.stringify({ status: 'freecad-composite-history-elementmap-pass', cases: report.summary.cases, parsedResources, parsedStringHasherResources, namingEvidenceStages, nativeEvidenceValidatedStages, nativeIndexedNameStages, nativeMappedNameStages, indexedOnlyStages: nativeIndexedNameStages - nativeMappedNameStages, privateTokenEvidenceCompleteStages, namingEvidenceMissing, namingEvidenceBoundaryViolations, internalBuilderEvidenceStages, internalBuilderEvidenceMissingStages }, null, 2)) diff --git a/scripts/check-freecad-desktop-oracle.mjs b/scripts/check-freecad-desktop-oracle.mjs new file mode 100644 index 0000000..6fce991 --- /dev/null +++ b/scripts/check-freecad-desktop-oracle.mjs @@ -0,0 +1,92 @@ +import { createHash } from 'node:crypto' +import { access, readFile, stat } from 'node:fs/promises' +import { execFileSync } from 'node:child_process' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const readJson = async (relative) => JSON.parse(await readFile(resolve(root, relative), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD desktop oracle: ${message}`) } +const config = await readJson('config/freecad-desktop-oracle.json') +const toolchain = await readJson('config/freecad-toolchain.json') +const source = resolve(root, '.cache/freecad/FreeCAD') +const build = resolve(root, config.buildDirectory) +const executable = resolve(root, `${config.installDirectory}/bin/FreeCAD`) +const probeReport = resolve(root, '.cache/freecad/reference-desktop.json') + +const sourceRevision = execFileSync('git', ['-C', source, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (sourceRevision !== toolchain.source.commit) fail(`source revision ${sourceRevision} does not match ${toolchain.source.commit}.`) + +const cache = await readFile(resolve(build, 'CMakeCache.txt'), 'utf8').catch(() => fail('CMakeCache.txt is missing; configure the desktop profile first.')) +const cacheValue = (name) => { + const line = cache.split(/\r?\n/).find((entry) => entry.startsWith(`${name}:`)) + return line?.slice(line.indexOf('=') + 1) +} +const expectedOn = { + AddonManager: 'BUILD_ADDONMGR', Assembly: 'BUILD_ASSEMBLY', BIM: 'BUILD_BIM', CAM: 'BUILD_CAM', + Draft: 'BUILD_DRAFT', Fem: 'BUILD_FEM', Help: 'BUILD_HELP', Idf: 'BUILD_IDF', Import: 'BUILD_IMPORT', + Inspection: 'BUILD_INSPECTION', Material: 'BUILD_MATERIAL', Measure: 'BUILD_MEASURE', Mesh: 'BUILD_MESH', + MeshPart: 'BUILD_MESH_PART', OpenSCAD: 'BUILD_OPENSCAD', Part: 'BUILD_PART', PartDesign: 'BUILD_PART_DESIGN', + Plot: 'BUILD_PLOT', Points: 'BUILD_POINTS', ReverseEngineering: 'BUILD_REVERSEENGINEERING', Robot: 'BUILD_ROBOT', + Show: 'BUILD_SHOW', Sketcher: 'BUILD_SKETCHER', Spreadsheet: 'BUILD_SPREADSHEET', Start: 'BUILD_START', + Surface: 'BUILD_SURFACE', TechDraw: 'BUILD_TECHDRAW', Test: 'BUILD_TEST', Tux: 'BUILD_TUX', Web: 'BUILD_WEB', +} +const expectedOff = { + Cloud: 'BUILD_CLOUD', JtReader: 'BUILD_JTREADER', Sandbox: 'BUILD_SANDBOX', +} +if (cacheValue('BUILD_GUI') !== 'ON') fail('BUILD_GUI is not ON.') +for (const [module, key] of Object.entries(expectedOn)) if (cacheValue(key) !== 'ON') fail(`${module} requires ${key}=ON; got ${cacheValue(key) ?? ''}.`) +for (const [module, key] of Object.entries(expectedOff)) if (cacheValue(key) !== 'OFF') fail(`${module} requires ${key}=OFF; got ${cacheValue(key) ?? ''}.`) + +await access(executable).catch(() => fail(`installed executable is missing: ${executable}`)) +const versionOutput = execFileSync(executable, ['--console', '--version'], { + cwd: root, + encoding: 'utf8', + env: { + ...process.env, + PYTHONPATH: `${resolve(root, config.sysrootDirectory, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(root, config.sysrootDirectory, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + }, +}).trim() +if (!versionOutput.includes('FreeCAD 1.1.1')) fail(`version output does not report FreeCAD 1.1.1: ${versionOutput}`) +const bytes = await readFile(executable) +const artifact = { + path: `${config.installDirectory}/bin/FreeCAD`, + sizeBytes: (await stat(executable)).size, + sha256: createHash('sha256').update(bytes).digest('hex'), + reportedVersion: versionOutput.split(/\r?\n/)[0], +} +if (config.artifact?.sha256 && config.artifact.sha256 !== artifact.sha256) fail(`artifact checksum mismatch: expected ${config.artifact.sha256}, got ${artifact.sha256}.`) + +const report = await readJson('.cache/freecad/reference-desktop.json').catch(() => null) +if (!report) fail('34-module desktop probe report is missing; run probe:freecad-reference with FREECAD_ORACLE_PROFILE=desktop.') +if (report.baselineId !== config.baselineId || report.freecadVersion !== '1.1.1' || report.guiUp !== true || report.moduleCount !== 34 || report.modules?.length !== 34) { + fail('desktop probe report is not a GUI-up 34-module FreeCAD 1.1.1 report.') +} +const invalid = report.modules.filter((module) => !['compiled-importable', 'compiled-import-failure', 'gui-only-unprobeable', 'not-built'].includes(module.runtimeStatus)) +if (invalid.length) fail(`probe contains invalid module statuses: ${invalid.map((module) => module.name).join(', ')}`) +const expectedObjects = ['Part::Box', 'Part::Cylinder', 'Part::Sphere', 'Part::Cone', 'Part::Feature', 'PartDesign::Feature', 'Sketcher::SketchObject'] +if (!Array.isArray(report.objects) || report.objects.length !== expectedObjects.length) fail('desktop probe must include the seven core object fixtures.') +for (const typeId of expectedObjects) { + const object = report.objects.find((candidate) => candidate.runtimeTypeId === typeId && candidate.typeId === typeId) + if (!object?.available || !Array.isArray(object.properties)) fail(`runtime object fixture ${typeId} is missing or unavailable.`) +} +const propertyFlags = report.objects.flatMap((object) => object.properties || []).map((property) => property.status || []) +if (!propertyFlags.some((status) => status.includes('Hidden')) || !propertyFlags.some((status) => status.includes('Output'))) { + fail('runtime property fixtures must include Hidden and Output status flags.') +} + +console.log(JSON.stringify({ + status: 'freecad-desktop-oracle-pass', + baselineId: config.baselineId, + sourceRevision, + buildDirectory: config.buildDirectory, + installDirectory: config.installDirectory, + artifact, + probe: { + path: '.cache/freecad/reference-desktop.json', + moduleCount: report.moduleCount, + guiUp: report.guiUp, + moduleStatusSummary: report.moduleStatusSummary, + objectFixtureCount: report.objects.length, + }, +}, null, 2)) diff --git a/scripts/check-freecad-entrypoint-inventory.mjs b/scripts/check-freecad-entrypoint-inventory.mjs new file mode 100644 index 0000000..b20c385 --- /dev/null +++ b/scripts/check-freecad-entrypoint-inventory.mjs @@ -0,0 +1,27 @@ +import { access, readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const inventory = JSON.parse(await readFile(resolve(root, 'config/freecad-entrypoint-inventory.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD entrypoint inventory: ${message}`) } +if (inventory.schemaVersion !== 1 || inventory.baseline?.freecadVersion !== '1.1.1' || inventory.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('baseline mismatch.') +const statuses = new Set(['exact', 'compatible', 'read-only', 'experimental', 'unsupported']) +const strategies = new Set(['native-parser', 'occt-worker', 'worker-adapter', 'sanitized-parser', 'server-export', 'sandboxed-adapter', 'proxy-resource', 'facade-parser', 'sandboxed-interpreter', 'blocked-resource', 'signed-catalog', 'namespaced-settings', 'browser-clipboard-permission']) +const validate = (entries, label) => { + if (!Array.isArray(entries) || entries.length === 0) fail(`${label} must not be empty.`) + const ids = new Set() + for (const entry of entries) { + if (!entry.id || ids.has(entry.id) || !Array.isArray(entry.modules) || entry.modules.length === 0 || !Array.isArray(entry.sourceEvidence) || entry.sourceEvidence.length === 0) fail(`${label} contains an incomplete or duplicate entry.`) + ids.add(entry.id) + if (!strategies.has(entry.webStrategy) || !statuses.has(entry.compatibility)) fail(`${entry.id} lacks a declared Web strategy/compatibility level.`) + for (const evidence of entry.sourceEvidence) if (evidence.startsWith('src/') && !evidence.includes('PreferencePages')) { + access(resolve(root, '.cache/freecad/FreeCAD', evidence)).catch(() => fail(`${entry.id} source evidence is unavailable: ${evidence}`)) + } + } +} +validate(inventory.formats, 'formats') +validate(inventory.entrypoints, 'entrypoints') +if (!Array.isArray(inventory.moduleCoverage) || inventory.moduleCoverage.length !== 34) fail('module coverage must enumerate all 34 modules.') +if (inventory.moduleCoverage.some((entry) => !entry.name || !entry.sourcePath || !['entrypoint-covered', 'scope-only'].includes(entry.status))) fail('module coverage contains an invalid entry.') +if (inventory.policy?.untrustedContent !== 'never-execute' || inventory.policy?.unknownOrUnlistedEntries !== 'fail-inventory-check') fail('unsafe entrypoint policy is missing.') +console.log(JSON.stringify({ status: 'entrypoint-inventory-pass', formatCount: inventory.formats.length, entrypointCount: inventory.entrypoints.length, moduleCount: inventory.moduleCoverage.length, unsupportedCount: [...inventory.formats, ...inventory.entrypoints].filter((entry) => entry.compatibility === 'unsupported').length }, null, 2)) diff --git a/scripts/check-freecad-exact-history-elementmap-gate.mjs b/scripts/check-freecad-exact-history-elementmap-gate.mjs new file mode 100644 index 0000000..2afedbf --- /dev/null +++ b/scripts/check-freecad-exact-history-elementmap-gate.mjs @@ -0,0 +1,100 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createElementMap2NameToken, elementMap2NameTokenToReference, elementMap2SemanticDigest, parseElementMap2, validateElementMap2, writeElementMap2 } from '../src/facade/elementMap2.ts' +import { migrateStringHasherSchema, parseStringHasherTable, validateElementMap2StringHasherEvidence, validateStringHasherTable, writeStringHasherTable } from '../src/facade/stringHasher.ts' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const gate = await load('config/freecad-exact-history-elementmap-gate.json') +const oracle = await load('config/freecad-composite-history-elementmap-oracle.json') +const roundtrip = await load('config/freecad-fcstd-roundtrip-verification.json') +if (oracle.baselineId !== gate.baselineId || oracle.freecadVersion !== gate.requiredFreecadVersion || oracle.gitCommit !== gate.requiredFreecadCommit || oracle.status !== 'pass' || oracle.summary?.cases !== gate.requiredCases || oracle.summary?.passed !== gate.requiredCases) throw new Error('Exact history/ElementMap2 gate baseline is not the locked FreeCAD 1.1.1 30-case report.') +let wrongBindings = 0 +let unexplainedRelations = 0 +let roundtripNameDrift = 0 +let elementMap2ParseFailures = 0 +let elementMap2SemanticFailures = 0 +let elementMap2TokenWriterFailures = 0 +let stringHasherResources = 0 +let stringHasherParseFailures = 0 +let stringHasherSemanticFailures = 0 +let stringHasherEvidenceFailures = 0 +let namingEvidenceMissing = 0 +let namingEvidenceBoundaryViolations = 0 +let nativeEvidenceStages = 0 +let nativeMappedNameStages = 0 +let nativeIndexedNameStages = 0 +let privateTokenEvidenceCompleteStages = 0 +let internalBuilderEvidenceStages = 0 +let internalBuilderEvidenceMissingStages = 0 +const builderStageType = /^(Part::(Fuse|Cut|Common|Extrusion|Revolution|Loft|Sweep|Fillet|Chamfer)|PartDesign::(Pad|Pocket|Revolution|Groove|AdditiveLoft|SubtractiveLoft|AdditivePipe|SubtractivePipe|Fillet|Chamfer|Draft|Thickness|Mirrored|MultiTransform|LinearPattern|PolarPattern|Hole))$/ +let resources = 0 +for (const fixture of oracle.cases) { + if (fixture.roundtripNameDrift !== 0) roundtripNameDrift += 1 + const knownObjects = new Set(fixture.stages.map((stage) => stage.name)) + for (const stage of fixture.stages) { + if (!['final-shape-only', 'opaque-preserved', 'native-evidence', 'ambiguous', 'missing'].includes(stage.namingEvidenceStatus)) namingEvidenceMissing += 1 + if (stage.namingEvidenceStatus === 'opaque-preserved' && !fixture.stringHasherResource?.text) namingEvidenceBoundaryViolations += 1 + if (stage.namingEvidenceStatus === 'native-evidence') nativeEvidenceStages += 1 + if (stage.nativeEvidence?.mappedNameApiEntries > 0) nativeMappedNameStages += 1 + if (stage.nativeEvidence?.indexedNameApiEntries > 0) nativeIndexedNameStages += 1 + if (stage.nativeEvidence?.privateTokenEvidenceComplete === true) privateTokenEvidenceCompleteStages += 1 + if (builderStageType.test(stage.typeId || '')) { + if (stage.nativeEvidence?.internalBuilderEvidence === true) internalBuilderEvidenceStages += 1 + else internalBuilderEvidenceMissingStages += 1 + } + const names = new Set() + for (const entry of stage.names) { + if (names.has(entry.name)) wrongBindings += 1 + names.add(entry.name) + for (const relation of entry.history || []) { + if (!knownObjects.has(relation.object) || typeof relation.mappedName !== 'string') unexplainedRelations += 1 + } + } + } + let stringHasherTable + if (fixture.stringHasherResource?.text !== null && fixture.stringHasherResource?.text !== undefined) { + try { + stringHasherTable = migrateStringHasherSchema(parseStringHasherTable(fixture.stringHasherResource.text)) + const validation = validateStringHasherTable(stringHasherTable) + if (!validation.valid) stringHasherParseFailures += 1 + else { + stringHasherResources += 1 + const reparsed = migrateStringHasherSchema(parseStringHasherTable(writeStringHasherTable(stringHasherTable))) + if (JSON.stringify(reparsed) !== JSON.stringify(stringHasherTable)) stringHasherSemanticFailures += 1 + } + } catch { + stringHasherParseFailures += 1 + stringHasherTable = undefined + } + } + for (const resource of Object.values(fixture.elementMapResources || {})) { + resources += 1 + try { + const document = parseElementMap2(resource.text) + const validation = validateElementMap2(document) + if (!validation.valid) elementMap2SemanticFailures += 1 + const hasStringHasherEvidence = document.maps.some((map) => map.sections.some((section) => section.children.some((child) => child.stringIds.length > 0) || section.names.some((name) => name.tokens.some((token) => token.suffix.length > 1 || token.marker === '$')))) + if (!stringHasherTable && hasStringHasherEvidence) stringHasherEvidenceFailures += 1 + if (stringHasherTable) stringHasherEvidenceFailures += validateElementMap2StringHasherEvidence(document, stringHasherTable).length + for (const map of document.maps) for (const section of map.sections) for (const entry of section.names) for (const token of entry.tokens) { + try { + const evidence = elementMap2NameTokenToReference(token, document.postfixes) + if (createElementMap2NameToken(evidence, document.postfixes).raw !== token.raw) elementMap2TokenWriterFailures += 1 + } catch { + elementMap2TokenWriterFailures += 1 + } + } + const reparsed = parseElementMap2(writeElementMap2(document)) + if (reparsed.maps.length !== document.maps.length || reparsed.postfixes.length !== document.postfixes.length) elementMap2ParseFailures += 1 + if (elementMap2SemanticDigest(reparsed) !== elementMap2SemanticDigest(document)) elementMap2SemanticFailures += 1 + } catch { + elementMap2ParseFailures += 1 + } + } +} +for (const scenario of roundtrip.scenarios || []) { + if (scenario.status !== 'pass' || (scenario.differences || []).length !== 0) roundtripNameDrift += 1 +} +if (roundtrip.status !== 'verified' || wrongBindings !== gate.requirements.wrongBindings || unexplainedRelations !== gate.requirements.unexplainedRelations || roundtripNameDrift !== gate.requirements.roundtripNameDrift || elementMap2ParseFailures !== gate.requirements.elementMap2ParseFailures || elementMap2SemanticFailures !== gate.requirements.elementMap2SemanticFailures || elementMap2TokenWriterFailures !== gate.requirements.elementMap2TokenWriterFailures || stringHasherParseFailures !== gate.requirements.stringHasherParseFailures || stringHasherSemanticFailures !== gate.requirements.stringHasherSemanticFailures || stringHasherEvidenceFailures !== gate.requirements.stringHasherEvidenceFailures || namingEvidenceMissing !== gate.requirements.namingEvidenceMissing || namingEvidenceBoundaryViolations !== gate.requirements.namingEvidenceBoundaryViolations) throw new Error(`Exact gate failed: wrongBindings=${wrongBindings}, unexplainedRelations=${unexplainedRelations}, roundtripNameDrift=${roundtripNameDrift}, elementMap2ParseFailures=${elementMap2ParseFailures}, elementMap2SemanticFailures=${elementMap2SemanticFailures}, elementMap2TokenWriterFailures=${elementMap2TokenWriterFailures}, stringHasherParseFailures=${stringHasherParseFailures}, stringHasherSemanticFailures=${stringHasherSemanticFailures}, stringHasherEvidenceFailures=${stringHasherEvidenceFailures}, namingEvidenceMissing=${namingEvidenceMissing}, namingEvidenceBoundaryViolations=${namingEvidenceBoundaryViolations}.`) +console.log(JSON.stringify({ status: 'freecad-exact-history-elementmap-gate-pass', exactPromotionReady: false, cases: oracle.summary.cases, resources, stringHasherResources, nativeEvidenceStages, nativeIndexedNameStages, nativeMappedNameStages, indexedOnlyStages: nativeIndexedNameStages - nativeMappedNameStages, privateTokenEvidenceCompleteStages, internalBuilderEvidenceStages, internalBuilderEvidenceMissingStages, wrongBindings, unexplainedRelations, roundtripNameDrift, elementMap2ParseFailures, elementMap2SemanticFailures, elementMap2TokenWriterFailures, stringHasherParseFailures, stringHasherSemanticFailures, stringHasherEvidenceFailures, namingEvidenceMissing, namingEvidenceBoundaryViolations }, null, 2)) diff --git a/scripts/check-freecad-execution-plan.mjs b/scripts/check-freecad-execution-plan.mjs new file mode 100644 index 0000000..2fd5b5f --- /dev/null +++ b/scripts/check-freecad-execution-plan.mjs @@ -0,0 +1,80 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const plan = JSON.parse(await readFile(resolve(root, 'config/freecad-execution-plan.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD execution plan: ${message}`) } +const requireText = (value, label) => { if (typeof value !== 'string' || !value.trim()) fail(`${label} must be a non-empty string.`) } +const requireTextList = (value, label) => { + if (!Array.isArray(value) || value.length === 0) fail(`${label} must be a non-empty array.`) + value.forEach((entry, index) => requireText(entry, `${label}[${index}]`)) +} +const uniqueIds = (items, label) => { + if (!Array.isArray(items) || items.length === 0) fail(`${label} must be a non-empty array.`) + const ids = new Set() + for (const item of items) { + requireText(item?.id, `${label} id`) + if (ids.has(item.id)) fail(`duplicate ${label} id '${item.id}'.`) + ids.add(item.id) + } + return ids +} + +if (plan.schemaVersion !== 1) fail(`unsupported schemaVersion '${plan.schemaVersion}'.`) +if (plan.baseline?.freecadVersion !== '1.1.1' || plan.baseline?.freecadCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('baseline does not match the locked FreeCAD reference.') + +const laneIds = uniqueIds(plan.lanes, 'lane') +const gateIds = uniqueIds(plan.gates, 'gate') +const programIds = uniqueIds(plan.programs, 'program') +const requiredPrograms = Array.from({ length: 10 }, (_, index) => `P${String(index + 1).padStart(2, '0')}`) +if (requiredPrograms.some((id) => !programIds.has(id)) || plan.programs.length !== requiredPrograms.length) fail('programs must contain exactly P01 through P10.') + +const taskById = new Map() +const taskProgram = new Map() +const statuses = new Set(['pending', 'in_progress', 'completed', 'blocked']) +for (const program of plan.programs) { + requireText(program.title, `${program.id}.title`) + if (!laneIds.has(program.ownerLane)) fail(`${program.id} uses unknown owner lane '${program.ownerLane}'.`) + if (!gateIds.has(program.gate)) fail(`${program.id} uses unknown gate '${program.gate}'.`) + if (!Array.isArray(program.dependencies)) fail(`${program.id}.dependencies must be an array.`) + for (const dependency of program.dependencies) if (!programIds.has(dependency)) fail(`${program.id} depends on unknown program '${dependency}'.`) + if (!Array.isArray(program.tasks) || program.tasks.length === 0) fail(`${program.id} must contain tasks.`) + for (const task of program.tasks) { + requireText(task.id, `${program.id} task id`) + if (taskById.has(task.id)) fail(`duplicate task id '${task.id}'.`) + requireText(task.title, `${task.id}.title`) + if (!statuses.has(task.status)) fail(`${task.id} has invalid status '${task.status}'.`) + if (!Array.isArray(task.dependencies)) fail(`${task.id}.dependencies must be an array.`) + requireTextList(task.deliverables, `${task.id}.deliverables`) + requireTextList(task.acceptance, `${task.id}.acceptance`) + taskById.set(task.id, task) + taskProgram.set(task.id, program.id) + } +} + +for (const task of taskById.values()) for (const dependency of task.dependencies) if (!taskById.has(dependency)) fail(`${task.id} depends on unknown task '${dependency}'.`) + +const visitState = new Map() +const visit = (taskId, path = []) => { + const state = visitState.get(taskId) + if (state === 'done') return + if (state === 'visiting') fail(`task dependency cycle: ${[...path, taskId].join(' -> ')}.`) + visitState.set(taskId, 'visiting') + for (const dependency of taskById.get(taskId).dependencies) visit(dependency, [...path, taskId]) + visitState.set(taskId, 'done') +} +for (const taskId of taskById.keys()) visit(taskId) + +for (const gate of plan.gates) { + requireText(gate.title, `${gate.id}.title`) + requireTextList(gate.requiredPrograms, `${gate.id}.requiredPrograms`) + for (const programId of gate.requiredPrograms) if (!programIds.has(programId)) fail(`${gate.id} references unknown program '${programId}'.`) +} +for (const program of plan.programs) { + const gate = plan.gates.find((candidate) => candidate.id === program.gate) + if (!gate.requiredPrograms.includes(program.id)) fail(`${program.gate} does not require ${program.id}.`) +} + +requireTextList(plan.rules, 'rules') +const statusCounts = Object.fromEntries([...statuses].map((status) => [status, [...taskById.values()].filter((task) => task.status === status).length])) +console.log(JSON.stringify({ status: 'execution-plan-pass', programs: plan.programs.length, lanes: plan.lanes.length, gates: plan.gates.length, tasks: taskById.size, statusCounts, taskPrograms: new Set(taskProgram.values()).size }, null, 2)) diff --git a/scripts/check-freecad-fcstd-roundtrip-verification.mjs b/scripts/check-freecad-fcstd-roundtrip-verification.mjs new file mode 100644 index 0000000..2d30811 --- /dev/null +++ b/scripts/check-freecad-fcstd-roundtrip-verification.mjs @@ -0,0 +1,75 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-fcstd-roundtrip-verification.json'), 'utf8')) +const fail = (message) => { throw new Error(`FCStd round-trip verification: ${message}`) } + +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1' || report.freecadCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || report.bitbybitVersion !== '1.1.1') fail('baseline is not locked to FreeCAD/Bitbybit 1.1.1.') +if (report.unknownDifferencesFail !== true || report.status !== 'verified') fail('unknown differences are not release-blocking.') +if (JSON.stringify(report.directions) !== '["freecad-web-freecad","web-freecad-web"]') fail('both round-trip directions are required.') +if (!Array.isArray(report.scenarios) || report.scenarioCount !== 22 || report.scenarios.length !== report.scenarioCount) fail('exactly 22 native scenarios are required.') + +const expectedIds = new Set([ + 'proxy-byte-preservation', + 'locked-partdesign-shape', + 'part-box', 'part-cylinder', 'part-sphere', 'part-ellipsoid', 'part-cone', 'part-torus', 'part-prism', 'part-wedge', 'part-fuse', 'part-cut', 'part-common', + 'part-sphere-trim', + 'part-extrusion', 'part-revolution', + 'sketch-core-external-attachment', 'sketch-face-projection', 'sketch-external-modes', + 'sketch-snells-law', 'sketch-bspline-weight', 'sketch-internal-alignment', +]) +const seen = new Set() +for (const scenario of report.scenarios) { + if (!expectedIds.has(scenario.id) || seen.has(scenario.id)) fail(`unexpected or duplicate scenario '${scenario.id}'.`) + seen.add(scenario.id) + const expectedStages = scenario.id === 'proxy-byte-preservation' + ? ['freecad-source', 'web-inspect', 'web-byte-preserving-write', 'byte-compare', 'freecad-open', 'freecad-resave', 'web-inspect-resaved'] + : scenario.direction === 'freecad-web-freecad' + ? ['freecad-source', 'web-inspect', 'web-write', 'freecad-open', 'freecad-resave', 'web-inspect-resaved'] + : scenario.direction === 'web-freecad-web' + ? ['web-model', 'web-write', 'freecad-open', 'freecad-recompute', 'freecad-resave', 'web-inspect'] + : undefined + if (!expectedStages || JSON.stringify(scenario.stages) !== JSON.stringify(expectedStages)) fail(`${scenario.id} has an incomplete execution path.`) + if (scenario.freecadVersion !== '1.1.1' || scenario.status !== 'pass' || !Array.isArray(scenario.differences) || scenario.differences.length !== 0) fail(`${scenario.id} has an unclassified difference.`) + if (!Array.isArray(scenario.domains) || scenario.domains.length === 0 || !scenario.evidence || typeof scenario.evidence !== 'object') fail(`${scenario.id} has no semantic evidence.`) +} +if (seen.size !== expectedIds.size) fail('one or more required scenarios are missing.') + +const byId = Object.fromEntries(report.scenarios.map((scenario) => [scenario.id, scenario])) +const proxy = byId['proxy-byte-preservation'].evidence +if (proxy.sourceArchiveBytes <= 0 || proxy.sourceArchiveBytes !== proxy.preservedArchiveBytes || proxy.sourceSha256 !== proxy.preservedSha256 || !/^[a-f0-9]{64}$/.test(proxy.sourceSha256) || proxy.byteIdentical !== true || proxy.proxyObjectCount !== 8 || proxy.blockedObjectCount !== 0 || proxy.resavedObjectCount !== 17 || proxy.resavedProxyObjectCount !== 8 || proxy.resavedShapeValid !== true || JSON.stringify(proxy.unknownTypeIds) !== '["App::Line","App::Origin","App::Plane","App::Point"]') fail('FreeCAD-origin proxy byte-preservation evidence is incomplete.') +const sourceShape = byId['locked-partdesign-shape'].evidence +if (sourceShape.solidCount !== 1 || sourceShape.faceCount !== 23 || sourceShape.elementMapPostfixCount !== 63 || sourceShape.elementMapCount !== 2 || sourceShape.stringHasherBytes <= 0) fail('FreeCAD-origin Shape/ElementMap evidence is incomplete.') +for (const id of ['part-box', 'part-cylinder', 'part-sphere', 'part-ellipsoid', 'part-cone', 'part-torus', 'part-prism', 'part-wedge', 'part-fuse', 'part-cut', 'part-common']) { + const evidence = byId[id].evidence + if (evidence.solidCount !== 1 || !Number.isFinite(evidence.volume) || evidence.volume <= 0 || evidence.propertyCount <= 0 || evidence.resavedShapeAvailable !== true) fail(`${id} did not preserve parameters and a valid Shape resource.`) +} +if (byId['part-fuse'].evidence.refine !== false || byId['part-cut'].evidence.refine !== false || byId['part-common'].evidence.refine !== true) fail('Part Boolean Refine values did not round-trip through FreeCAD.') +const torus = byId['part-torus'].evidence +const torusBound = 12.988706403508727 +if (!Number.isFinite(torus.volume) || Math.abs(torus.volume - 60 * Math.PI ** 2) > 1e-8 || torus.propertyCount !== 5 || !torus.boundingBox || torus.boundingBox.min.some((value, index) => Math.abs(value - [-torusBound, -torusBound, -2][index]) > 1e-8) || torus.boundingBox.max.some((value, index) => Math.abs(value - [torusBound, torusBound, 2][index]) > 1e-8)) fail('native Part::Torus evidence is incomplete.') +const prism = byId['part-prism'].evidence +if (prism.typeId !== 'Part::Prism' || prism.solidCount !== 1 || prism.faceCount !== 8 || !Number.isFinite(prism.volume) || Math.abs(prism.volume - 60 * Math.sqrt(3)) > 1e-8 || prism.propertyCount !== 5 || JSON.stringify(prism.properties) !== '{"Circumradius":2,"FirstAngle":10,"Height":10,"Polygon":6,"SecondAngle":-5}' || !prism.boundingBox || prism.boundingBox.min.some((value, index) => Math.abs(value - [-2, -2.6069374428281185, 0][index]) > 1e-8) || prism.boundingBox.max.some((value, index) => Math.abs(value - [3.76326980708465, 1.7320508075688776, 10][index]) > 1e-8)) fail('native Part::Prism evidence is incomplete.') +const wedge = byId['part-wedge'].evidence +if (wedge.typeId !== 'Part::Wedge' || wedge.solidCount !== 1 || wedge.faceCount !== 6 || !Number.isFinite(wedge.volume) || Math.abs(wedge.volume - 2440 / 3) > 1e-8 || wedge.propertyCount !== 10 || JSON.stringify(wedge.properties) !== '{"X2max":8,"X2min":0,"Xmax":10,"Xmin":0,"Ymax":10,"Ymin":0,"Z2max":8,"Z2min":0,"Zmax":10,"Zmin":0}' || wedge.resavedShapeAvailable !== true) fail('native Part::Wedge evidence is incomplete.') +const ellipsoid = byId['part-ellipsoid'].evidence +if (ellipsoid.typeId !== 'Part::Ellipsoid' || ellipsoid.solidCount !== 1 || ellipsoid.faceCount !== 1 || !Number.isFinite(ellipsoid.volume) || Math.abs(ellipsoid.volume - 133.9826640573845) > 1e-8 || ellipsoid.propertyCount !== 6 || JSON.stringify(ellipsoid.properties) !== '{"Angle1":-90,"Angle2":90,"Angle3":360,"Radius1":2,"Radius2":4,"Radius3":0}' || ellipsoid.resavedShapeAvailable !== true || !ellipsoid.boundingBox || ellipsoid.boundingBox.min.some((value, index) => Math.abs(value - [-8, -6.92820323027551, -2][index]) > 1e-8) || ellipsoid.boundingBox.max.some((value, index) => Math.abs(value - [4, 6.928203230275507, 2][index]) > 1e-8)) fail('native Part::Ellipsoid evidence is incomplete.') +const sphereTrim = byId['part-sphere-trim'].evidence +if (sphereTrim.solidCount !== 1 || !Number.isFinite(sphereTrim.volume) || sphereTrim.volume <= 0 || JSON.stringify(sphereTrim.properties) !== '{"Angle1":-45,"Angle2":45,"Angle3":120,"Radius":5}' || sphereTrim.resavedShapeAvailable !== true || !sphereTrim.boundingBox || sphereTrim.boundingBox.min.length !== 3 || sphereTrim.boundingBox.max.length !== 3) fail('native Part::Sphere trim evidence is incomplete.') +const extrusion = byId['part-extrusion'].evidence +if (extrusion.typeId !== 'Part::Extrusion' || extrusion.solidCount !== 1 || !Number.isFinite(extrusion.volume) || Math.abs(extrusion.volume - 30) > 1e-8 || JSON.stringify(extrusion.properties) !== '{"Base":"FeatureProfile","DirMode":"Custom","LengthFwd":5,"LengthRev":0,"Reversed":false,"Solid":true,"Symmetric":false,"TaperAngle":0,"TaperAngleRev":0}' || extrusion.resavedShapeAvailable !== true) fail('native Part::Extrusion evidence is incomplete.') +const revolution = byId['part-revolution'].evidence +if (revolution.typeId !== 'Part::Revolution' || revolution.solidCount !== 1 || !Number.isFinite(revolution.volume) || Math.abs(revolution.volume - 36 * Math.PI) > 1e-8 || JSON.stringify(revolution.properties) !== '{"Angle":360,"Solid":true,"Source":"FeatureProfile","Symmetric":false}' || revolution.resavedShapeAvailable !== true) fail('native Part::Revolution evidence is incomplete.') +const coreSketch = byId['sketch-core-external-attachment'].evidence +if (coreSketch.geometryCount !== 10 || coreSketch.constraintCount !== 11 || JSON.stringify(coreSketch.externalTypes) !== '[0]' || coreSketch.mapMode !== 'FlatFace' || coreSketch.roundTripGeometryIds !== 10 || coreSketch.roundTripConstraintIds !== 11) fail('core Sketch round-trip evidence is incomplete.') +const modeSketch = byId['sketch-external-modes'].evidence +if (JSON.stringify(modeSketch.externalTypes) !== '[1,2,0]' || modeSketch.externalGeoCount !== 8 || JSON.stringify(modeSketch.nativeFlags) !== '[1,1,1,1,1,2]' || JSON.stringify(modeSketch.roundTripModes) !== '["intersection","both","both","both","both","projection"]') fail('external geometry mode/flag evidence is incomplete.') +if (byId['sketch-face-projection'].evidence.roundTripIds !== 4 || byId['sketch-snells-law'].evidence.roundTripConstraints !== 1 || byId['sketch-bspline-weight'].evidence.roundTripConstraints !== 1 || byId['sketch-internal-alignment'].evidence.roundTripConstraints !== 5) fail('advanced Sketcher round-trip evidence is incomplete.') + +console.log(JSON.stringify({ + status: 'freecad-fcstd-roundtrip-verification-pass', + scenarioCount: report.scenarioCount, + directions: report.directions, + unknownDifferences: 0, +}, null, 2)) diff --git a/scripts/check-freecad-golden-coverage.mjs b/scripts/check-freecad-golden-coverage.mjs new file mode 100644 index 0000000..8740986 --- /dev/null +++ b/scripts/check-freecad-golden-coverage.mjs @@ -0,0 +1,279 @@ +import { readdir, readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (file) => JSON.parse(await readFile(resolve(root, file), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD golden coverage: ${message}`) } +const lockedCommit = '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' + +const plan = await load('config/freecad-golden-coverage-plan.json') +if (plan.schemaVersion !== 1 || plan.baselineId !== 'freecad-1.1.1' || plan.sourceCommit !== lockedCommit) fail('coverage plan is not locked to FreeCAD 1.1.1.') +if (plan.parameterMutationPlan !== 'config/freecad-parameter-mutation-plan.json') fail('coverage plan must reference the fail-closed parameter mutation matrix.') +const parameterMutationPlan = await load(plan.parameterMutationPlan) +if (parameterMutationPlan.schemaVersion !== 1 || parameterMutationPlan.baselineId !== plan.baselineId || parameterMutationPlan.sourceCommit !== lockedCommit || parameterMutationPlan.failClosed !== true || !Array.isArray(parameterMutationPlan.dimensions) || parameterMutationPlan.dimensions.length !== 5) fail('parameter mutation plan is not locked to the same baseline or five-dimensional fail-closed contract.') +if (!Array.isArray(plan.dimensions) || new Set(plan.dimensions).size !== plan.dimensions.length) fail('dimensions must be a unique array.') +if (!Array.isArray(plan.families) || plan.families.length < 30) fail('coverage plan must enumerate every supported Part/PartDesign family.') +const familyIds = new Set() +for (const family of plan.families) { + if (!family || typeof family.id !== 'string' || familyIds.has(family.id)) fail(`invalid or duplicate family ${family?.id || ''}.`) + if (!Array.isArray(family.operationTypes) || family.operationTypes.length === 0) fail(`${family.id} has no operation type mapping.`) + for (const field of ['stageTypeIds', 'roundtripIds', 'browserOperations']) if (!Array.isArray(family[field])) fail(`${family.id}.${field} must be an array.`) + if (family.oracleSuccessSources !== undefined && !Array.isArray(family.oracleSuccessSources)) fail(`${family.id}.oracleSuccessSources must be an array.`) + for (const source of family.oracleSuccessSources || []) if (typeof source?.file !== 'string' || !Array.isArray(source.ids) || source.ids.length === 0 || source.ids.some((id) => typeof id !== 'string')) fail(`${family.id} has an invalid oracle success source.`) + familyIds.add(family.id) +} + +const oracleFiles = [...new Set(plan.families.flatMap((family) => (family.oracleSuccessSources || []).map((source) => source.file)))] +const oracleReports = new Map(await Promise.all(oracleFiles.map(async (file) => [file, await load(file)]))) +const oracleSuccessCounts = new Map() +for (const family of plan.families) for (const source of family.oracleSuccessSources || []) { + const report = oracleReports.get(source.file) + if (report?.schemaVersion !== 1 || report.status !== 'pass' || report.freecadVersion !== '1.1.1' || report.gitCommit !== lockedCommit || !Array.isArray(report.cases)) fail(`${source.file} is not a locked FreeCAD oracle report.`) + for (const id of source.ids) { + const fixture = report.cases.find((candidate) => candidate.id === id) + if (!fixture || fixture.passed !== true || fixture.status !== 'Valid' || (fixture.typeId && fixture.typeId !== family.id)) fail(`${source.file}/${id} is not valid success evidence for ${family.id}.`) + oracleSuccessCounts.set(family.id, (oracleSuccessCounts.get(family.id) || 0) + 1) + } +} + +const successManifest = await load(plan.successManifest) +const failureManifest = await load(plan.failureManifest) +const supplementalSuccessManifest = await load(plan.supplementalSuccessManifest) +const supplementalFailureManifest = await load(plan.supplementalFailureManifest) +const goldenVerification = await load('config/freecad-golden-verification.json') +const partdesignFailureOracle = await load(plan.partdesignFailureOracle) +const partdesignRevolutionGrooveOracle = await load(plan.partdesignRevolutionGrooveOracle) +const partdesignTransformOracle = await load(plan.partdesignTransformOracle) +const partBuildersOracle = await load(plan.partBuildersOracle) +if (successManifest.schemaVersion !== 1 || successManifest.baselineId !== plan.baselineId || !Array.isArray(successManifest.scenarios)) fail('success manifest baseline or shape is invalid.') +if (failureManifest.schemaVersion !== 1 || failureManifest.baselineId !== plan.baselineId || !Array.isArray(failureManifest.failures)) fail('failure manifest baseline or shape is invalid.') +if (supplementalSuccessManifest.schemaVersion !== 1 || supplementalSuccessManifest.baselineId !== plan.baselineId || !Array.isArray(supplementalSuccessManifest.scenarios)) fail('supplemental success manifest baseline or shape is invalid.') +if (supplementalFailureManifest.schemaVersion !== 1 || supplementalFailureManifest.baselineId !== plan.baselineId || !Array.isArray(supplementalFailureManifest.failures)) fail('supplemental failure manifest baseline or shape is invalid.') +if (goldenVerification.schemaVersion !== 1 || goldenVerification.baselineId !== plan.baselineId || goldenVerification.sourceCommit !== lockedCommit) fail('golden verification config is not locked to the same baseline.') +if (partdesignFailureOracle.schemaVersion !== 1 || partdesignFailureOracle.baselineId !== 'freecad-1.1.1-partdesign-failure-oracle' || partdesignFailureOracle.freecadVersion !== '1.1.1' || partdesignFailureOracle.gitCommit !== lockedCommit || partdesignFailureOracle.status !== 'pass' || !Array.isArray(partdesignFailureOracle.cases) || partdesignFailureOracle.summary?.rejected !== 13 || partdesignFailureOracle.summary?.acceptedEmpty !== 4) fail('PartDesign failure oracle baseline or tri-state summary is invalid.') +const partdesignFailureCounts = new Map(partdesignFailureOracle.cases.filter((fixture) => fixture.observed === 'rejected' && fixture.passed === true).map((fixture) => [fixture.typeId, 1])) +if (partdesignRevolutionGrooveOracle.schemaVersion !== 1 || partdesignRevolutionGrooveOracle.baselineId !== 'freecad-1.1.1-partdesign-revolution-groove-oracle' || partdesignRevolutionGrooveOracle.freecadVersion !== '1.1.1' || partdesignRevolutionGrooveOracle.gitCommit !== lockedCommit || partdesignRevolutionGrooveOracle.status !== 'pass' || partdesignRevolutionGrooveOracle.summary?.passed !== 2 || !Array.isArray(partdesignRevolutionGrooveOracle.cases)) fail('PartDesign Revolution/Groove oracle baseline or summary is invalid.') +const partdesignFeatureSuccessCounts = new Map(partdesignRevolutionGrooveOracle.cases.filter((fixture) => fixture.passed === true && fixture.shapeValid === true && fixture.solids === 1 && fixture.volume > 0).map((fixture) => [fixture.typeId, 1])) +if (partdesignTransformOracle.schemaVersion !== 1 || partdesignTransformOracle.baselineId !== 'freecad-1.1.1-partdesign-transform-oracle' || partdesignTransformOracle.freecadVersion !== '1.1.1' || partdesignTransformOracle.gitCommit !== lockedCommit || partdesignTransformOracle.status !== 'pass' || partdesignTransformOracle.summary?.successPassed !== 6 || partdesignTransformOracle.summary?.failurePassed !== 4 || partdesignTransformOracle.summary?.rejected !== 4 || partdesignTransformOracle.summary?.acceptedEmpty !== 0 || !Array.isArray(partdesignTransformOracle.cases)) fail('PartDesign transform oracle baseline or failure summary is invalid.') +const partdesignTransformFailureCounts = new Map(partdesignTransformOracle.cases.filter((fixture) => fixture.passed === true && fixture.observed === 'rejected' && fixture.state?.includes('Invalid')).map((fixture) => [fixture.typeId, 1])) +if (partBuildersOracle.schemaVersion !== 1 || partBuildersOracle.baselineId !== 'freecad-1.1.1-part-builders-oracle' || partBuildersOracle.freecadVersion !== '1.1.1' || partBuildersOracle.gitCommit !== lockedCommit || partBuildersOracle.status !== 'pass' || partBuildersOracle.summary?.successPassed !== 6 || partBuildersOracle.summary?.failurePassed !== 6 || partBuildersOracle.summary?.rejected !== 6 || partBuildersOracle.summary?.acceptedEmpty !== 0 || !Array.isArray(partBuildersOracle.successCases) || !Array.isArray(partBuildersOracle.failureCases)) fail('Part builders oracle baseline or summary is invalid.') +const partBuilderSuccessCounts = new Map(partBuildersOracle.successCases.filter((fixture) => fixture.passed === true && fixture.observed === 'success' && fixture.shapeValid === true && fixture.solids === 1).map((fixture) => [fixture.typeId, 1])) +const partBuilderFailureCounts = new Map(partBuildersOracle.failureCases.filter((fixture) => fixture.passed === true && fixture.observed === 'rejected' && fixture.shapeNull === true).map((fixture) => [fixture.typeId, 1])) + +const countTopLevelOperations = (manifest, directory, entriesKey) => { + const counts = new Map() + return Promise.all(manifest[entriesKey].map(async (entry) => { + if (!entry || typeof entry.id !== 'string' || typeof entry.file !== 'string') fail(`invalid ${entriesKey} manifest entry.`) + const fixture = await load(`${directory}/${entry.file}`) + if (fixture.id !== entry.id || !fixture.operation || typeof fixture.operation.type !== 'string') fail(`${entry.id} has no operation payload.`) + const type = fixture.operation.type + counts.set(type, (counts.get(type) || 0) + 1) + return fixture + })).then((fixtures) => ({ fixtures, counts })) +} + +const [{ fixtures: mainSuccessFixtures, counts: mainSuccessCounts }, { fixtures: mainFailureFixtures, counts: mainFailureCounts }, { fixtures: supplementalSuccessFixtures, counts: supplementalSuccessCounts }, { fixtures: supplementalFailureFixtures, counts: supplementalFailureCounts }] = await Promise.all([ + countTopLevelOperations(successManifest, 'fixtures/freecad-golden', 'scenarios'), + countTopLevelOperations(failureManifest, 'fixtures/freecad-golden/failures', 'failures'), + countTopLevelOperations(supplementalSuccessManifest, 'fixtures/freecad-golden/feature-families', 'scenarios'), + countTopLevelOperations(supplementalFailureManifest, 'fixtures/freecad-golden/feature-families/failures', 'failures'), +]) +const mergeCounts = (first, second) => { + const merged = new Map(first) + for (const [type, count] of second) merged.set(type, (merged.get(type) || 0) + count) + return merged +} +const successFixtures = [...mainSuccessFixtures, ...supplementalSuccessFixtures] +const failureFixtures = [...mainFailureFixtures, ...supplementalFailureFixtures] +const successCounts = mergeCounts(mainSuccessCounts, supplementalSuccessCounts) +const failureCounts = mergeCounts(mainFailureCounts, supplementalFailureCounts) +if (goldenVerification.successFixtures?.count !== mainSuccessFixtures.length || goldenVerification.failureFixtures?.count !== mainFailureFixtures.length || goldenVerification.supplementalFixtures?.successCount !== supplementalSuccessFixtures.length || goldenVerification.supplementalFixtures?.failureCount !== supplementalFailureFixtures.length) fail('golden verification fixture counts are stale.') + +const composite = await load(plan.compositeOracle) +if (composite.schemaVersion !== 1 || composite.baselineId !== 'freecad-1.1.1-composite-history-elementmap2' || composite.freecadVersion !== '1.1.1' || composite.gitCommit !== lockedCommit || composite.status !== 'pass' || !Array.isArray(composite.cases)) fail('composite history oracle baseline is invalid.') +const stageCounts = new Map() +const elementMapCaseCounts = new Map() +let compositeStages = 0 +let nativeEvidenceStages = 0 +let finalShapeOnlyStages = 0 +let opaquePreservedStages = 0 +let ambiguousStages = 0 +let missingEvidenceStages = 0 +let nativeEvidenceValidatedStages = 0 +let nativeMappedNameStages = 0 +let nativeIndexedNameStages = 0 +let privateTokenEvidenceCompleteStages = 0 +let internalBuilderEvidenceStages = 0 +let internalBuilderEvidenceMissingStages = 0 +const builderStageType = /^(Part::(Fuse|Cut|Common|Extrusion|Revolution|Loft|Sweep|Fillet|Chamfer)|PartDesign::(Pad|Pocket|Revolution|Groove|AdditiveLoft|SubtractiveLoft|AdditivePipe|SubtractivePipe|Fillet|Chamfer|Draft|Thickness|Mirrored|MultiTransform|LinearPattern|PolarPattern|Hole))$/ +for (const fixture of composite.cases) { + if (fixture.status !== 'pass' || !Array.isArray(fixture.stages) || fixture.stages.length === 0) fail(`composite fixture ${fixture.id || ''} is incomplete.`) + const hasElementMap = Object.keys(fixture.elementMapResources || {}).length > 0 + for (const stage of fixture.stages) { + if (typeof stage.typeId !== 'string' || !stage.typeId) continue + compositeStages += 1 + stageCounts.set(stage.typeId, (stageCounts.get(stage.typeId) || 0) + 1) + if (hasElementMap) elementMapCaseCounts.set(stage.typeId, (elementMapCaseCounts.get(stage.typeId) || 0) + 1) + if (stage.namingEvidenceStatus === 'native-evidence') nativeEvidenceStages += 1 + else if (stage.namingEvidenceStatus === 'final-shape-only') finalShapeOnlyStages += 1 + else if (stage.namingEvidenceStatus === 'opaque-preserved') opaquePreservedStages += 1 + else if (stage.namingEvidenceStatus === 'ambiguous') ambiguousStages += 1 + else missingEvidenceStages += 1 + if (stage.nativeEvidence?.stageId === stage.name && stage.nativeEvidence?.resultObjectId === stage.name && stage.nativeEvidence?.status === stage.namingEvidenceStatus) nativeEvidenceValidatedStages += 1 + if (stage.nativeEvidence?.mappedNameApiEntries > 0) nativeMappedNameStages += 1 + if (stage.nativeEvidence?.indexedNameApiEntries > 0) nativeIndexedNameStages += 1 + if (stage.nativeEvidence?.privateTokenEvidenceComplete === true) privateTokenEvidenceCompleteStages += 1 + if (builderStageType.test(stage.typeId || '')) { + if (stage.nativeEvidence?.internalBuilderEvidence === true) internalBuilderEvidenceStages += 1 + else if (stage.namingEvidenceStatus === 'native-evidence') internalBuilderEvidenceMissingStages += 1 + } + } +} +let elementMapResources = 0 +let stringHasherResources = 0 +for (const fixture of composite.cases) { + elementMapResources += Object.keys(fixture.elementMapResources || {}).length + if (fixture.stringHasherResource?.text) stringHasherResources += 1 +} + +const roundtrip = await load(plan.fcstdRoundtrip) +if (roundtrip.schemaVersion !== 1 || roundtrip.baselineId !== plan.baselineId || roundtrip.freecadCommit !== lockedCommit || roundtrip.status !== 'verified' || !Array.isArray(roundtrip.scenarios)) fail('FCStd round-trip report baseline or shape is invalid.') +const roundtripPassIds = new Set(roundtrip.scenarios.filter((scenario) => scenario.status === 'pass' && (!scenario.differences || scenario.differences.length === 0)).map((scenario) => scenario.id)) + +const browserGolden = await load(plan.browserGolden) +const browserPrimitiveEvidence = await load(plan.browserPrimitiveEvidence) +if (browserGolden.schemaVersion !== 1 || browserGolden.baselineId !== plan.baselineId || browserGolden.freecadCommit !== lockedCommit || browserGolden.status !== 'pass' || !Array.isArray(browserGolden.reports)) fail('browser golden report baseline or shape is invalid.') +if (browserPrimitiveEvidence.schemaVersion !== 1 || browserPrimitiveEvidence.status !== 'pass' || browserPrimitiveEvidence.browserId !== 'chrome' || !Array.isArray(browserPrimitiveEvidence.operations) || browserPrimitiveEvidence.afterRelease?.shapeCount !== 0 || browserPrimitiveEvidence.afterRelease?.kernelReferenceCount !== 0) fail('browser primitive evidence is invalid or leaked resources.') +const browserOperationCounts = new Map() +for (const report of browserGolden.reports) { + if (report.status !== 'pass' || (report.differences || []).length !== 0 || typeof report.operation !== 'string') continue + browserOperationCounts.set(report.operation, (browserOperationCounts.get(report.operation) || 0) + 1) +} +for (const operation of ['ellipsoid', 'torus', 'prism', 'wedge']) { + const probe = browserGolden.productRecompute?.[operation] + if (probe?.quality?.structuralValid === true && probe.quality.isNull === false && probe.quality.structuralErrors === 0 && probe.quality.solids === 1 && probe.comparison?.status === 'pass' && (probe.comparison.differences || []).length === 0) { + browserOperationCounts.set(operation, (browserOperationCounts.get(operation) || 0) + 1) + } +} +for (const operation of browserPrimitiveEvidence.operations) { + if (typeof operation.name !== 'string' || (!(operation.volume > 0) && !(operation.length > 0))) continue + browserOperationCounts.set(operation.name, (browserOperationCounts.get(operation.name) || 0) + 1) +} + +const historyFiles = (await readdir(resolve(root, 'config'))).filter((file) => file.startsWith('chrome-native-') && file.endsWith('-history-verification.json')) +const nativeOperationByFile = { + 'chrome-native-history-verification.json': ['fuse', 'cut', 'common'], + 'chrome-native-pad-history-verification.json': ['pad'], + 'chrome-native-pocket-history-verification.json': ['pocket'], + 'chrome-native-revolution-history-verification.json': ['revolution'], + 'chrome-native-groove-history-verification.json': ['groove'], + 'chrome-native-loft-history-verification.json': ['loft'], + 'chrome-native-pipe-history-verification.json': ['pipe'], + 'chrome-native-fillet-history-verification.json': ['fillet'], + 'chrome-native-chamfer-history-verification.json': ['chamfer'], + 'chrome-native-hole-history-verification.json': ['hole'], + 'chrome-native-draft-history-verification.json': ['draft'], + 'chrome-native-thickness-history-verification.json': ['thickness'], + 'chrome-native-linear-pattern-history-verification.json': ['linear-pattern'], + 'chrome-native-polar-pattern-history-verification.json': ['polar-pattern'], + 'chrome-native-mirrored-history-verification.json': ['mirrored'], + 'chrome-native-multi-transform-history-verification.json': ['multi-transform'], +} +const nativeOperations = new Map() +for (const file of historyFiles) { + const report = await load(`config/${file}`) + if (report.status !== 'pass' || report.nativeCapabilities?.availability !== 'available') continue + const history = report.history || {} + const recordCount = Number.isInteger(history.recordCount) ? history.recordCount : report.execution?.recordCount + if (!Number.isInteger(recordCount) || recordCount <= 0) continue + for (const operation of nativeOperationByFile[file] || []) nativeOperations.set(operation, (nativeOperations.get(operation) || 0) + 1) +} +const nativeAliases = new Map([ + ['partdesign-revolution', 'revolution'], ['partdesign-fillet', 'fillet'], ['partdesign-chamfer', 'chamfer'], + ['additive-loft', 'loft'], ['subtractive-loft', 'loft'], ['additive-pipe', 'pipe'], ['subtractive-pipe', 'pipe'], +]) +const nativeDimensionOperations = new Set(['fuse', 'cut', 'common', 'pad', 'pocket', 'revolution', 'groove', 'loft', 'pipe', 'fillet', 'chamfer', 'hole', 'draft', 'thickness', 'linear-pattern', 'polar-pattern', 'mirrored', 'multi-transform']) + +const countFor = (family) => { + const operationTypes = new Set(family.operationTypes) + const nativeTypes = new Set([...operationTypes].map((type) => nativeAliases.get(type) || type)) + const success = [...operationTypes].reduce((sum, type) => sum + (successCounts.get(type) || 0), 0) + (oracleSuccessCounts.get(family.id) || 0) + (partdesignFeatureSuccessCounts.get(family.id) || 0) + (partBuilderSuccessCounts.get(family.id) || 0) + const failure = [...operationTypes].reduce((sum, type) => sum + (failureCounts.get(type) || 0), 0) + (partdesignFailureCounts.get(family.id) || 0) + (partdesignTransformFailureCounts.get(family.id) || 0) + (partBuilderFailureCounts.get(family.id) || 0) + const native = [...nativeTypes].reduce((sum, type) => sum + (nativeOperations.get(type) || 0), 0) + const stage = family.stageTypeIds.reduce((sum, type) => sum + (stageCounts.get(type) || 0), 0) + const elementMap = family.stageTypeIds.reduce((sum, type) => sum + (elementMapCaseCounts.get(type) || 0), 0) + const roundtripCount = family.roundtripIds.filter((id) => roundtripPassIds.has(id)).length + const browser = family.browserOperations.reduce((sum, type) => sum + (browserOperationCounts.get(type) || 0), 0) + const required = ['success-fixture', 'failure-fixture'] + if (family.roundtripIds.length > 0) required.push('fcstd-roundtrip') + if (family.stageTypeIds.length > 0) required.push('composite-stage', 'elementmap2-resource') + if ([...nativeTypes].some((type) => nativeDimensionOperations.has(type))) required.push('native-history') + if (family.browserOperations.length > 0) required.push('browser-replay') + const counts = { + 'success-fixture': success, + 'failure-fixture': failure, + 'native-history': native, + 'composite-stage': stage, + 'elementmap2-resource': elementMap, + 'fcstd-roundtrip': roundtripCount, + 'browser-replay': browser, + } + const missing = required.filter((dimension) => counts[dimension] < 1) + return { id: family.id, required, counts, complete: missing.length === 0, missing } +} + +const families = plan.families.map(countFor) +const completeFamilies = families.filter((family) => family.complete).length +const blockers = families.filter((family) => !family.complete).map((family) => ({ family: family.id, missing: family.missing })) +const globalBlockers = [] +if (nativeEvidenceStages === 0) globalBlockers.push('composite oracle has no native-evidence stage; native topology identity remains unavailable') +if (nativeEvidenceValidatedStages !== nativeEvidenceStages) globalBlockers.push(`${nativeEvidenceStages - nativeEvidenceValidatedStages} native-evidence stages failed runtime evidence identity validation`) +if (nativeIndexedNameStages !== nativeEvidenceStages) globalBlockers.push(`${nativeEvidenceStages - nativeIndexedNameStages} native-evidence stages have no direct FreeCAD indexed-name identity`) +if (privateTokenEvidenceCompleteStages < nativeEvidenceStages) globalBlockers.push(`${nativeEvidenceStages - privateTokenEvidenceCompleteStages} native stages do not have complete private MappedName token evidence; IndexedName cannot be promoted to a private token`) +if (internalBuilderEvidenceMissingStages > 0) globalBlockers.push(`${internalBuilderEvidenceMissingStages} composite builder stages have no native intermediate builder evidence; final geometry cannot reconstruct private intermediate history`) +if (missingEvidenceStages > 0) globalBlockers.push(`${missingEvidenceStages} composite stages have missing naming evidence status`) +if (elementMapResources === 0) globalBlockers.push('composite oracle has no ElementMap2 resources') +if (stringHasherResources === 0) globalBlockers.push('composite oracle has no StringHasher resources') +const sortedObject = (map) => Object.fromEntries([...map.entries()].sort(([left], [right]) => left.localeCompare(right))) +const detailed = process.argv.includes('--details') +const result = { + status: 'freecad-golden-coverage-pass', + baseline: { id: plan.baselineId, commit: plan.sourceCommit }, + exactPromotionReady: false, + totals: { + successFixtures: successFixtures.length, + failureFixtures: failureFixtures.length, + primarySuccessFixtures: mainSuccessFixtures.length, + primaryFailureFixtures: mainFailureFixtures.length, + supplementalSuccessFixtures: supplementalSuccessFixtures.length, + supplementalFailureFixtures: supplementalFailureFixtures.length, + compositeCases: composite.cases.length, + compositeStages, + nativeEvidenceStages, + nativeEvidenceValidatedStages, + nativeIndexedNameStages, + nativeMappedNameStages, + indexedOnlyStages: nativeIndexedNameStages - nativeMappedNameStages, + privateTokenEvidenceCompleteStages, + internalBuilderEvidenceStages, + internalBuilderEvidenceMissingStages, + finalShapeOnlyStages, + opaquePreservedStages, + ambiguousStages, + missingEvidenceStages, + elementMapResources, + stringHasherResources, + roundtripScenarios: roundtrip.scenarios.length, + roundtripPassScenarios: roundtripPassIds.size, + browserGoldenReports: browserGolden.reports.length, + browserPrimitiveOperations: browserPrimitiveEvidence.operations.length, + nativeOracleSuccessCases: [...oracleSuccessCounts.values(), ...partdesignFeatureSuccessCounts.values(), ...partBuilderSuccessCounts.values()].reduce((sum, count) => sum + count, 0), + nativeOracleFailureCases: [...partdesignFailureCounts.values(), ...partdesignTransformFailureCounts.values(), ...partBuilderFailureCounts.values()].reduce((sum, count) => sum + count, 0), + }, + operationCounts: { success: sortedObject(successCounts), failure: sortedObject(failureCounts), oracleSuccess: sortedObject(new Map([...oracleSuccessCounts, ...partdesignFeatureSuccessCounts, ...partBuilderSuccessCounts])), oracleFailure: sortedObject(new Map([...partdesignFailureCounts, ...partdesignTransformFailureCounts, ...partBuilderFailureCounts])), nativeHistory: sortedObject(nativeOperations), browserReplay: sortedObject(browserOperationCounts) }, + families: { total: families.length, complete: completeFamilies, incomplete: families.length - completeFamilies, blockerCount: blockers.length }, + missingDimensions: Object.fromEntries([...new Set(blockers.flatMap(({ missing }) => missing))].sort().map((dimension) => [dimension, blockers.filter((family) => family.missing.includes(dimension)).length])), + blockers: globalBlockers, +} +if (detailed) result.familyBlockers = blockers +console.log(JSON.stringify(result, null, 2)) diff --git a/scripts/check-freecad-golden-fixtures.mjs b/scripts/check-freecad-golden-fixtures.mjs new file mode 100644 index 0000000..116bf2c --- /dev/null +++ b/scripts/check-freecad-golden-fixtures.mjs @@ -0,0 +1,27 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { loadGoldenManifest, validateGoldenOperation } from './freecad-golden-contract.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const successManifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/manifest.json')) +if (successManifest.scenarios.length !== 100) throw new Error(`FreeCAD golden fixtures: expected 100 success fixtures, found ${successManifest.scenarios.length}.`) +const validateFailureManifest = async (manifestFile, expectedCount) => { + const failureManifest = JSON.parse(await readFile(manifestFile, 'utf8')) + if (failureManifest.schemaVersion !== 1 || failureManifest.baselineId !== 'freecad-1.1.1' || !Array.isArray(failureManifest.failures) || failureManifest.failures.length !== expectedCount) throw new Error(`FreeCAD golden fixtures: expected ${expectedCount} failure fixtures at the locked baseline.`) + const failureIds = new Set() + for (const entry of failureManifest.failures) { + if (!entry.id || failureIds.has(entry.id) || typeof entry.file !== 'string') throw new Error(`FreeCAD golden fixtures: invalid failure manifest entry ${entry.id || ''}.`) + failureIds.add(entry.id) + const fixture = JSON.parse(await readFile(resolve(manifestFile, '..', entry.file), 'utf8')) + if (fixture.id !== entry.id || typeof fixture.expectedError !== 'string' || !fixture.expectedError) throw new Error(`FreeCAD golden fixtures: incomplete failure fixture ${entry.id}.`) + let rejected = false + try { validateGoldenOperation(fixture.operation, fixture.id) } catch { rejected = true } + if (!rejected) throw new Error(`FreeCAD golden fixtures: ${entry.id} is not rejected by the operation contract.`) + } + return failureManifest +} +const failureManifest = await validateFailureManifest(resolve(root, 'fixtures/freecad-golden/failures/manifest.json'), 51) +const supplementalManifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/feature-families/manifest.json')) +if (supplementalManifest.scenarios.length !== 5) throw new Error(`FreeCAD golden fixtures: expected 5 supplemental feature-family fixtures, found ${supplementalManifest.scenarios.length}.`) +const supplementalFailureManifest = await validateFailureManifest(resolve(root, 'fixtures/freecad-golden/feature-families/failures/manifest.json'), 5) +console.log(JSON.stringify({ status: 'freecad-golden-fixtures-pass', successCount: successManifest.scenarios.length, failureCount: failureManifest.failures.length, supplementalSuccessCount: supplementalManifest.scenarios.length, supplementalFailureCount: supplementalFailureManifest.failures.length }, null, 2)) diff --git a/scripts/check-freecad-gui-command-inventory.mjs b/scripts/check-freecad-gui-command-inventory.mjs new file mode 100644 index 0000000..3050dbf --- /dev/null +++ b/scripts/check-freecad-gui-command-inventory.mjs @@ -0,0 +1,24 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const inventory = JSON.parse(await readFile(resolve(root, 'config/freecad-gui-command-inventory.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD GUI command inventory: ${message}`) } +if (inventory.schemaVersion !== 1 || inventory.baseline?.freecadVersion !== '1.1.1' || inventory.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('baseline mismatch.') +if (!Number.isInteger(inventory.commandCount) || inventory.commandCount < 900 || !Array.isArray(inventory.commands) || inventory.commands.length !== inventory.commandCount) fail('runtime command inventory is incomplete.') +const ids = new Set() +for (const command of inventory.commands) { + if (!command.id || ids.has(command.id)) fail(`duplicate or empty command '${command.id}'.`) + ids.add(command.id) + if (!Array.isArray(command.sourceModules) || command.sourceModules.length === 0 || !Array.isArray(command.workbenches) || command.workbenches.length === 0) fail(`${command.id} is missing source/workbench ownership.`) + for (const caseName of ['emptySelection', 'selectedPartBox']) { + const probeCase = command.cases?.[caseName] + if (!probeCase?.observed || !Array.isArray(probeCase.states) || probeCase.states.length === 0) fail(`${command.id} is missing ${caseName} evidence.`) + if (probeCase.states.some((state) => !['true', 'false', 'error', 'no-action'].includes(String(state)))) fail(`${command.id} has an invalid ${caseName} state.`) + } +} +if (!Array.isArray(inventory.sourceOnlyCommands)) fail('sourceOnlyCommands must be an array.') +for (const command of inventory.sourceOnlyCommands) { + if (!command.id || !Array.isArray(command.sourceModules) || !command.reason) fail('source-only command entry is incomplete.') +} +console.log(JSON.stringify({ status: 'gui-command-inventory-pass', commandCount: inventory.commandCount, sourceOnlyCount: inventory.sourceOnlyCommands.length, workbenchCount: inventory.runtimeEvidence?.workbenchCount }, null, 2)) diff --git a/scripts/check-freecad-native-naming-evidence.mjs b/scripts/check-freecad-native-naming-evidence.mjs new file mode 100644 index 0000000..8f04650 --- /dev/null +++ b/scripts/check-freecad-native-naming-evidence.mjs @@ -0,0 +1,49 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createElementMap2MultiStageNameMapping, parseElementMap2MultiStageNameMapping, writeElementMap2MultiStageNameMapping } from '../src/facade/elementMap2.ts' +import { createNativeStageNamingEvidence, validateNativeNamingEvidence } from '../src/facade/nativeNamingEvidence.ts' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const matrix = await load('config/compatibility-matrix.json') +const oracle = await load('config/freecad-composite-history-elementmap-oracle.json') +const fail = (message) => { throw new Error(`FreeCAD native naming evidence gate: ${message}`) } +const blockers = matrix.nativeOcctHistory?.historyProtocol?.namingEvidence?.exactBlockers +if (!Array.isArray(blockers) || blockers.length !== 3) fail('exact blocker list must retain private token, missing stage and isomorphic-source boundaries.') +const featureLevels = matrix.facadeCapabilities?.geometry?.featureLevels +for (const feature of ['pad', 'pocket', 'revolution', 'groove', 'boolean']) { + if (!featureLevels?.[feature] || featureLevels[feature].level !== 'compatible' || !Array.isArray(featureLevels[feature].exactBlockedBy) || featureLevels[feature].exactBlockedBy.length === 0) fail(`${feature} must have a non-exact capability level with explicit blockers.`) +} +let oracleStages = 0 +let nativeEvidenceStages = 0 +let nativeMappedNameStages = 0 +let nativeIndexedNameStages = 0 +let privateTokenEvidenceCompleteStages = 0 +let internalBuilderEvidenceStages = 0 +let internalBuilderEvidenceMissingStages = 0 +const builderStageType = /^(Part::(Fuse|Cut|Common|Extrusion|Revolution|Loft|Sweep|Fillet|Chamfer)|PartDesign::(Pad|Pocket|Revolution|Groove|AdditiveLoft|SubtractiveLoft|AdditivePipe|SubtractivePipe|Fillet|Chamfer|Draft|Thickness|Mirrored|MultiTransform|LinearPattern|PolarPattern|Hole))$/ +for (const fixture of oracle.cases) for (const stage of fixture.stages ?? []) { + oracleStages += 1 + if (!['final-shape-only', 'opaque-preserved', 'native-evidence', 'ambiguous', 'missing'].includes(stage.namingEvidenceStatus)) fail(`${fixture.id}/${stage.name} has no explicit naming evidence status.`) + if (!stage.nativeEvidence || stage.nativeEvidence.stageId !== stage.name || stage.nativeEvidence.resultObjectId !== stage.name || stage.nativeEvidence.status !== stage.namingEvidenceStatus) fail(`${fixture.id}/${stage.name} has no stage-bound runtime naming evidence.`) + const validation = validateNativeNamingEvidence(stage.nativeEvidence) + if (!validation.valid) fail(`${fixture.id}/${stage.name} has invalid runtime naming evidence: ${validation.issues[0].path}: ${validation.issues[0].message}`) + if (stage.namingEvidenceStatus === 'native-evidence') nativeEvidenceStages += 1 + if (stage.nativeEvidence.mappedNameApiEntries > 0) nativeMappedNameStages += 1 + if (stage.nativeEvidence.indexedNameApiEntries > 0) nativeIndexedNameStages += 1 + if (stage.nativeEvidence.privateTokenEvidenceComplete === true) privateTokenEvidenceCompleteStages += 1 + if (builderStageType.test(stage.typeId || '')) { + if (stage.nativeEvidence.internalBuilderEvidence === true) internalBuilderEvidenceStages += 1 + else internalBuilderEvidenceMissingStages += 1 + } +} +if (oracleStages !== 219 || nativeEvidenceStages !== 219 || nativeIndexedNameStages !== 219) fail(`locked composite oracle must contain 219/219 stage-bound native indexed-name records, found native=${nativeEvidenceStages}, indexed=${nativeIndexedNameStages}, stages=${oracleStages}.`) +const exactFeatures = Object.values(featureLevels).filter((feature) => feature.level === 'exact').length +if (matrix.systemExactEvaluation?.exact !== false || matrix.systemExactEvaluation?.featureExactCount !== exactFeatures || JSON.stringify(matrix.systemExactEvaluation?.blockers) !== JSON.stringify(blockers)) fail('system exact evaluation must remain false and list the active native naming blockers.') +const table = { schemaVersion: 2, nativeVersion: 1, entries: [{ id: 1, flags: 0, relatedIds: [], data: 'native', postfix: '' }] } +const stage0 = createNativeStageNamingEvidence({ stageId: 'gate:0', resultObjectId: 'shape:0', status: 'native-evidence', stringHasher: table, mappedNames: [{ kind: 'face', resultIndex: 0, resultPersistentId: 'face:0', relation: 'generated', reference: { name: 'Face1', stringIds: [1] } }] }) +const stage1 = createNativeStageNamingEvidence({ stageId: 'gate:1', resultObjectId: 'shape:1', status: 'ambiguous', stringHasher: table, mappedNames: [{ kind: 'face', resultIndex: 0, resultPersistentId: 'face:1', relation: 'ambiguous', reference: { name: 'Face1', stringIds: [1] }, sourceRefs: [{ objectId: 'shape:0', persistentId: 'face:0', stageId: 'gate:0' }], candidates: [{ objectId: 'a', persistentId: 'face:a' }, { objectId: 'b', persistentId: 'face:b' }] }] }) +if (!validateNativeNamingEvidence(stage0).valid || !validateNativeNamingEvidence(stage1).valid) fail('runtime evidence validator rejected its golden native and ambiguous fixtures.') +const mapping = createElementMap2MultiStageNameMapping([stage0, stage1], []) +if (parseElementMap2MultiStageNameMapping(writeElementMap2MultiStageNameMapping(mapping)).stages[1].entries[0].status !== 'ambiguous') fail('multi-stage ElementMap2 mapping did not persist ambiguity.') +console.log(JSON.stringify({ status: 'freecad-native-naming-evidence-pass', cases: oracle.cases.length, oracleStages, nativeEvidenceStages, nativeIndexedNameStages, nativeMappedNameStages, indexedOnlyStages: nativeIndexedNameStages - nativeMappedNameStages, privateTokenEvidenceCompleteStages, internalBuilderEvidenceStages, internalBuilderEvidenceMissingStages, featureLevels: Object.fromEntries(Object.entries(featureLevels).map(([key, value]) => [key, value.level])), exactBlockers: blockers.length, ambiguousPersisted: true, systemFreecadExact: false, exactFeatures }, null, 2)) diff --git a/scripts/check-freecad-oracle-coverage.mjs b/scripts/check-freecad-oracle-coverage.mjs new file mode 100644 index 0000000..b1414ff --- /dev/null +++ b/scripts/check-freecad-oracle-coverage.mjs @@ -0,0 +1,56 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = (path) => readFile(resolve(root, path), 'utf8').then(JSON.parse) +const [sourceInventory, typeInventory, guiInventory, reference] = await Promise.all([ + load('config/freecad-source-inventory.json'), + load('config/freecad-type-property-inventory.json'), + load('config/freecad-gui-command-inventory.json'), + load('.cache/freecad/reference-desktop.json'), +]) +const fail = (message) => { throw new Error(`FreeCAD oracle coverage: ${message}`) } +const lockedCommit = '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' +if (reference.schemaVersion !== 1 || reference.freecadVersion !== '1.1.1' || reference.gitCommit !== lockedCommit) fail('reference desktop report is not the locked FreeCAD 1.1.1 baseline.') +if (sourceInventory.moduleCount !== 34 || reference.moduleCount !== 34 || reference.modules?.length !== 34) fail('source and desktop oracle must both enumerate 34 modules.') +if (typeInventory.moduleCount !== 34 || typeInventory.modules?.length !== 34) fail('type/property inventory must enumerate all 34 modules.') + +const sourceModules = new Map(sourceInventory.modules.map((module) => [module.name, module])) +const typeModules = new Map(typeInventory.modules.map((module) => [module.name, module])) +const referenceModules = new Map(reference.modules.map((module) => [module.name, module])) +for (const name of sourceModules.keys()) { + if (!referenceModules.has(name) || !typeModules.has(name)) fail(`module ${name} is missing from one oracle inventory.`) + const runtime = referenceModules.get(name) + if (!runtime.runtimeStatus || typeof runtime.available !== 'boolean' || typeof runtime.importable !== 'boolean') fail(`module ${name} lacks explicit runtime status.`) +} +const missingReferenceModules = [...referenceModules.keys()].filter((name) => !sourceModules.has(name)) +if (missingReferenceModules.length > 0) fail(`desktop oracle has unregistered modules: ${missingReferenceModules.join(', ')}.`) + +const referenceCommands = new Map((reference.guiCommands?.commands ?? []).map((command) => [command.id, command])) +const inventoryCommands = new Map(guiInventory.commands.map((command) => [command.id, command])) +if (referenceCommands.size !== guiInventory.commandCount || inventoryCommands.size !== guiInventory.commandCount) fail('GUI command counts or IDs are not unique and aligned.') +for (const [id, command] of inventoryCommands) { + const referenceCommand = referenceCommands.get(id) + if (!referenceCommand) fail(`GUI command ${id} is missing from the desktop oracle.`) + if (!Array.isArray(referenceCommand.observations) || referenceCommand.observations.length === 0) fail(`GUI command ${id} has no desktop observations.`) + if (command.status !== 'runtime-probed') fail(`GUI command ${id} is not marked runtime-probed.`) +} +for (const id of referenceCommands.keys()) if (!inventoryCommands.has(id)) fail(`desktop GUI command ${id} is missing from the generated inventory.`) +for (const command of guiInventory.sourceOnlyCommands) if (!command.reason || !Array.isArray(command.sourceModules)) fail(`source-only command ${command.id} lacks an explicit reason.`) + +const runtimeObjectCount = reference.objects?.filter((object) => object.available && object.runtimeTypeId).length ?? 0 +const staticObjectCandidateCount = typeInventory.modules.reduce((total, module) => total + module.objects.length, 0) +const moduleStatusCounts = Object.fromEntries([...new Set(reference.modules.map((module) => module.runtimeStatus))].sort().map((status) => [status, reference.modules.filter((module) => module.runtimeStatus === status).length])) +console.log(JSON.stringify({ + status: 'freecad-oracle-coverage-pass', + baseline: { freecadVersion: reference.freecadVersion, commit: reference.gitCommit }, + modules: reference.moduleCount, + moduleStatusCounts, + guiCommands: guiInventory.commandCount, + guiCommandsRuntimeAligned: true, + sourceOnlyCommands: guiInventory.sourceOnlyCommands.length, + runtimeObjectCount, + staticObjectCandidateCount, + exactPromotionReady: false, + remaining: ['not-built modules require an explicit build/proxy decision', 'static TypeId/property candidates require per-object runtime probes'], +}, null, 2)) diff --git a/scripts/check-freecad-part-builders-oracle.mjs b/scripts/check-freecad-part-builders-oracle.mjs new file mode 100644 index 0000000..7fd3307 --- /dev/null +++ b/scripts/check-freecad-part-builders-oracle.mjs @@ -0,0 +1,37 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-part-builders-oracle.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD Part builders oracle: ${message}`) } +const commit = '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' +const expectedSuccess = new Map([ + ['Part::Extrusion', { id: 'part-extrusion-success', shapeType: 'Solid', solids: 1, faces: 6, edges: 12, vertices: 8, volume: 30 }], + ['Part::Revolution', { id: 'part-revolution-success', shapeType: 'Solid', solids: 1, faces: 4, edges: 6, vertices: 4, volume: 75.398223686155 }], + ['Part::Loft', { id: 'part-loft-success', shapeType: 'Solid', solids: 1, faces: 6, edges: 12, vertices: 8, volume: 46.666666666666664 }], + ['Part::Sweep', { id: 'part-sweep-success', shapeType: 'Solid', solids: 1, faces: 6, edges: 12, vertices: 8, volume: 24 }], + ['Part::Fillet', { id: 'part-fillet-success', shapeType: 'Compound', solids: 1, faces: 7, edges: 15, vertices: 10, volume: 478.7123889803846 }], + ['Part::Chamfer', { id: 'part-chamfer-success', shapeType: 'Compound', solids: 1, faces: 7, edges: 15, vertices: 10, volume: 477 }], +]) +const expectedDiagnostics = new Map([ + ['Part::Extrusion', 'No object linked'], + ['Part::Revolution', 'No object linked'], + ['Part::Loft', 'No sections linked.'], + ['Part::Sweep', 'No sections linked.'], + ['Part::Fillet', 'No object linked'], + ['Part::Chamfer', 'No object linked'], +]) +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1-part-builders-oracle' || report.freecadVersion !== '1.1.1' || report.gitCommit !== commit || report.status !== 'pass') fail('baseline or status is invalid.') +if (report.summary?.successCases !== 6 || report.summary.successPassed !== 6 || report.summary.failureCases !== 6 || report.summary.failurePassed !== 6 || report.summary.rejected !== 6 || report.summary.acceptedEmpty !== 0) fail('summary is incomplete.') +if (!Array.isArray(report.successCases) || report.successCases.length !== expectedSuccess.size || !Array.isArray(report.failureCases) || report.failureCases.length !== expectedDiagnostics.size) fail('case inventory is incomplete.') +for (const [typeId, expected] of expectedSuccess) { + const fixture = report.successCases.find((candidate) => candidate.typeId === typeId) + if (!fixture || fixture.id !== expected.id || fixture.expected !== 'success' || fixture.observed !== 'success' || fixture.passed !== true || fixture.shapeNull !== false || fixture.shapeValid !== true || fixture.statusString !== 'Valid' || !fixture.state?.includes('Up-to-date')) fail(`${typeId} is not valid native success evidence.`) + for (const field of ['shapeType', 'solids', 'faces', 'edges', 'vertices']) if (fixture[field] !== expected[field]) fail(`${typeId}.${field} drifted from the native oracle.`) + if (Math.abs(fixture.volume - expected.volume) > 1e-8) fail(`${typeId}.volume drifted from the native oracle.`) +} +for (const [typeId, diagnostic] of expectedDiagnostics) { + const fixture = report.failureCases.find((candidate) => candidate.typeId === typeId) + if (!fixture || fixture.inputClass !== 'missing-required-input' || fixture.expected !== 'rejected' || fixture.observed !== 'rejected' || fixture.passed !== true || fixture.shapeNull !== true || fixture.statusString !== diagnostic || !fixture.state?.includes('Invalid')) fail(`${typeId} is not a native rejected failure fixture.`) +} +console.log(JSON.stringify({ status: 'freecad-part-builders-oracle-pass', successCases: report.summary.successCases, failureCases: report.summary.failureCases, rejected: report.summary.rejected, typeIds: [...expectedSuccess.keys()] }, null, 2)) diff --git a/scripts/check-freecad-partdesign-base-oracle.mjs b/scripts/check-freecad-partdesign-base-oracle.mjs new file mode 100644 index 0000000..9a7866b --- /dev/null +++ b/scripts/check-freecad-partdesign-base-oracle.mjs @@ -0,0 +1,51 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const oracle = await load('config/freecad-partdesign-base-oracle.json') +if (oracle.schemaVersion !== 1 || oracle.baselineId !== 'freecad-1.1.1-partdesign-base-oracle' || oracle.freecadVersion !== '1.1.1' || oracle.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || oracle.status !== 'pass' || oracle.tolerance !== 1e-7) throw new Error('FreeCAD PartDesign base oracle baseline is invalid.') +if (oracle.summary?.cases !== 5 || oracle.summary?.passed !== 5) throw new Error('FreeCAD PartDesign base oracle summary is incomplete.') + +const expectedVolumes = new Map([ + ['pad-tapered', 98.77344374611019], + ['pocket-tapered', 810.4374375507407], + ['pocket-through-all', 960], + ['pocket-up-to-face', 960], + ['pad-midplane', 96], +]) +for (const [id, volume] of expectedVolumes) { + const fixture = oracle.cases?.find((entry) => entry.id === id) + if (!fixture || fixture.passed !== true || fixture.status !== 'Valid' || fixture.solids !== 1 || !Number.isFinite(fixture.volume) || Math.abs(fixture.volume - volume) > oracle.tolerance) throw new Error(`FreeCAD PartDesign base fixture ${id} is invalid.`) +} +const upToFace = oracle.cases.find((entry) => entry.id === 'pocket-up-to-face') +const midplane = oracle.cases.find((entry) => entry.id === 'pad-midplane') +if (!Number.isSafeInteger(upToFace.targetFace) || Math.abs(midplane.bounds.min[2] + 3) > oracle.tolerance || Math.abs(midplane.bounds.max[2] - 3) > oracle.tolerance) throw new Error('FreeCAD PartDesign termination bounds are invalid.') + +const chrome = await load('config/chrome-geometry-features-verification.json') +if (chrome.status !== 'pass' || chrome.afterRelease?.shapeCount !== 0 || chrome.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome PartDesign base geometry report is invalid.') +for (const [id] of expectedVolumes) { + const nativeFixture = oracle.cases.find((entry) => entry.id === id) + const browserFixture = chrome.operations?.find((entry) => entry.name === id) + if (!browserFixture || Math.abs(browserFixture.volume - nativeFixture.volume) > oracle.tolerance) throw new Error(`Chrome ${id} geometry does not match the FreeCAD oracle.`) +} + +const lifecycle = await load('config/chrome-partdesign-lifecycle-verification.json') +if (lifecycle.status !== 'pass' || lifecycle.initial?.length !== 42 || lifecycle.edited?.length !== 31 || lifecycle.edited?.recompute !== 'completed' || lifecycle.undone?.length !== 42 || lifecycle.undone?.recompute !== 'completed' || lifecycle.released?.shapeCount !== 0 || lifecycle.released?.kernelReferenceCount !== 0) throw new Error('Chrome PartDesign parameter-edit lifecycle evidence is invalid.') + +const nativeHistoryPaths = new Map([ + ['pad', 'config/chrome-native-pad-history-verification.json'], + ['pocket', 'config/chrome-native-pocket-history-verification.json'], + ['revolution', 'config/chrome-native-revolution-history-verification.json'], + ['groove', 'config/chrome-native-groove-history-verification.json'], +]) +const nativeHistory = {} +for (const [operation, path] of nativeHistoryPaths) { + const report = await load(path) + const recordCount = report.execution?.recordCount ?? report.history?.recordCount + const released = operation === 'pad' ? report.workerDisposed === true : report.afterRelease?.shapeCount === 0 && report.afterRelease?.kernelReferenceCount === 0 + if (report.status !== 'pass' || report.nativeCapabilities?.availability !== 'available' || !report.nativeCapabilities?.operations?.includes(operation) || !Number.isSafeInteger(recordCount) || recordCount < 1 || !released) throw new Error(`Chrome native ${operation} history evidence is invalid.`) + nativeHistory[operation] = recordCount +} + +console.log(JSON.stringify({ status: 'freecad-partdesign-base-oracle-pass', baselineId: oracle.baselineId, freecadVersion: oracle.freecadVersion, summary: oracle.summary, lifecycle: { initialLength: lifecycle.initial.length, editedLength: lifecycle.edited.length, undoneLength: lifecycle.undone.length }, nativeHistory }, null, 2)) diff --git a/scripts/check-freecad-partdesign-dressup-oracle.mjs b/scripts/check-freecad-partdesign-dressup-oracle.mjs new file mode 100644 index 0000000..6e28137 --- /dev/null +++ b/scripts/check-freecad-partdesign-dressup-oracle.mjs @@ -0,0 +1,37 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const oracle = await load('config/freecad-partdesign-dressup-oracle.json') +if (oracle.schemaVersion !== 1 || oracle.baselineId !== 'freecad-1.1.1-partdesign-dressup-oracle' || oracle.freecadVersion !== '1.1.1' || oracle.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || oracle.status !== 'pass' || oracle.tolerance !== 1e-7 || oracle.summary?.cases !== 4 || oracle.summary?.passed !== 4) throw new Error('FreeCAD PartDesign dress-up oracle baseline is invalid.') +const expectedTypes = new Map([ + ['fillet-selected-edge', { typeId: 'PartDesign::Fillet', volume: 997.8539816339743 }], + ['chamfer-selected-edge', { typeId: 'PartDesign::Chamfer', volume: 995 }], + ['draft-selected-face', { typeId: 'PartDesign::Draft', volume: 1500 }], + ['thickness-selected-face', { typeId: 'PartDesign::Thickness', volume: 424 }], +]) +for (const [id, expectation] of expectedTypes) { + const fixture = oracle.cases?.find((entry) => entry.id === id) + if (!fixture || fixture.typeId !== expectation.typeId || fixture.passed !== true || fixture.status !== 'Valid' || fixture.solids !== 1 || Math.abs(fixture.volume - expectation.volume) > oracle.tolerance || fixture.selection?.length !== 1) throw new Error(`FreeCAD PartDesign dress-up fixture ${id} is invalid.`) +} +const thickness = oracle.cases.find((entry) => entry.id === 'thickness-selected-face') +if (thickness.faces !== 11 || thickness.elementMapSize !== 51 || thickness.reversed !== true) throw new Error('FreeCAD PartDesign Thickness topology evidence is invalid.') + +const chrome = await load('config/chrome-partdesign-transform-verification.json') +const dressupOperations = chrome.operations?.slice(1, 5) +if (chrome.status !== 'pass' || JSON.stringify(dressupOperations?.map((entry) => entry.command)) !== JSON.stringify(['fillet', 'chamfer', 'draft', 'thickness']) || dressupOperations.some((entry) => entry.recompute !== 'completed' || !entry.shapeId || !(entry.volume > 0)) || chrome.topologyMigration?.wrongBindings !== 0 || chrome.topologyMigration?.stable < 1 || chrome.topologyMigration?.ambiguous < 1 || chrome.topologyMigration?.ambiguityDiagnostics !== chrome.topologyMigration?.ambiguous || chrome.ambiguityRecovery?.code !== 'DRESSUP_EDGE_REFERENCE_UNRESOLVED' || chrome.ambiguityRecovery?.retainedShapeId !== chrome.ambiguityRecovery?.previousShapeId || chrome.afterRelease?.shapeCount !== 0 || chrome.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome PartDesign dress-up topology lifecycle evidence is invalid.') + +const nativePaths = new Map([ + ['fillet', 'config/chrome-native-fillet-history-verification.json'], + ['chamfer', 'config/chrome-native-chamfer-history-verification.json'], + ['draft', 'config/chrome-native-draft-history-verification.json'], + ['thickness', 'config/chrome-native-thickness-history-verification.json'], +]) +const nativeHistory = {} +for (const [operation, path] of nativePaths) { + const report = await load(path) + if (report.status !== 'pass' || report.nativeCapabilities?.operations?.includes(operation) !== true || report.history?.recordCount < 1 || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error(`Chrome native ${operation} history evidence is invalid.`) + nativeHistory[operation] = report.history.recordCount +} +console.log(JSON.stringify({ status: 'freecad-partdesign-dressup-oracle-pass', baselineId: oracle.baselineId, summary: oracle.summary, topologyMigration: chrome.topologyMigration, nativeHistory }, null, 2)) diff --git a/scripts/check-freecad-partdesign-failure-oracle.mjs b/scripts/check-freecad-partdesign-failure-oracle.mjs new file mode 100644 index 0000000..7266b37 --- /dev/null +++ b/scripts/check-freecad-partdesign-failure-oracle.mjs @@ -0,0 +1,24 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-partdesign-failure-oracle.json'), 'utf8')) +const expected = [ + 'PartDesign::Pad', 'PartDesign::Pocket', 'PartDesign::Revolution', 'PartDesign::Groove', + 'PartDesign::AdditiveLoft', 'PartDesign::SubtractiveLoft', 'PartDesign::AdditivePipe', 'PartDesign::SubtractivePipe', + 'PartDesign::Fillet', 'PartDesign::Chamfer', 'PartDesign::Draft', 'PartDesign::Thickness', + 'PartDesign::Mirrored', 'PartDesign::MultiTransform', 'PartDesign::LinearPattern', 'PartDesign::PolarPattern', 'PartDesign::Hole', +] +const acceptedEmpty = new Set(['PartDesign::Mirrored', 'PartDesign::MultiTransform', 'PartDesign::LinearPattern', 'PartDesign::PolarPattern']) +const fail = (message) => { throw new Error(`FreeCAD PartDesign failure oracle: ${message}`) } +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1-partdesign-failure-oracle' || report.freecadVersion !== '1.1.1' || report.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || report.status !== 'pass') fail('baseline or status is invalid.') +if (report.summary?.cases !== expected.length || report.summary.passed !== expected.length || report.summary.rejected !== expected.length - acceptedEmpty.size || report.summary.acceptedEmpty !== acceptedEmpty.size || report.summary.accepted !== 0 || !Array.isArray(report.cases) || report.cases.length !== expected.length) fail('summary is incomplete.') +const actual = report.cases.map((fixture) => fixture.typeId) +if (JSON.stringify(actual) !== JSON.stringify(expected) || new Set(actual).size !== expected.length) fail('TypeId coverage is incomplete or reordered.') +for (const fixture of report.cases) { + const expectedOutcome = acceptedEmpty.has(fixture.typeId) ? 'accepted-empty' : 'rejected' + if (fixture.expected !== expectedOutcome || fixture.observed !== expectedOutcome || fixture.passed !== true || fixture.inputClass !== 'missing-required-input') fail(`${fixture.typeId} does not match its native missing-input outcome.`) + if (fixture.shapeNull !== true && typeof fixture.error !== 'string') fail(`${fixture.typeId} has neither a null Shape nor a native exception.`) + if (typeof fixture.error === 'string' && /No module named|Unknown document object type/i.test(fixture.error)) fail(`${fixture.typeId} records an unavailable module instead of feature semantics.`) +} +console.log(JSON.stringify({ status: 'freecad-partdesign-failure-oracle-pass', cases: report.summary.cases, rejected: report.summary.rejected, acceptedEmpty: report.summary.acceptedEmpty, typeIds: actual }, null, 2)) diff --git a/scripts/check-freecad-partdesign-loft-oracle.mjs b/scripts/check-freecad-partdesign-loft-oracle.mjs new file mode 100644 index 0000000..b83db57 --- /dev/null +++ b/scripts/check-freecad-partdesign-loft-oracle.mjs @@ -0,0 +1,29 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const oracle = await load('config/freecad-partdesign-loft-oracle.json') +if (oracle.schemaVersion !== 1 || oracle.baselineId !== 'freecad-1.1.1-partdesign-loft-oracle' || oracle.freecadVersion !== '1.1.1' || oracle.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || oracle.status !== 'pass' || oracle.tolerance !== 1e-7 || oracle.summary?.cases !== 4 || oracle.summary?.passed !== 4) throw new Error('FreeCAD PartDesign loft oracle baseline is invalid.') +const expected = new Map([ + ['additive-loft', { typeId: 'PartDesign::AdditiveLoft', volume: 1 }], + ['subtractive-loft', { typeId: 'PartDesign::SubtractiveLoft', volume: 1 }], + ['additive-pipe', { typeId: 'PartDesign::AdditivePipe', volume: Math.PI }], + ['subtractive-pipe', { typeId: 'PartDesign::SubtractivePipe', volume: 100 - Math.PI }], +]) +for (const [id, expectation] of expected) { + const fixture = oracle.cases?.find((entry) => entry.id === id) + if (!fixture || fixture.typeId !== expectation.typeId || fixture.passed !== true || fixture.status !== 'Valid' || fixture.solids !== 1 || Math.abs(fixture.volume - expectation.volume) > oracle.tolerance) throw new Error(`FreeCAD PartDesign fixture ${id} is invalid.`) + if (id.endsWith('-pipe') && fixture.transition !== 'Transformed') throw new Error(`FreeCAD PartDesign fixture ${id} did not use the locked Transformed transition.`) +} + +const chrome = await load('config/chrome-partdesign-loft-verification.json') +const browserOrder = ['additive-loft', 'additive-pipe', 'subtractive-loft', 'subtractive-pipe'] +if (chrome.status !== 'pass' || JSON.stringify(chrome.operations?.map((entry) => entry.command)) !== JSON.stringify(browserOrder) || chrome.operations.some((entry) => entry.recompute !== 'completed' || !entry.shapeId || !(entry.volume > 0)) || chrome.failureRecovery?.loft?.retainedShapeId !== chrome.failureRecovery?.loft?.previousShapeId || chrome.failureRecovery?.pipe?.retainedShapeId !== chrome.failureRecovery?.pipe?.previousShapeId || chrome.persistence?.reopenedTip !== chrome.operations[3].objectId || chrome.afterRelease?.shapeCount !== 0 || chrome.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome PartDesign loft/pipe lifecycle evidence is invalid.') + +const nativeLoft = await load('config/chrome-native-loft-history-verification.json') +const nativePipe = await load('config/chrome-native-pipe-history-verification.json') +if (nativeLoft.status !== 'pass' || nativeLoft.nativeCapabilities?.operations?.includes('loft') !== true || nativeLoft.history?.recordCount < 1 || nativeLoft.afterRelease?.shapeCount !== 0 || nativeLoft.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Loft history evidence is invalid.') +if (nativePipe.status !== 'pass' || nativePipe.nativeCapabilities?.operations?.includes('pipe') !== true || nativePipe.history?.recordCount < 1 || nativePipe.afterRelease?.shapeCount !== 0 || nativePipe.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome native Pipe history evidence is invalid.') + +console.log(JSON.stringify({ status: 'freecad-partdesign-loft-oracle-pass', baselineId: oracle.baselineId, summary: oracle.summary, chromeVolumes: Object.fromEntries(chrome.operations.map((entry) => [entry.command, entry.volume])), nativeHistory: { loft: nativeLoft.history.recordCount, pipe: nativePipe.history.recordCount } }, null, 2)) diff --git a/scripts/check-freecad-partdesign-profile-oracle.mjs b/scripts/check-freecad-partdesign-profile-oracle.mjs new file mode 100644 index 0000000..160711e --- /dev/null +++ b/scripts/check-freecad-partdesign-profile-oracle.mjs @@ -0,0 +1,31 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-partdesign-profile-oracle.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1-partdesign-profile-oracle' || report.freecadVersion !== '1.1.1' || report.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || report.status !== 'pass' || report.length !== 10 || report.tolerance !== 1e-7) throw new Error('FreeCAD PartDesign profile oracle baseline is invalid.') +if (report.summary?.cases !== 5 || report.summary?.passed !== 5 || report.summary?.accepted !== 4 || report.summary?.rejected !== 1) throw new Error('FreeCAD PartDesign profile oracle summary is incomplete.') +const expected = new Map([ + ['closed', 'accepted'], + ['multi-ring', 'accepted'], + ['open', 'rejected'], + ['self-intersecting', 'accepted'], + ['invalid-nesting', 'accepted'], +]) +for (const [id, observation] of expected) { + const fixture = report.cases?.find((entry) => entry.id === id) + if (!fixture || fixture.expected !== observation || fixture.observed !== observation || fixture.passed !== true) throw new Error(`FreeCAD PartDesign profile fixture ${id} is invalid.`) + if (observation === 'accepted' && (fixture.shapeNull !== false || fixture.solidCount < 1 || !Number.isFinite(fixture.volume) || fixture.volume <= 0)) throw new Error(`FreeCAD PartDesign accepted profile ${id} has no valid solid.`) +} +const closed = report.cases.find((entry) => entry.id === 'closed') +const multiRing = report.cases.find((entry) => entry.id === 'multi-ring') +const selfIntersecting = report.cases.find((entry) => entry.id === 'self-intersecting') +const invalidNesting = report.cases.find((entry) => entry.id === 'invalid-nesting') +if (Math.abs(closed.volume - 360) > report.tolerance || Math.abs(multiRing.volume - 320) > report.tolerance || Math.abs(selfIntersecting.volume - 80) > report.tolerance || Math.abs(invalidNesting.volume - 370) > report.tolerance || selfIntersecting.solidCount !== 2 || invalidNesting.solidCount !== 2) throw new Error('FreeCAD PartDesign accepted profile geometry does not match the locked oracle.') + +const chrome = JSON.parse(await readFile(resolve(root, 'config/chrome-profile-validation-verification.json'), 'utf8')) +const profiles = chrome.partDesignProfiles ?? {} +if (chrome.status !== 'pass' || profiles.closed?.code !== null || profiles.multiRing?.code !== null || profiles.open?.code !== 'PROFILE_OPEN' || profiles.selfIntersecting?.code !== null || profiles.invalidNesting?.code !== null) throw new Error('Chrome PartDesign profile results do not match the FreeCAD acceptance matrix.') +const geometry = chrome.partDesignGeometry ?? {} +if (Math.abs(geometry.closed?.volume - closed.volume) > report.tolerance || geometry.closed?.solids !== closed.solidCount || Math.abs(geometry.multiRing?.volume - multiRing.volume) > report.tolerance || geometry.multiRing?.solids !== multiRing.solidCount || Math.abs(geometry.selfIntersecting?.volume - selfIntersecting.volume) > report.tolerance || geometry.selfIntersecting?.solids !== selfIntersecting.solidCount || Math.abs(geometry.invalidNesting?.volume - invalidNesting.volume) > report.tolerance || geometry.invalidNesting?.solids !== invalidNesting.solidCount) throw new Error('Chrome PartDesign profile geometry does not match the FreeCAD oracle.') +console.log(JSON.stringify({ status: 'freecad-partdesign-profile-oracle-pass', baselineId: report.baselineId, freecadVersion: report.freecadVersion, summary: report.summary, chrome: { profiles, geometry } }, null, 2)) diff --git a/scripts/check-freecad-partdesign-revolution-groove-oracle.mjs b/scripts/check-freecad-partdesign-revolution-groove-oracle.mjs new file mode 100644 index 0000000..cf166e0 --- /dev/null +++ b/scripts/check-freecad-partdesign-revolution-groove-oracle.mjs @@ -0,0 +1,9 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-partdesign-revolution-groove-oracle.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD PartDesign Revolution/Groove oracle: ${message}`) } +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1-partdesign-revolution-groove-oracle' || report.freecadVersion !== '1.1.1' || report.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || report.status !== 'pass' || report.summary?.cases !== 2 || report.summary?.passed !== 2 || !Array.isArray(report.cases) || report.cases.length !== 2) fail('baseline or summary is invalid.') +for (const fixture of report.cases) if (!['partdesign-revolution', 'partdesign-groove'].includes(fixture.id) || fixture.passed !== true || fixture.shapeNull !== false || fixture.shapeValid !== true || fixture.solids !== 1 || !(fixture.volume > 0)) fail(`${fixture.id} is not a valid native success fixture.`) +console.log(JSON.stringify({ status: 'freecad-partdesign-revolution-groove-oracle-pass', cases: report.summary.cases, volumes: Object.fromEntries(report.cases.map((fixture) => [fixture.operation, fixture.volume])) }, null, 2)) diff --git a/scripts/check-freecad-partdesign-transform-oracle.mjs b/scripts/check-freecad-partdesign-transform-oracle.mjs new file mode 100644 index 0000000..3dc80bc --- /dev/null +++ b/scripts/check-freecad-partdesign-transform-oracle.mjs @@ -0,0 +1,57 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const oracle = await load('config/freecad-partdesign-transform-oracle.json') +if (oracle.schemaVersion !== 1 || oracle.baselineId !== 'freecad-1.1.1-partdesign-transform-oracle' || oracle.freecadVersion !== '1.1.1' || oracle.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || oracle.status !== 'pass' || oracle.tolerance !== 1e-7 || oracle.summary?.cases !== 10 || oracle.summary?.passed !== 10 || oracle.summary.successCases !== 6 || oracle.summary.successPassed !== 6 || oracle.summary.failureCases !== 4 || oracle.summary.failurePassed !== 4 || oracle.summary.rejected !== 4 || oracle.summary.acceptedEmpty !== 0) throw new Error('FreeCAD PartDesign transform oracle baseline is invalid.') + +const byId = new Map(oracle.cases?.map((entry) => [entry.id, entry]) ?? []) +const linear = byId.get('linear-feature-list') +if (!linear || linear.typeId !== 'PartDesign::LinearPattern' || linear.transformMode !== 'Features' || JSON.stringify(linear.originals) !== JSON.stringify(['Boss']) || linear.direction !== 'X_Axis' || linear.occurrences !== 3 || linear.length !== 12 || linear.solids !== 1 || linear.status !== 'Valid' || Math.abs(linear.volume - 423.99999999999994) > oracle.tolerance) throw new Error('FreeCAD Feature-list LinearPattern evidence is invalid.') +const mirrored = byId.get('mirrored-feature-list') +if (!mirrored || mirrored.typeId !== 'PartDesign::Mirrored' || mirrored.transformMode !== 'Features' || JSON.stringify(mirrored.originals) !== JSON.stringify(['Boss']) || mirrored.plane !== 'YZ_Plane' || mirrored.solids !== 1 || mirrored.status !== 'Valid' || Math.abs(mirrored.volume - 416.00000000000006) > oracle.tolerance) throw new Error('FreeCAD Feature-list Mirrored evidence is invalid.') +const polar = byId.get('polar-feature-list') +if (!polar || polar.typeId !== 'PartDesign::PolarPattern' || polar.transformMode !== 'Features' || JSON.stringify(polar.originals) !== JSON.stringify(['Box']) || polar.axis !== 'X_Axis' || polar.angle !== 360 || polar.occurrences !== 4 || polar.solids !== 1 || polar.status !== 'Valid' || Math.abs(polar.volume - 4000) > oracle.tolerance) throw new Error('FreeCAD Feature-list PolarPattern evidence is invalid.') +const multi = byId.get('multi-transform-feature-list') +if (!multi || multi.typeId !== 'PartDesign::MultiTransform' || multi.transformMode !== 'Features' || JSON.stringify(multi.originals) !== JSON.stringify(['Pad']) || JSON.stringify(multi.transformations) !== JSON.stringify(['PartDesign::Mirrored', 'PartDesign::LinearPattern', 'PartDesign::PolarPattern']) || multi.solids !== 1 || multi.status !== 'Valid' || Math.abs(multi.volume - 20000) > oracle.tolerance) throw new Error('FreeCAD Feature-list MultiTransform evidence is invalid.') + +const expectedFailures = new Map([ + ['PartDesign::Mirrored', { id: 'mirrored-missing-reference', status: 'No mirror plane reference specified', shapeNull: true, staleShapePreserved: false }], + ['PartDesign::MultiTransform', { id: 'multitransform-missing-reference', status: 'Shape index 999 out of bound 12', shapeNull: false, staleShapePreserved: true }], + ['PartDesign::LinearPattern', { id: 'linearpattern-missing-reference', status: 'Shape index 999 out of bound 12', shapeNull: true, staleShapePreserved: false }], + ['PartDesign::PolarPattern', { id: 'polarpattern-missing-reference', status: 'No axis reference specified', shapeNull: true, staleShapePreserved: false }], +]) +for (const [typeId, expected] of expectedFailures) { + const fixture = oracle.cases.find((entry) => entry.typeId === typeId && entry.expected === 'rejected') + if (!fixture || fixture.id !== expected.id || fixture.inputClass !== 'valid-original-missing-transform-reference' || fixture.observed !== 'rejected' || fixture.passed !== true || fixture.status !== expected.status || fixture.shapeNull !== expected.shapeNull || fixture.staleShapePreserved !== expected.staleShapePreserved || !fixture.state?.includes('Invalid') || JSON.stringify(fixture.originals) !== JSON.stringify(['Boss'])) throw new Error(`FreeCAD ${typeId} rejected transform evidence is invalid.`) +} +if (JSON.stringify(byId.get('multitransform-missing-reference')?.transformations) !== JSON.stringify(['PartDesign::LinearPattern'])) throw new Error('FreeCAD MultiTransform rejected child evidence is invalid.') + +const tap = byId.get('iso-m6-tap-drill') +const modeled = byId.get('iso-m6-modeled-thread') +for (const fixture of [tap, modeled]) { + if (!fixture || fixture.typeId !== 'PartDesign::Hole' || fixture.threaded !== true || fixture.threadType !== 'ISOMetricProfile' || fixture.threadSize !== 'M6x1.0' || fixture.threadDiameter !== 6 || fixture.threadPitch !== 1 || fixture.threadDepthType !== 'Dimension' || fixture.threadDepth !== 6 || fixture.solids !== 1 || fixture.status !== 'Valid' || fixture.properties?.includes('ThreadPitch')) throw new Error(`FreeCAD ISO M6 Hole evidence is invalid: ${fixture?.id ?? 'missing'}.`) +} +if (tap.modeled !== false || tap.threadDirection !== 'Right' || Math.abs(tap.diameter - 5) > oracle.tolerance || Math.abs(tap.volume - 3842.92036732051) > oracle.tolerance) throw new Error('FreeCAD ISO M6 tap-drill evidence is invalid.') +if (modeled.modeled !== true || modeled.threadDirection !== 'Left' || Math.abs(modeled.diameter - 5.026) > oracle.tolerance || Math.abs(modeled.volume - 3820.1907618181585) > oracle.tolerance || modeled.faces <= tap.faces || modeled.edges <= tap.edges || !(modeled.volume < tap.volume)) throw new Error('FreeCAD ISO M6 modeled-thread evidence is invalid.') + +const chrome = await load('config/chrome-partdesign-transform-verification.json') +const featureTransforms = chrome.operations?.filter((entry) => entry.transformMode === 'Features') ?? [] +const threadedHoles = chrome.operations?.filter((entry) => entry.command === 'hole' && entry.threaded === true) ?? [] +if (chrome.status !== 'pass' || chrome.operations?.length !== 14 || chrome.operations.some((entry) => entry.solids !== 1 || !(entry.volume > 0)) || featureTransforms.length !== 2 || featureTransforms.some((entry) => entry.originals?.length !== 1) || threadedHoles.length !== 2 || threadedHoles[0].modelThread !== false || threadedHoles[1].modelThread !== true || threadedHoles[1].threadDirection !== 'Left' || chrome.afterRelease?.shapeCount !== 0 || chrome.afterRelease?.kernelReferenceCount !== 0) throw new Error('Chrome PartDesign transform/thread evidence is invalid.') + +const nativePaths = new Map([ + ['linear-pattern', 'config/chrome-native-linear-pattern-history-verification.json'], + ['polar-pattern', 'config/chrome-native-polar-pattern-history-verification.json'], + ['mirrored', 'config/chrome-native-mirrored-history-verification.json'], + ['multi-transform', 'config/chrome-native-multi-transform-history-verification.json'], +]) +const nativeHistory = {} +for (const [operation, path] of nativePaths) { + const report = await load(path) + if (report.status !== 'pass' || report.nativeCapabilities?.operations?.includes(operation) !== true || report.history?.recordCount < 1 || report.afterRelease?.shapeCount !== 0 || report.afterRelease?.kernelReferenceCount !== 0) throw new Error(`Chrome native ${operation} history evidence is invalid.`) + nativeHistory[operation] = report.history.recordCount +} + +console.log(JSON.stringify({ status: 'freecad-partdesign-transform-oracle-pass', baselineId: oracle.baselineId, summary: oracle.summary, featureTransforms: featureTransforms.map((entry) => ({ command: entry.command, originals: entry.originals, volume: entry.volume })), threadedHoles: threadedHoles.map((entry) => ({ size: entry.threadSize, modeled: entry.modelThread, direction: entry.threadDirection, volume: entry.volume })), nativeHistory }, null, 2)) diff --git a/scripts/check-freecad-semantic-comparator.mjs b/scripts/check-freecad-semantic-comparator.mjs new file mode 100644 index 0000000..46e1636 --- /dev/null +++ b/scripts/check-freecad-semantic-comparator.mjs @@ -0,0 +1,15 @@ +import { loadGoldenManifest } from './freecad-golden-contract.mjs' +import { compareSemanticResult } from './freecad-semantic-comparator.mjs' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const manifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/manifest.json')) +for (const entry of manifest.scenarios) { + const report = compareSemanticResult(entry.scenario, entry.scenario.expected) + if (report.status !== 'pass' || report.differences.length) throw new Error(`Semantic comparator self-check failed for ${entry.id}.`) + const drift = structuredClone(entry.scenario.expected) + drift.volume += entry.scenario.tolerance.scalar * 2 + const driftReport = compareSemanticResult(entry.scenario, drift) + if (driftReport.status !== 'fail-unknown-difference' || !driftReport.differences.some((difference) => difference.path.endsWith('.volume') && difference.classification === 'unknown')) throw new Error(`Semantic comparator drift check failed for ${entry.id}.`) +} +console.log(JSON.stringify({ status: 'freecad-semantic-comparator-pass', scenarioCount: manifest.scenarios.length, reportSchemaVersion: 1, unknownDifferencesFail: true }, null, 2)) diff --git a/scripts/check-freecad-sketcher-constraint-oracle.mjs b/scripts/check-freecad-sketcher-constraint-oracle.mjs new file mode 100644 index 0000000..3c5be64 --- /dev/null +++ b/scripts/check-freecad-sketcher-constraint-oracle.mjs @@ -0,0 +1,22 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-sketcher-constraint-oracle.json'), 'utf8')) +const expectedTypes = ['Coincident', 'Horizontal', 'Vertical', 'Parallel', 'Tangent', 'Distance', 'DistanceX', 'DistanceY', 'Angle', 'Perpendicular', 'Radius', 'Equal', 'PointOnObject', 'Symmetric', 'InternalAlignment', 'SnellsLaw', 'Block', 'Diameter', 'Weight'] +if (report.schemaVersion !== 1 || report.baselineId !== 'freecad-1.1.1-sketcher-constraint-oracle' || report.freecadVersion !== '1.1.1' || report.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || report.status !== 'pass' || report.tolerance !== 1e-7) throw new Error('FreeCAD Sketcher constraint oracle baseline is invalid.') +if (report.summary?.constraintTypes !== expectedTypes.length || report.summary?.successCases !== expectedTypes.length || report.summary?.successPassed !== expectedTypes.length || report.summary?.failureCases !== expectedTypes.length || report.summary?.failurePassed !== expectedTypes.length) throw new Error('FreeCAD Sketcher constraint oracle summary is incomplete.') +for (const constraintType of expectedTypes) { + const success = report.successCases?.find((entry) => entry.constraintType === constraintType) + const failure = report.failureCases?.find((entry) => entry.constraintType === constraintType) + if (!success || success.expected !== 'success' || success.observed !== 'success' || success.solveStatus !== 0 || !Number.isFinite(success.degreesOfFreedom) || !Number.isFinite(success.residual) || Math.abs(success.residual) > report.tolerance || success.conflicting?.length || success.redundant?.length || success.malformed?.length) throw new Error(`FreeCAD Sketcher ${constraintType} success fixture is invalid.`) + if (!failure || failure.expected !== 'failure' || failure.observed !== 'failure') throw new Error(`FreeCAD Sketcher ${constraintType} failure fixture is invalid.`) +} +const reference = report.classificationCases?.find((entry) => entry.id === 'reference-dimension') +const redundant = report.classificationCases?.find((entry) => entry.id === 'redundant-dimension') +const conflicting = report.classificationCases?.find((entry) => entry.id === 'conflicting-dimension') +if (report.summary?.classificationCases !== 3 || report.summary?.classificationPassed !== 3) throw new Error('FreeCAD Sketcher classification oracle summary is incomplete.') +if (reference?.observed !== 'reference' || reference?.solveStatus !== 0 || reference?.degreesOfFreedom !== 3 || reference?.driving !== false || !Number.isFinite(reference?.measuredValue) || Math.abs(reference.measuredValue - reference.inputValue) <= report.tolerance || reference?.conflicting?.length || reference?.redundant?.length || reference?.malformed?.length) throw new Error('FreeCAD Sketcher reference dimension classification is invalid.') +if (redundant?.observed !== 'redundant' || redundant?.solveStatus !== -2 || redundant?.degreesOfFreedom !== 3 || JSON.stringify(redundant?.redundant) !== '[2]' || redundant?.conflicting?.length || redundant?.malformed?.length) throw new Error('FreeCAD Sketcher redundant dimension classification is invalid.') +if (conflicting?.observed !== 'conflicting' || conflicting?.solveStatus !== -3 || conflicting?.degreesOfFreedom !== 3 || JSON.stringify(conflicting?.conflicting) !== '[1,2]' || conflicting?.redundant?.length || conflicting?.malformed?.length) throw new Error('FreeCAD Sketcher conflicting dimension classification is invalid.') +console.log(JSON.stringify({ status: 'freecad-sketcher-constraint-oracle-pass', baselineId: report.baselineId, freecadVersion: report.freecadVersion, gitCommit: report.gitCommit, summary: report.summary }, null, 2)) diff --git a/scripts/check-freecad-sketcher-editor-oracle.mjs b/scripts/check-freecad-sketcher-editor-oracle.mjs new file mode 100644 index 0000000..55b1298 --- /dev/null +++ b/scripts/check-freecad-sketcher-editor-oracle.mjs @@ -0,0 +1,35 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const oracle = JSON.parse(await readFile(resolve(root, 'config/freecad-sketcher-editor-oracle.json'), 'utf8')) +if (oracle.schemaVersion !== 1 || oracle.baselineId !== 'freecad-1.1.1-sketcher-editor-oracle' || oracle.freecadVersion !== '1.1.1' || oracle.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || oracle.tolerance !== 1e-7 || oracle.status !== 'pass' || oracle.summary?.cases !== 7 || oracle.summary?.passed !== 7) throw new Error('FreeCAD Sketcher editor oracle baseline is invalid.') +const fixture = (id) => { + const result = oracle.cases?.find((entry) => entry.id === id) + if (!result?.passed) throw new Error(`FreeCAD Sketcher editor fixture ${id} is missing or failed.`) + return result +} +const pointMatches = (actual, expected) => Array.isArray(actual) && actual.length === 2 && Math.abs(actual[0] - expected[0]) <= oracle.tolerance && Math.abs(actual[1] - expected[1]) <= oracle.tolerance +const drag = fixture('drag-horizontal') +if (drag.solveStatus !== 0 || !pointMatches(drag.final.geometry?.[0]?.start, [0, 2]) || !pointMatches(drag.final.geometry?.[0]?.end, [8, 2]) || JSON.stringify(drag.final.constraintTypes) !== '["Horizontal"]') throw new Error('FreeCAD Sketcher drag fixture is invalid.') +const split = fixture('split-line') +if (split.final.geometry?.length !== 2 || !pointMatches(split.final.geometry[0].end, [4, 0]) || !pointMatches(split.final.geometry[1].start, [4, 0]) || JSON.stringify(split.final.construction) !== '[true,true]' || JSON.stringify(split.final.constraintTypes) !== '["Coincident"]') throw new Error('FreeCAD Sketcher split fixture is invalid.') +const extend = fixture('extend-line') +if (!pointMatches(extend.final.geometry?.[0]?.end, [15, 0])) throw new Error('FreeCAD Sketcher extend fixture is invalid.') +const trim = fixture('trim-at-intersection') +if (!pointMatches(trim.final.geometry?.[0]?.end, [7, 0]) || JSON.stringify(trim.final.constraintTypes) !== '["PointOnObject"]') throw new Error('FreeCAD Sketcher trim fixture is invalid.') +const construction = fixture('toggle-construction') +if (JSON.stringify(construction.final.construction) !== '[true]') throw new Error('FreeCAD Sketcher construction fixture is invalid.') +const transaction = fixture('transaction-undo-redo') +if (!pointMatches(transaction.committedEnd, [8, 0]) || !pointMatches(transaction.undoneEnd, [5, 0]) || !pointMatches(transaction.redoneEnd, [8, 0])) throw new Error('FreeCAD Sketcher transaction fixture is invalid.') +const autoConstraint = fixture('auto-constraint') +if (autoConstraint.solveStatus !== 0 || JSON.stringify(autoConstraint.final.constraintTypes) !== '["Coincident","Horizontal"]' || !pointMatches(autoConstraint.final.geometry?.[0]?.end, [5, 0]) || !pointMatches(autoConstraint.final.geometry?.[1]?.start, [5, 0])) throw new Error('FreeCAD Sketcher autoconstraint fixture is invalid.') + +const chrome = JSON.parse(await readFile(resolve(root, 'config/chrome-sketcher-editor-verification.json'), 'utf8')) +const operations = chrome.operations ?? {} +const interactions = chrome.interactions ?? {} +if (chrome.status !== 'pass' || operations.drag?.start?.x !== drag.final.geometry[0].start[0] || operations.drag?.start?.y !== drag.final.geometry[0].start[1] || operations.drag?.end?.x !== drag.final.geometry[0].end[0] || operations.drag?.end?.y !== drag.final.geometry[0].end[1]) throw new Error('Chrome drag result does not match FreeCAD.') +if (JSON.stringify(operations.split?.constraintTypes) !== '["coincident"]' || operations.split?.endpoints?.[0]?.[1]?.x !== split.final.geometry[0].end[0] || operations.split?.endpoints?.[1]?.[0]?.x !== split.final.geometry[1].start[0]) throw new Error('Chrome split result does not match FreeCAD.') +if (operations.extend?.end?.x !== extend.final.geometry[0].end[0] || operations.trim?.end?.x !== trim.final.geometry[0].end[0] || JSON.stringify(operations.trim?.constraintTypes) !== '["pointOnObject"]' || operations.construction?.enabled !== true) throw new Error('Chrome edit results do not match FreeCAD.') +if (JSON.stringify(operations.autoConstraint?.suggestionReasons) !== '["coincident","horizontal"]' || interactions.end?.x !== transaction.redoneEnd[0] || interactions.nativeEvents?.pointer < 2 || interactions.nativeEvents?.keyboard < 3 || interactions.undone !== 1 || interactions.redone !== 1) throw new Error('Chrome task lifecycle does not match the FreeCAD oracle.') +console.log(JSON.stringify({ status: 'freecad-sketcher-editor-oracle-pass', baselineId: oracle.baselineId, freecadVersion: oracle.freecadVersion, summary: oracle.summary, chrome: { operations: Object.keys(operations), interactions } }, null, 2)) diff --git a/scripts/check-freecad-source-inventory.mjs b/scripts/check-freecad-source-inventory.mjs new file mode 100644 index 0000000..5997796 --- /dev/null +++ b/scripts/check-freecad-source-inventory.mjs @@ -0,0 +1,33 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const inventory = JSON.parse(await readFile(resolve(root, 'config/freecad-source-inventory.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD source inventory: ${message}`) } +if (inventory.schemaVersion !== 1) fail('unsupported schemaVersion.') +if (inventory.baseline?.freecadVersion !== '1.1.1' || inventory.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('baseline mismatch.') +if (inventory.moduleCount !== 34 || !Array.isArray(inventory.modules) || inventory.modules.length !== 34) fail('expected exactly 34 modules.') +const names = new Set() +for (const module of inventory.modules) { + if (!module.name || names.has(module.name)) fail(`duplicate or empty module '${module.name}'.`) + names.add(module.name) + for (const field of ['sourcePath', 'cmakeOption', 'runtimeStatus']) if (typeof module[field] !== 'string' || !module[field]) fail(`${module.name}.${field} is missing.`) + if (!Array.isArray(module.commandIds)) fail(`${module.name}.commandIds must be an array.`) + if (module.commandIds.some((command) => typeof command !== 'string' || !command)) fail(`${module.name} has an invalid command ID.`) +} +const sourceRoot = process.env.FREECAD_SOURCE_DIR + ? resolve(process.env.FREECAD_SOURCE_DIR) + : resolve(root, inventory.baseline.sourcePath || '.cache/freecad/FreeCAD') +const sourceMod = resolve(sourceRoot, 'src/Mod') +let sourceAvailable = false +try { + const entries = await import('node:fs/promises').then(({ readdir }) => readdir(sourceMod, { withFileTypes: true })) + const sourceNames = new Set(entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name)) + sourceAvailable = true + if (sourceNames.size !== names.size || [...sourceNames].some((name) => !names.has(name))) fail('tracked inventory differs from the available source checkout.') +} catch (error) { + if (error?.code !== 'ENOENT') throw error +} +console.log(JSON.stringify({ status: 'source-inventory-pass', moduleCount: inventory.moduleCount, commandCount: inventory.modules.reduce((total, module) => total + module.commandIds.length, 0), sourceAvailable }, null, 2)) + +function joinRoot(path) { return resolve(root, path) } diff --git a/scripts/check-freecad-threeway.mjs b/scripts/check-freecad-threeway.mjs new file mode 100644 index 0000000..0d5cce4 --- /dev/null +++ b/scripts/check-freecad-threeway.mjs @@ -0,0 +1,11 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/freecad-bitbybit-native-threeway.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.unknownDifferencesFail !== true || report.scenarioCount !== 26 || !Array.isArray(report.reports)) throw new Error('Three-way Boolean report schema is invalid.') +for (const entry of report.reports) { + if (entry.bitbybit.differences.differences.length || entry.native.differences.differences.length) throw new Error(`Unknown three-way Boolean difference in ${entry.id}.`) + if (!Number.isInteger(entry.native.historyRecordCount) || entry.native.historyRecordCount <= 0) throw new Error(`Missing native history records in ${entry.id}.`) +} +console.log(JSON.stringify({ status: 'freecad-threeway-pass', scenarioCount: report.scenarioCount, nativeOcctVersion: report.nativeOcctVersion }, null, 2)) diff --git a/scripts/check-freecad-type-property-inventory.mjs b/scripts/check-freecad-type-property-inventory.mjs new file mode 100644 index 0000000..71321b1 --- /dev/null +++ b/scripts/check-freecad-type-property-inventory.mjs @@ -0,0 +1,32 @@ +import { readFile, readdir } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const inventory = JSON.parse(await readFile(resolve(root, 'config/freecad-type-property-inventory.json'), 'utf8')) +const fail = (message) => { throw new Error(`FreeCAD TypeId/property inventory: ${message}`) } +if (inventory.schemaVersion !== 1) fail('unsupported schemaVersion.') +if (inventory.baseline?.freecadVersion !== '1.1.1' || inventory.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('baseline mismatch.') +if (inventory.moduleCount !== 34 || !Array.isArray(inventory.modules) || inventory.modules.length !== 34) fail('expected exactly 34 modules.') +const names = new Set() +for (const module of inventory.modules) { + if (!module.name || names.has(module.name)) fail(`duplicate or empty module '${module.name}'.`) + names.add(module.name) + if (!Array.isArray(module.objects)) fail(`${module.name}.objects must be an array.`) + for (const object of module.objects) { + if (typeof object.sourceFile !== 'string' || !object.sourceFile.startsWith('src/Mod/')) fail(`${module.name} has an invalid sourceFile.`) + for (const field of ['classes', 'typeIdSymbols', 'propertyRegistrations', 'propertyMembers', 'pythonProperties']) if (!Array.isArray(object[field])) fail(`${module.name}/${object.sourceFile}.${field} must be an array.`) + for (const value of [...object.classes, ...object.typeIdSymbols, ...object.propertyRegistrations]) if (typeof value !== 'string' || !value) fail(`${module.name}/${object.sourceFile} contains an invalid symbol.`) + for (const value of [...object.propertyMembers, ...object.pythonProperties]) if (!value || typeof value.name !== 'string' || !value.name) fail(`${module.name}/${object.sourceFile} contains an invalid property.`) + } +} +const sourceRoot = process.env.FREECAD_SOURCE_DIR ? resolve(process.env.FREECAD_SOURCE_DIR) : resolve(root, inventory.baseline.sourcePath || '.cache/freecad/FreeCAD') +let sourceAvailable = false +try { + const entries = await readdir(resolve(sourceRoot, 'src/Mod'), { withFileTypes: true }) + const sourceNames = new Set(entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name)) + sourceAvailable = true + if (sourceNames.size !== names.size || [...sourceNames].some((name) => !names.has(name))) fail('tracked inventory differs from the available source checkout.') +} catch (error) { + if (error?.code !== 'ENOENT') throw error +} +console.log(JSON.stringify({ status: 'type-property-inventory-pass', moduleCount: inventory.moduleCount, totals: inventory.totals, sourceAvailable }, null, 2)) diff --git a/scripts/check-freecad-web-exact-parity-plan.mjs b/scripts/check-freecad-web-exact-parity-plan.mjs new file mode 100644 index 0000000..2abab8c --- /dev/null +++ b/scripts/check-freecad-web-exact-parity-plan.mjs @@ -0,0 +1,117 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = (path) => readFile(resolve(root, path), 'utf8').then(JSON.parse) +const [plan, sourceInventory, entrypointInventory, packageJson, compatibility, platformCoverage] = await Promise.all([ + load('config/freecad-web-exact-parity-plan.json'), + load('config/freecad-source-inventory.json'), + load('config/freecad-entrypoint-inventory.json'), + load('package.json'), + load('config/compatibility-matrix.json'), + load('config/platform-module-coverage.json'), +]) + +const fail = (message) => { throw new Error(`FreeCAD Web exact-parity plan: ${message}`) } +const requireText = (value, label) => { + if (typeof value !== 'string' || !value.trim()) fail(`${label} must be a non-empty string.`) +} +const requireTextList = (value, label, allowEmpty = false) => { + if (!Array.isArray(value) || (!allowEmpty && value.length === 0)) fail(`${label} must be ${allowEmpty ? 'an' : 'a non-empty'} array.`) + value.forEach((entry, index) => requireText(entry, `${label}[${index}]`)) +} + +const lockedCommit = '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' +if (plan.schemaVersion !== 1 || plan.baseline?.freecadVersion !== '1.1.1' || plan.baseline?.freecadCommit !== lockedCommit) fail('baseline is not the locked FreeCAD 1.1.1 reference.') +if (sourceInventory.baseline?.commit !== lockedCommit || entrypointInventory.baseline?.commit !== lockedCommit || platformCoverage.baseline?.commit !== lockedCommit) fail('an input inventory uses a different FreeCAD baseline.') +if (plan.claim?.exact !== false) fail('system exact must remain false while exact-parity tasks are open.') +requireText(plan.claim?.scope, 'claim.scope') +requireText(plan.claim?.reason, 'claim.reason') + +if (!Array.isArray(plan.hardBoundaries) || plan.hardBoundaries.length !== 3) fail('exactly three native-evidence hard boundaries are required.') +for (const [index, boundary] of plan.hardBoundaries.entries()) requireText(boundary, `hardBoundaries[${index}]`) +const boundaryText = plan.hardBoundaries.join(' ').toLowerCase() +for (const token of ['mappednameref', 'builder-stage', 'isomorphic']) if (!boundaryText.includes(token)) fail(`hard boundaries do not retain the ${token} rule.`) + +const expectedProgramIds = Array.from({ length: 10 }, (_, index) => `EX${String(index + 1).padStart(2, '0')}`) +if (!Array.isArray(plan.programs) || JSON.stringify(plan.programs.map((program) => program.id)) !== JSON.stringify(expectedProgramIds)) fail('programs must contain ordered EX01 through EX10.') +const taskById = new Map() +const statuses = new Set(['pending', 'in_progress', 'completed', 'blocked']) +const priorities = new Set(['P0', 'P1', 'P2']) +for (const program of plan.programs) { + requireText(program.title, `${program.id}.title`) + if (!Array.isArray(program.tasks) || program.tasks.length === 0) fail(`${program.id}.tasks must be non-empty.`) + for (const task of program.tasks) { + requireText(task.id, `${program.id}.task.id`) + requireText(task.title, `${task.id}.title`) + if (taskById.has(task.id)) fail(`duplicate task ${task.id}.`) + if (!priorities.has(task.priority)) fail(`${task.id} has invalid priority ${task.priority}.`) + if (!statuses.has(task.status)) fail(`${task.id} has invalid status ${task.status}.`) + requireTextList(task.deliverables, `${task.id}.deliverables`) + requireTextList(task.acceptance, `${task.id}.acceptance`) + requireTextList(task.evidence, `${task.id}.evidence`) + requireTextList(task.exactBlockedBy, `${task.id}.exactBlockedBy`, task.status === 'completed') + if (!Array.isArray(task.dependencies)) fail(`${task.id}.dependencies must be an array.`) + if (task.status === 'completed' && task.exactBlockedBy.length !== 0) fail(`${task.id} is completed but still has exact blockers.`) + if (task.status !== 'completed' && task.exactBlockedBy.length === 0) fail(`${task.id} is open without an explicit exact blocker.`) + for (const evidence of task.evidence) if (!packageJson.scripts?.[evidence]) fail(`${task.id} references missing evidence script ${evidence}.`) + taskById.set(task.id, task) + } +} +if (taskById.size < 40) fail('the exact plan is not detailed enough to cover the full FreeCAD scope.') +for (const task of taskById.values()) for (const dependency of task.dependencies) if (!taskById.has(dependency)) fail(`${task.id} depends on unknown task ${dependency}.`) + +const visitState = new Map() +const visit = (taskId, chain = []) => { + if (visitState.get(taskId) === 'done') return + if (visitState.get(taskId) === 'visiting') fail(`task dependency cycle: ${[...chain, taskId].join(' -> ')}.`) + visitState.set(taskId, 'visiting') + for (const dependency of taskById.get(taskId).dependencies) visit(dependency, [...chain, taskId]) + visitState.set(taskId, 'done') +} +for (const taskId of taskById.keys()) visit(taskId) + +const validateCoverage = (actual, expected, label) => { + const actualIds = Object.keys(actual ?? {}).sort() + const expectedIds = [...expected].sort() + if (JSON.stringify(actualIds) !== JSON.stringify(expectedIds)) fail(`${label} coverage does not match the locked inventory.`) + for (const [id, taskIds] of Object.entries(actual)) { + if (!Array.isArray(taskIds) || taskIds.length === 0) fail(`${label} ${id} has no task coverage.`) + for (const taskId of taskIds) if (!taskById.has(taskId)) fail(`${label} ${id} references unknown task ${taskId}.`) + } +} +validateCoverage(plan.moduleCoverage, sourceInventory.modules.map((module) => module.name), 'module') +validateCoverage(plan.entrypointCoverage?.formats, entrypointInventory.formats.map((format) => format.id), 'format') +validateCoverage(plan.entrypointCoverage?.entrypoints, entrypointInventory.entrypoints.map((entrypoint) => entrypoint.id), 'entrypoint') + +const finalTask = taskById.get(plan.promotionGate?.finalTask) +if (!finalTask || finalTask.id !== 'EX-REL-01' || finalTask.status === 'completed') fail('EX-REL-01 must remain open until all exact tasks close.') +if (plan.promotionGate?.requiredExactModules !== sourceInventory.modules.length) fail('promotion gate must require every locked module to be exact.') +requireTextList(plan.promotionGate?.requiredZeroMetrics, 'promotionGate.requiredZeroMetrics') +requireTextList(plan.promotionGate?.requiredEvidenceClasses, 'promotionGate.requiredEvidenceClasses') +if (new Set(plan.promotionGate.requiredZeroMetrics).size !== plan.promotionGate.requiredZeroMetrics.length) fail('promotion metrics must be unique.') +if (new Set(plan.promotionGate.requiredEvidenceClasses).size !== plan.promotionGate.requiredEvidenceClasses.length) fail('promotion evidence classes must be unique.') + +const systemEvaluation = compatibility.systemExactEvaluation +if (systemEvaluation?.exact !== false || systemEvaluation?.featureExactCount !== 0 || !Array.isArray(systemEvaluation.blockers) || systemEvaluation.blockers.length !== 3) fail('compatibility matrix must retain the current non-exact evaluation and three native blockers.') +if (platformCoverage.modules.some((module) => module.level === 'exact')) fail('platform coverage cannot contain exact modules before their exact tasks complete.') + +const tasks = [...taskById.values()] +const statusCounts = Object.fromEntries([...statuses].map((status) => [status, tasks.filter((task) => task.status === status).length])) +const priorityCounts = Object.fromEntries([...priorities].map((priority) => [priority, tasks.filter((task) => task.priority === priority).length])) +const matrixTaskStatus = systemEvaluation.taskStatus +if (systemEvaluation.plan !== 'config/freecad-web-exact-parity-plan.json' || systemEvaluation.promotionTask !== finalTask.id) fail('compatibility matrix does not point at the exact-parity plan and final promotion task.') +if (matrixTaskStatus?.completed !== statusCounts.completed || matrixTaskStatus?.inProgress !== statusCounts.in_progress || matrixTaskStatus?.pending !== statusCounts.pending || matrixTaskStatus?.blocked !== statusCounts.blocked) fail('compatibility matrix exact task counts are stale.') +console.log(JSON.stringify({ + status: 'freecad-web-exact-parity-plan-pass', + systemExact: false, + programs: plan.programs.length, + tasks: tasks.length, + statusCounts, + priorityCounts, + modules: Object.keys(plan.moduleCoverage).length, + formats: Object.keys(plan.entrypointCoverage.formats).length, + entrypoints: Object.keys(plan.entrypointCoverage.entrypoints).length, + hardBoundaries: plan.hardBoundaries.length, + finalGate: finalTask.status, +}, null, 2)) diff --git a/scripts/check-freecad-web-exact-promotion.mjs b/scripts/check-freecad-web-exact-promotion.mjs new file mode 100644 index 0000000..9dc0b6a --- /dev/null +++ b/scripts/check-freecad-web-exact-promotion.mjs @@ -0,0 +1,60 @@ +import { access, readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = (path) => readFile(resolve(root, path), 'utf8').then(JSON.parse) +const [plan, compatibility, platformCoverage, sourceInventory, reportSchema] = await Promise.all([ + load('config/freecad-web-exact-parity-plan.json'), + load('config/compatibility-matrix.json'), + load('config/platform-module-coverage.json'), + load('config/freecad-source-inventory.json'), + load('config/freecad-web-exact-promotion-report.schema.json'), +]) +const fail = (message) => { throw new Error(`FreeCAD Web exact promotion: ${message}`) } +const tasks = plan.programs.flatMap((program) => program.tasks) +const finalTask = tasks.find((task) => task.id === plan.promotionGate.finalTask) +const requiredMetrics = plan.promotionGate.requiredZeroMetrics +const requiredEvidence = plan.promotionGate.requiredEvidenceClasses +if (reportSchema.$schema !== 'https://json-schema.org/draft/2020-12/schema' || reportSchema.properties?.completedTasks?.const !== 52 || reportSchema.properties?.exactModules?.const !== 34) fail('promotion report schema is missing the locked 52/52 and 34/34 contract.') + +if (plan.claim?.exact !== true) { + if (!finalTask) fail('EX-REL-01 is missing from the exact-parity plan.') + if (finalTask?.status === 'completed') fail('EX-REL-01 cannot be completed while claim.exact is false.') + if (compatibility.systemExactEvaluation?.exact !== false) fail('compatibility matrix must remain exact=false while promotion is incomplete.') + console.log(JSON.stringify({ + status: 'freecad-web-exact-promotion-fail-closed', + systemExact: false, + finalTask: finalTask?.status ?? 'missing', + completedTasks: tasks.filter((task) => task.status === 'completed').length, + requiredTasks: tasks.length, + exactModules: platformCoverage.modules.filter((module) => module.level === 'exact').length, + requiredExactModules: plan.promotionGate.requiredExactModules, + report: 'not-required-until-EX-REL-01-is-requested', + }, null, 2)) + process.exit(0) +} + +if (!finalTask || finalTask.id !== 'EX-REL-01' || finalTask.status !== 'completed' || finalTask.exactBlockedBy.length !== 0) fail('EX-REL-01 must be completed without blockers before exact can be claimed.') +if (tasks.some((task) => task.status !== 'completed')) fail('all exact-parity tasks must be completed before promotion.') +if (compatibility.systemExactEvaluation?.exact !== true || compatibility.systemExactEvaluation.featureExactCount !== plan.promotionGate.requiredExactModules) fail('compatibility matrix exact evaluation is not fully promoted.') + +const exactModules = platformCoverage.modules.filter((module) => module.level === 'exact').map((module) => module.name).sort() +const expectedModules = sourceInventory.modules.map((module) => module.name).sort() +if (JSON.stringify(exactModules) !== JSON.stringify(expectedModules)) fail(`exact module set is incomplete: ${exactModules.length}/${expectedModules.length}.`) +if (compatibility.systemExactEvaluation.blockers?.length !== 0) fail('system exact blockers must be empty at promotion time.') + +const reportPath = 'config/freecad-web-exact-promotion-report.json' +await access(resolve(root, reportPath)).catch(() => fail(`${reportPath} is required for EX-REL-01.`)) +const report = await load(reportPath) +if (report.schemaVersion !== 1 || report.taskId !== 'EX-REL-01') fail('promotion report schema or task ID is invalid.') +if (report.completedTasks !== tasks.length || report.exactModules !== expectedModules.length) fail('promotion report does not confirm 52/52 tasks and 34/34 exact modules.') +for (const metric of requiredMetrics) if (report.metrics?.[metric] !== 0) fail(`promotion metric ${metric} must be zero.`) +for (const evidence of requiredEvidence) if (!report.evidenceClasses?.includes(evidence)) fail(`promotion report is missing evidence class ${evidence}.`) +console.log(JSON.stringify({ + status: 'freecad-web-exact-promotion-pass', + systemExact: true, + completedTasks: report.completedTasks, + exactModules: report.exactModules, + zeroMetrics: requiredMetrics, + evidenceClasses: requiredEvidence, +}, null, 2)) diff --git a/scripts/check-occt-browser-verification.mjs b/scripts/check-occt-browser-verification.mjs new file mode 100644 index 0000000..76d11a3 --- /dev/null +++ b/scripts/check-occt-browser-verification.mjs @@ -0,0 +1,26 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const report = JSON.parse(await readFile(resolve(root, 'config/occt-browser-verification.json'), 'utf8')) +if (report.schemaVersion !== 1 || report.status !== 'pass') throw new Error(`OCCT browser verification is not passing: ${report.status}`) +const browsers = report.browsers.filter((browser) => browser.status === 'pass') +if (browsers.length !== 1 || browsers[0]?.browserId !== 'chrome') throw new Error('Chrome evidence is required; other browsers are deferred.') +for (const browser of browsers) { + const result = browser.report + const opfsValid = result.opfs?.status === 'pass' && result.opfs.persistence === 'opfs' + if (!result || result.crossOriginIsolated !== true || !opfsValid || result.initialize !== '8.0.0' || result.history?.provider !== 'occt-native' || result.abort !== 'recovered' || result.crashRecovery !== 'recovered') throw new Error(`Incomplete OPFS/Worker evidence for ${browser.browserId}.`) + const requiredIterations = 1000 + const memory = result.memory + const wasmValid = memory?.wasm?.peakHeapBytes <= memory?.budgets?.wasmPeakBytes && memory.wasm.retainedBytes <= memory.budgets.wasmRetainedBytes + const browserMemoryValid = memory?.browser?.before?.bytes !== null && memory?.browser?.after?.bytes !== null && memory.browser.retainedBytes <= memory.budgets.browserRetainedBytes + const gpuValid = memory?.gpu?.created === 0 && memory.gpu.released === 0 && memory.gpu.live === memory.budgets.gpuLiveResources + const ownershipValid = memory?.ownership?.live === 0 && memory.ownership.created === memory.ownership.released + if (memory?.iterations !== requiredIterations || memory.withinBudget !== true || !wasmValid || !browserMemoryValid || !gpuValid || !ownershipValid) throw new Error(`Memory ownership or budget gate failed for ${browser.browserId}.`) +} +console.log(JSON.stringify({ + status: 'occt-browser-verification-pass', + browsers: browsers.map((browser) => browser.browserId), + stressIterations: Object.fromEntries(browsers.map((browser) => [browser.browserId, browser.report.memory.iterations])), + memoryWithinBudget: Object.fromEntries(browsers.map((browser) => [browser.browserId, browser.report.memory.withinBudget])) +}, null, 2)) diff --git a/scripts/check-occt-history-browser-artifact.mjs b/scripts/check-occt-history-browser-artifact.mjs new file mode 100644 index 0000000..b5e9034 --- /dev/null +++ b/scripts/check-occt-history-browser-artifact.mjs @@ -0,0 +1,30 @@ +import { createHash } from 'node:crypto' +import { access, readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const artifactNames = ['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'] +const distRoot = resolve(root, 'native/occt-history/dist') +const publicRoot = resolve(root, 'public/native/occt-history') +const exists = async (path) => access(path).then(() => true).catch(() => false) +const hash = (bytes) => createHash('sha256').update(bytes).digest('hex') +const distPresent = await Promise.all(artifactNames.map((name) => exists(resolve(distRoot, name)))) +const publicPresent = await Promise.all(artifactNames.map((name) => exists(resolve(publicRoot, name)))) +if (!distPresent.some(Boolean) && !publicPresent.some(Boolean)) { + console.log(JSON.stringify({ status: 'artifact-not-built', reason: 'Run ./npmw run build:occt-history when the pinned Emscripten/OCCT inputs are available.' }, null, 2)) + process.exit(0) +} +if (distPresent.some((present) => !present) || publicPresent.some((present) => !present)) throw new Error('OCCT history browser artifact is incomplete; JS and WASM must be published together.') +for (const name of artifactNames) { + const distBytes = await readFile(resolve(distRoot, name)) + const publicBytes = await readFile(resolve(publicRoot, name)) + if (hash(distBytes) !== hash(publicBytes)) throw new Error(`OCCT history ${name} differs between dist and public deployment paths.`) + if (distBytes.length === 0) throw new Error(`OCCT history ${name} is empty.`) +} +const javascript = await readFile(resolve(publicRoot, 'bitbybit-occt-history.js'), 'utf8') +if (!javascript.includes('bitbybit-occt-history.wasm') || !javascript.includes('export default')) throw new Error('OCCT history JS artifact does not expose the expected ESM factory and WASM locator.') +const workerClient = await readFile(resolve(root, 'src/facade/nativeHistoryWorkerClient.ts'), 'utf8') +if (!workerClient.includes("'/native/occt-history/bitbybit-occt-history.js'")) throw new Error('Native history Worker client URL does not match the published artifact.') +const files = [] +for (const name of artifactNames) files.push({ name, sha256: hash(await readFile(resolve(publicRoot, name))) }) +console.log(JSON.stringify({ status: 'artifact-pass', files }, null, 2)) diff --git a/scripts/check-occt-upstream-drift.mjs b/scripts/check-occt-upstream-drift.mjs new file mode 100644 index 0000000..598667d --- /dev/null +++ b/scripts/check-occt-upstream-drift.mjs @@ -0,0 +1,59 @@ +import { createHash } from 'node:crypto' +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const readBytes = (relativePath) => readFile(resolve(root, relativePath)) +const readJson = async (relativePath) => JSON.parse(await readFile(resolve(root, relativePath), 'utf8')) +const sha256 = (bytes) => createHash('sha256').update(bytes).digest('hex') +const assertEqual = (actual, expected, label) => { + if (actual !== expected) throw new Error(`${label} drifted: expected ${expected}, got ${actual}.`) +} + +const baseline = await readJson('config/occt-upstream-drift-baseline.json') +const matrix = await readJson('config/compatibility-matrix.json') +const packageJson = await readJson('node_modules/@bitbybit-dev/occt/package.json') +const goldenManifestBytes = await readBytes('fixtures/freecad-golden/manifest.json') +const goldenManifest = JSON.parse(goldenManifestBytes) +const threeWayBytes = await readBytes('config/freecad-bitbybit-native-threeway.json') +const threeWay = JSON.parse(threeWayBytes) + +if (baseline.schemaVersion !== 1) throw new Error('Unsupported OCCT upstream drift baseline schema.') +assertEqual(packageJson.version, baseline.bitbybit.version, 'Bitbybit package version') +assertEqual(matrix.bitbybitSource.commit, baseline.bitbybit.sourceCommit, 'Bitbybit source commit') +assertEqual(matrix.bitbybitSource.wasmArtifact.sha256, baseline.bitbybit.wasmSha256, 'Bitbybit declared WASM hash') +assertEqual(sha256(await readBytes(matrix.bitbybitSource.wasmArtifact.path)), baseline.bitbybit.wasmSha256, 'Bitbybit installed WASM hash') + +const declarations = await readFile(resolve(root, baseline.bitbybit.declarationPath), 'utf8') +const canonicalSurface = baseline.bitbybit.surfaceInterfaces.map((name) => { + const match = declarations.match(new RegExp(`export interface ${name} extends ClassHandle \\{([\\s\\S]*?)\\n\\}`)) + if (!match) throw new Error(`Bitbybit ABI surface is missing ${name}.`) + return `${name}:${match[1].replace(/\s+/g, ' ').trim()}` +}).join('\n') +assertEqual(sha256(canonicalSurface), baseline.bitbybit.surfaceSha256, 'Bitbybit declaration surface') + +assertEqual(matrix.nativeOcctHistory.occtVersion, baseline.nativeOcct.version, 'Native OCCT version') +assertEqual(matrix.nativeOcctHistory.sourceCommit, baseline.nativeOcct.sourceCommit, 'Native OCCT source commit') +for (const [kind, relativePath, expectedHash] of [ + ['JavaScript', matrix.nativeOcctHistory.artifact.javascript, baseline.nativeOcct.javascriptSha256], + ['WASM', matrix.nativeOcctHistory.artifact.wasm, baseline.nativeOcct.wasmSha256] +]) { + assertEqual(sha256(await readBytes(relativePath)), expectedHash, `Native OCCT ${kind} artifact`) +} + +assertEqual(goldenManifest.scenarios.length, baseline.golden.manifestScenarioCount, 'Golden manifest scenario count') +assertEqual(sha256(goldenManifestBytes), baseline.golden.manifestSha256, 'Golden manifest') +assertEqual(threeWay.scenarioCount, baseline.golden.threeWayScenarioCount, 'Three-way scenario count') +assertEqual(sha256(threeWayBytes), baseline.golden.threeWayReportSha256, 'Three-way golden report') +const operationCounts = Object.fromEntries(['cut', 'fuse', 'common'].map((operation) => [operation, threeWay.reports.filter((entry) => entry.operation === operation).length])) +for (const [operation, expectedCount] of Object.entries(baseline.golden.operationCounts)) assertEqual(operationCounts[operation], expectedCount, `${operation} scenario count`) +for (const entry of threeWay.reports) { + if (entry.bitbybit.differences.differences.length || entry.native.differences.differences.length) throw new Error(`Unknown golden drift in ${entry.id}.`) +} + +console.log(JSON.stringify({ + status: 'occt-upstream-drift-pass', + bitbybit: { version: packageJson.version, sourceCommit: baseline.bitbybit.sourceCommit, surfaceSha256: baseline.bitbybit.surfaceSha256 }, + nativeOcct: { version: baseline.nativeOcct.version, sourceCommit: baseline.nativeOcct.sourceCommit }, + golden: { manifestScenarios: goldenManifest.scenarios.length, threeWayScenarios: threeWay.scenarioCount, operationCounts } +}, null, 2)) diff --git a/scripts/check-opencamlib-wasm.mjs b/scripts/check-opencamlib-wasm.mjs new file mode 100644 index 0000000..da3e4f9 --- /dev/null +++ b/scripts/check-opencamlib-wasm.mjs @@ -0,0 +1,36 @@ +import { createHash } from 'node:crypto' +import { execFileSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const evidence = JSON.parse(await readFile(resolve(root, 'config/opencamlib-wasm-artifact.json'), 'utf8')) +if (evidence.schemaVersion !== 1 || evidence.status !== 'pass') throw new Error('OpenCAMLib artifact evidence is not passing.') +const source = resolve(root, evidence.openCamLib.sourcePath) +const revision = execFileSync('git', ['-C', source, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (revision !== evidence.openCamLib.sourceRevision) throw new Error(`OpenCAMLib revision drift: ${revision}`) +const artifact = await readFile(resolve(root, evidence.openCamLib.artifact)) +const digest = createHash('sha256').update(artifact).digest('hex') +if (artifact.byteLength !== evidence.openCamLib.byteLength || digest !== evidence.openCamLib.sha256) throw new Error('OpenCAMLib WASM artifact size or digest mismatch.') +const binding = await readFile(resolve(root, evidence.openCamLib.bindingSource), 'utf8') +for (const symbol of ['PathDropCutter', 'AdaptivePathDropCutter', 'Waterline', 'AdaptiveWaterline', 'CylCutter', 'BallCutter']) { + if (!binding.includes(`\"${symbol}\"`)) throw new Error(`OpenCAMLib binding is missing ${symbol}.`) +} +const artifactText = artifact.toString('utf8') +if (!artifactText.includes('data:application/octet-stream;base64,') || !artifactText.includes('WebAssembly.instantiate')) throw new Error('OpenCAMLib artifact does not contain an embedded executable WASM module.') +if (evidence.solidRemoval.backend !== 'bitbybit-occt-wasm' || evidence.solidRemoval.nativeSolid !== true || evidence.solidRemoval.freeCadNativeEquivalent !== false) throw new Error('OCCT solid-removal boundary is invalid.') +if (evidence.camotics.status !== 'native-host-available' || evidence.camotics.backend !== 'camotics-native-host-qt5-tpl' || evidence.camotics.nativeExecutable !== true || evidence.camotics.nativeBuildStatus !== 'verified-qt5-gui-tpl' || evidence.camotics.nativeGuiPath !== 'CAMotics/camotics' || evidence.camotics.nativeTplPath !== 'CAMotics/tplang' || evidence.camotics.browserExecutable !== false || evidence.camotics.browserWasmKernelExecutable !== true || evidence.camotics.browserWasmKernel?.fullCamoticsProgram !== false || evidence.camotics.browserWasmKernel.gcodeParserIncluded !== false) throw new Error('CAMotics native GUI/TPL/WASM capability boundary is invalid.') +const camoticsSource = resolve(root, evidence.camotics.sourcePath) +const camoticsRevision = execFileSync('git', ['-C', camoticsSource, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +if (camoticsRevision !== evidence.camotics.sourceRevision) throw new Error(`CAMotics revision drift: ${camoticsRevision}`) +for (const sourceFile of evidence.camotics.sourceFiles) if (!existsSync(resolve(root, sourceFile))) throw new Error(`CAMotics source evidence is missing ${sourceFile}.`) +const camoticsGenerator = await readFile(resolve(root, 'CAMotics/src/gcode/machine/GCodeMachine.cpp'), 'utf8') +for (const method of ['start', 'changeTool', 'setFeed', 'move', 'end']) if (!camoticsGenerator.includes(`GCodeMachine::${method}`)) throw new Error(`CAMotics G-code generator source is missing ${method}.`) +for (const nativeArtifact of [evidence.camotics.nativeGuiPath, evidence.camotics.nativeTplPath]) if (!existsSync(resolve(root, nativeArtifact))) throw new Error(`CAMotics native artifact is missing: ${nativeArtifact}`) +if (!existsSync(resolve(root, evidence.camotics.browserWasmKernel.artifact))) throw new Error('CAMotics browser WASM artifact is missing.') +if (!existsSync(resolve(root, evidence.camotics.nativeArtifactEvidence))) throw new Error('CAMotics native artifact evidence is missing.') +if (evidence.camotics.generationAuthority !== 'camotics-source-stage' || evidence.camotics.parserAuthority !== 'linuxcnc-wasm' || evidence.camotics.camoticsParsesCanonicalGcode !== false || evidence.camotics.pipeline?.canonicalGcodeAuthority !== 'linuxcnc-wasm' || evidence.camotics.pipeline?.camoticsSemanticParser !== false || evidence.camotics.pipeline?.linuxcncWasmExecution !== 'handoff-required') throw new Error('CAMotics/LinuxCNC pipeline authority is invalid.') +const nativeEvidence = JSON.parse(await readFile(resolve(root, evidence.camotics.nativeArtifactEvidence), 'utf8')) +if (nativeEvidence.schemaVersion !== 2 || nativeEvidence.status !== 'pass' || nativeEvidence.source.revision !== evidence.camotics.sourceRevision || nativeEvidence.cbang.revision !== evidence.camotics.cbangRevision || nativeEvidence.build.withGui !== true || nativeEvidence.build.withTpl !== true || nativeEvidence.guiSmoke.status !== 'pass') throw new Error('CAMotics native GUI/TPL evidence is missing or stale.') +console.log(JSON.stringify({ status: 'opencamlib-wasm-pass', sourceRevision: revision, artifactBytes: artifact.byteLength, sha256: digest, algorithms: evidence.openCamLib.algorithms, solidRemoval: evidence.solidRemoval, camoticsRevision, camotics: evidence.camotics, nativeEvidence: { artifacts: nativeEvidence.artifacts, tplTests: nativeEvidence.tplTests, guiSmoke: nativeEvidence.guiSmoke } }, null, 2)) diff --git a/scripts/check-partdesign-closure.mjs b/scripts/check-partdesign-closure.mjs new file mode 100644 index 0000000..41a1e40 --- /dev/null +++ b/scripts/check-partdesign-closure.mjs @@ -0,0 +1,58 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (path) => JSON.parse(await readFile(resolve(root, path), 'utf8')) +const lifecycle = await load('config/chrome-partdesign-lifecycle-verification.json') +const loft = await load('config/chrome-partdesign-loft-verification.json') +const transform = await load('config/chrome-partdesign-transform-verification.json') +const base = await load('config/chrome-geometry-features-verification.json') + +if ([lifecycle, loft, transform, base].some((report) => report.status !== 'pass')) throw new Error('PartDesign closure requires passing lifecycle, base, loft and transform browser reports.') +const lifecycleStages = [lifecycle.initial, lifecycle.edited, lifecycle.undone, lifecycle.reopened] +if (new Set(lifecycleStages.map((stage) => stage?.shapeId)).size !== lifecycleStages.length || lifecycleStages.some((stage) => !stage?.shapeId || !(stage.volume > 0) || stage.solids !== 1 || stage.tip !== 'pad' || stage.support !== 'XY_Plane') || lifecycle.edited.length !== 31 || lifecycle.undone.length !== 42 || lifecycle.reopened.length !== 42 || Math.abs(lifecycle.initial.volume - 504) > 1e-7 || Math.abs(lifecycle.edited.volume - 372) > 1e-7 || Math.abs(lifecycle.undone.volume - 504) > 1e-7 || Math.abs(lifecycle.reopened.volume - 504) > 1e-7) throw new Error('PartDesign edit/Undo/load lifecycle contains stale Shape, Tip or Support evidence.') +if (lifecycle.structural?.reorderRejected !== true || lifecycle.structural?.dependencyRemovalRejected !== true || lifecycle.structural?.deleted?.tip !== 'pocket' || lifecycle.structural?.deletionUndone?.tip !== 'fillet' || lifecycle.structural?.deletionRedone?.tip !== 'pocket' || lifecycle.structural?.restoredTip !== 'fillet') throw new Error('PartDesign structural Undo/Redo and Tip evidence is invalid.') + +const expectedLoft = ['additive-loft', 'additive-pipe', 'subtractive-loft', 'subtractive-pipe'] +if (JSON.stringify(loft.operations?.map((entry) => entry.command)) !== JSON.stringify(expectedLoft) || loft.operations.some((entry) => entry.tip !== entry.objectId || !entry.base || !entry.shapeId || !(entry.volume > 0)) || new Set(loft.operations.map((entry) => entry.shapeId)).size !== loft.operations.length) throw new Error('PartDesign Loft/Pipe create and Tip/Base evidence is invalid.') +for (const recovery of [loft.failureRecovery?.loft, loft.failureRecovery?.pipe]) { + if (recovery?.status !== 'failed' || recovery.retainedShapeId !== recovery.previousShapeId || recovery.restoredStatus !== 'completed' || !recovery.restoredShapeId || recovery.restoredShapeId === recovery.previousShapeId) throw new Error('PartDesign Loft/Pipe failure recovery retained stale or missing Shape evidence.') +} + +const expectedTransform = ['hole', 'fillet', 'chamfer', 'draft', 'thickness', 'hole', 'hole', 'linear-pattern', 'mirrored', 'mirrored', 'linear-pattern', 'polar-pattern', 'multi-transform', 'hole'] +if (JSON.stringify(transform.operations?.map((entry) => entry.command)) !== JSON.stringify(expectedTransform) || transform.operations.some((entry) => entry.tip !== entry.objectId || !entry.base || !entry.shapeId || !(entry.volume > 0) || entry.solids !== 1) || new Set(transform.operations.map((entry) => entry.shapeId)).size !== transform.operations.length) throw new Error('PartDesign dress-up/transform/Hole create and Tip/Base evidence is invalid.') +const ambiguity = transform.ambiguityRecovery +if (ambiguity?.status !== 'failed' || ambiguity.retainedShapeId !== ambiguity.previousShapeId || ambiguity.restoredStatus !== 'completed' || !ambiguity.restoredShapeId || ambiguity.restoredShapeId === ambiguity.previousShapeId || transform.topologyMigration?.wrongBindings !== 0) throw new Error('PartDesign topology failure recovery retained stale or incorrectly rebound Shape evidence.') + +const baseModes = ['pad-tapered', 'pocket-tapered', 'pocket-through-all', 'pocket-up-to-face', 'pad-midplane'] +if (baseModes.some((name) => !base.operations?.some((entry) => entry.name === name && entry.shapeId && entry.volume > 0))) throw new Error('PartDesign base mode creation evidence is incomplete.') +if (loft.persistence?.mode !== 'sqlite-opfs' || transform.persistence?.mode !== 'sqlite-opfs' || lifecycle.reopened?.persistenceMode !== 'sqlite-opfs' || loft.persistence.reopenedTip !== 'subtractive-pipe' || transform.persistence.reopenedTip !== transform.operations.at(-1).objectId || lifecycle.reopened.tip !== 'pad') throw new Error('PartDesign save/load Tip evidence is invalid.') +if (loft.afterRelease?.shapeCount !== 0 || loft.afterRelease?.kernelReferenceCount !== 0 || transform.afterRelease?.shapeCount !== 0 || transform.afterRelease?.kernelReferenceCount !== 0 || lifecycle.released?.shapeCount !== 0 || lifecycle.released?.kernelReferenceCount !== 0 || base.afterRelease?.shapeCount !== 0 || base.afterRelease?.kernelReferenceCount !== 0) throw new Error('PartDesign closure reports leaked Shape ownership.') + +const historyPaths = new Map([ + ['pad', 'config/chrome-native-pad-history-verification.json'], + ['pocket', 'config/chrome-native-pocket-history-verification.json'], + ['loft', 'config/chrome-native-loft-history-verification.json'], + ['pipe', 'config/chrome-native-pipe-history-verification.json'], + ['revolution', 'config/chrome-native-revolution-history-verification.json'], + ['groove', 'config/chrome-native-groove-history-verification.json'], + ['fillet', 'config/chrome-native-fillet-history-verification.json'], + ['chamfer', 'config/chrome-native-chamfer-history-verification.json'], + ['hole', 'config/chrome-native-hole-history-verification.json'], + ['draft', 'config/chrome-native-draft-history-verification.json'], + ['thickness', 'config/chrome-native-thickness-history-verification.json'], + ['linear-pattern', 'config/chrome-native-linear-pattern-history-verification.json'], + ['polar-pattern', 'config/chrome-native-polar-pattern-history-verification.json'], + ['mirrored', 'config/chrome-native-mirrored-history-verification.json'], + ['multi-transform', 'config/chrome-native-multi-transform-history-verification.json'], +]) +const nativeHistory = {} +for (const [operation, path] of historyPaths) { + const report = await load(path) + const count = report.execution?.recordCount ?? report.history?.recordCount + const released = operation === 'pad' ? report.workerDisposed === true : report.afterRelease?.shapeCount === 0 && report.afterRelease?.kernelReferenceCount === 0 + if (report.status !== 'pass' || report.nativeCapabilities?.operations?.includes(operation) !== true || !Number.isSafeInteger(count) || count < 1 || !released) throw new Error(`PartDesign native ${operation} history evidence is invalid.`) + nativeHistory[operation] = count +} + +console.log(JSON.stringify({ status: 'partdesign-closure-pass', lifecycle: lifecycleStages.map((stage) => ({ length: stage.length, shapeId: stage.shapeId, volume: stage.volume, tip: stage.tip, support: stage.support })), createdFeatures: { loft: expectedLoft, transform: expectedTransform, baseModes }, failureRecovery: { loft: loft.failureRecovery, transform: transform.ambiguityRecovery }, persistence: { lifecycle: lifecycle.reopened, loft: loft.persistence, transform: transform.persistence }, nativeHistory }, null, 2)) diff --git a/scripts/check-planegcs-artifact.mjs b/scripts/check-planegcs-artifact.mjs new file mode 100644 index 0000000..868c9a4 --- /dev/null +++ b/scripts/check-planegcs-artifact.mjs @@ -0,0 +1,18 @@ +import { createHash } from 'node:crypto' +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const manifest = JSON.parse(await readFile(resolve(root, 'config/planegcs-wasm-artifact.json'), 'utf8')) +if (manifest.schemaVersion !== 1 || manifest.freecadVersion !== '1.1.1' || manifest.freecadCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || manifest.emscriptenVersion !== '3.1.69' || manifest.pthreadPoolSize !== 2) throw new Error('planegcs artifact baseline is invalid.') +const checked = [] +for (const kind of ['javascript', 'wasm']) { + const record = manifest[kind] + const bytes = await readFile(resolve(root, record.path)) + const publicBytes = await readFile(resolve(root, record.publicPath)) + const hash = createHash('sha256').update(bytes).digest('hex') + const publicHash = createHash('sha256').update(publicBytes).digest('hex') + if (hash !== record.sha256 || publicHash !== record.sha256) throw new Error(`planegcs ${kind} artifact hash drifted.`) + checked.push({ kind, bytes: bytes.byteLength, sha256: hash }) +} +console.log(JSON.stringify({ status: 'planegcs-artifact-pass', freecadCommit: manifest.freecadCommit, pthreadPoolSize: manifest.pthreadPoolSize, artifacts: checked }, null, 2)) diff --git a/scripts/check-platform-closure.mjs b/scripts/check-platform-closure.mjs new file mode 100644 index 0000000..4211c14 --- /dev/null +++ b/scripts/check-platform-closure.mjs @@ -0,0 +1,37 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportNames = ['fem', 'cam', 'robot', 'inspection', 'data', 'addon', 'script'] +const [coverage, inventory, pkg, reports] = await Promise.all([ + readFile(resolve(root, 'config/platform-module-coverage.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'config/freecad-source-inventory.json'), 'utf8').then(JSON.parse), + readFile(resolve(root, 'package.json'), 'utf8').then(JSON.parse), + Promise.all(reportNames.map((name) => readFile(resolve(root, `config/chrome-${name}-verification.json`), 'utf8').then(JSON.parse))), +]) +if (coverage.schemaVersion !== 1 || coverage.baseline?.commit !== inventory.baseline?.commit) throw new Error('Platform coverage baseline does not match the locked FreeCAD inventory.') +if (!Array.isArray(coverage.modules) || coverage.modules.length !== 34 || inventory.modules.length !== 34) throw new Error('Platform closure must enumerate exactly 34 modules.') +const expected = inventory.modules.map((module) => module.name).sort() +const actual = coverage.modules.map((module) => module.name).sort() +if (JSON.stringify(actual) !== JSON.stringify(expected) || new Set(actual).size !== 34) throw new Error('Platform coverage names do not match the 34-module source inventory.') +const levels = new Set(['exact', 'compatible', 'proxy', 'development']) +for (const module of coverage.modules) { + if (!levels.has(module.level) || !module.boundary?.trim() || !pkg.scripts?.[module.evidence]) throw new Error(`Platform module ${module.name} has an invalid level, boundary or executable evidence.`) + if (['scope-only', 'unsupported'].includes(module.level)) throw new Error(`Platform module ${module.name} remains unexplained: ${module.level}`) +} +for (const [index, report] of reports.entries()) { + const name = reportNames[index] + if (report.schemaVersion !== 1 || report.status !== 'pass' || report.browserId !== 'chrome' || report.crossOriginIsolated !== true || !/Chrome/i.test(report.browser?.product || '')) throw new Error(`Platform ${name} browser evidence is not passing.`) + if (report.persistence?.mode !== 'sqlite-opfs' || report.persistence.byteLength <= 0 || report.persistence.roundTrip !== true || report.persistence.released !== true) throw new Error(`Platform ${name} persistence evidence is incomplete.`) + if (report.opfs?.markerRemoved !== true || report.afterRelease?.shapeCount !== 0 || report.afterRelease.kernelReferenceCount !== 0) throw new Error(`Platform ${name} lifecycle evidence is incomplete.`) +} +const [fem, cam, robot, inspection, data, addon, script] = reports +if (fem.solve?.strategy !== 'local-reference' || fem.solve.nodeSets !== 1 || JSON.stringify(fem.solve.resultFields) !== JSON.stringify(['displacement', 'stress'])) throw new Error('Platform FEM solve evidence is incomplete.') +if (cam.job?.collisionFixture < 1 || cam.job.unsafePostRejected !== true || cam.job.deterministic !== true) throw new Error('Platform CAM collision/post evidence is incomplete.') +if (robot.trajectory?.poses !== 5 || robot.trajectory.maxReach !== 6 || robot.trajectory.collisions < 1 || robot.trajectory.controllerBytes <= 0) throw new Error('Platform Robot kinematics evidence is incomplete.') +if (inspection.measurements?.deviationStatus !== 'resolved' || inspection.measurements.topoRefs !== 2 || Math.abs(inspection.measurements.sectionArea - 24) > 1e-5) throw new Error('Platform Inspection evidence is incomplete.') +if (data.adapters?.total !== 7 || data.records?.total !== 7 || data.adapters.supported !== 4 || data.adapters.proxy !== 3 || data.points?.sourceCount !== 6 || data.points?.polygonCroppedCount !== 4 || data.reverseEngineering?.cylinderRadius !== 3 || data.reverseEngineering?.polynomialRms > 1e-7 || data.reverseEngineering?.segmentCount !== 2) throw new Error('Platform specialist data adapter evidence is incomplete.') +if (!addon.security?.forgedRejected || !addon.security.permissionRejected || !addon.security.removed || addon.catalog?.rollbackVersion !== '1.0.0') throw new Error('Platform addon governance evidence is incomplete.') +if (!script.security?.noDynamicExecution || JSON.stringify(script.security.deniedCapabilities) !== JSON.stringify(['file', 'network', 'time', 'resource'])) throw new Error('Platform script sandbox evidence is incomplete.') +const summary = Object.fromEntries([...levels].map((level) => [level, coverage.modules.filter((module) => module.level === level).length])) +console.log(JSON.stringify({ status: 'platform-closure-pass', modules: coverage.modules.length, unexplained: 0, summary, evidenceScripts: new Set(coverage.modules.map((module) => module.evidence)).size, browserSuites: reportNames.length }, null, 2)) diff --git a/scripts/check-pwa-assets.mjs b/scripts/check-pwa-assets.mjs new file mode 100644 index 0000000..0f9beb2 --- /dev/null +++ b/scripts/check-pwa-assets.mjs @@ -0,0 +1,14 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const manifest = JSON.parse(await readFile(resolve(root, 'public/manifest.webmanifest'), 'utf8')) +const serviceWorker = await readFile(resolve(root, 'public/sw.js'), 'utf8') +const main = await readFile(resolve(root, 'src/main.tsx'), 'utf8') +const fail = (message) => { throw new Error(`PWA asset check: ${message}`) } + +if (manifest.name !== 'BitBybit CAD Studio' || manifest.start_url !== '/start' || manifest.scope !== '/' || manifest.display !== 'standalone' || manifest.theme_color !== '#111519') fail('manifest metadata is invalid.') +if (!serviceWorker.includes("const CACHE_NAME = 'bitbybit-cad-shell-v1'") || !serviceWorker.includes('skipWaiting') || !serviceWorker.includes('clients.claim') || !serviceWorker.includes('caches.match') || !serviceWorker.includes('keys.filter((key) => key !== CACHE_NAME)') || !serviceWorker.includes('caches.delete(key)')) fail('service worker install/activate/fallback/migration policy is incomplete.') +if (!main.includes("navigator.serviceWorker.register('/sw.js'")) fail('production service worker registration is missing.') + +console.log(JSON.stringify({ status: 'pwa-assets-pass', name: manifest.name, startUrl: manifest.start_url, cache: 'bitbybit-cad-shell-v1' }, null, 2)) diff --git a/scripts/check-quality-closure.mjs b/scripts/check-quality-closure.mjs new file mode 100644 index 0000000..e6f1ec7 --- /dev/null +++ b/scripts/check-quality-closure.mjs @@ -0,0 +1,72 @@ +import { readFile, readdir } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = (path) => readFile(resolve(root, path), 'utf8').then(JSON.parse) +const [ + fcstdFuzz, geometryFuzz, sketchFuzz, successFixtures, failureFixtures, supplementalSuccessFixtures, supplementalFailureFixtures, + sketchOracle, partdesignBase, partdesignLoft, partdesignDressup, partdesignTransform, partdesignFailures, partdesignRevolutionGroove, partBuilders, + fcstdRoundTrip, app, performance, fault, opfsMigration, security, qa08, addon, script, +] = await Promise.all([ + load('config/qa04-fcstd-fuzz-verification.json'), + load('config/qa04-geometry-fuzz-verification.json'), + load('config/qa04-sketch-fuzz-verification.json'), + load('fixtures/freecad-golden/manifest.json'), + load('fixtures/freecad-golden/failures/manifest.json'), + load('fixtures/freecad-golden/feature-families/manifest.json'), + load('fixtures/freecad-golden/feature-families/failures/manifest.json'), + load('config/freecad-sketcher-constraint-oracle.json'), + load('config/freecad-partdesign-base-oracle.json'), + load('config/freecad-partdesign-loft-oracle.json'), + load('config/freecad-partdesign-dressup-oracle.json'), + load('config/freecad-partdesign-transform-oracle.json'), + load('config/freecad-partdesign-failure-oracle.json'), + load('config/freecad-partdesign-revolution-groove-oracle.json'), + load('config/freecad-part-builders-oracle.json'), + load('config/freecad-fcstd-roundtrip-verification.json'), + load('config/chrome-app-e2e-verification.json'), + load('config/chrome-performance-verification.json'), + load('config/chrome-fault-injection-verification.json'), + load('config/chrome-opfs-migration-verification.json'), + load('config/chrome-security-verification.json'), + load('config/chrome-qa08-verification.json'), + load('config/chrome-addon-verification.json'), + load('config/chrome-script-verification.json'), +]) + +const testFiles = (await readdir(resolve(root, 'tests'))).filter((name) => /\.test\.(?:ts|mjs)$/.test(name)).sort() +const testSources = await Promise.all(testFiles.map((name) => readFile(resolve(root, 'tests', name), 'utf8'))) +const testCases = testSources.reduce((total, source) => total + (source.match(/(?:^|\n)test\(/g)?.length ?? 0), 0) +if (testFiles.length < 24 || testCases < 217 || !testFiles.includes('facade.test.ts') || !testFiles.includes('goldenReplay.test.mjs')) throw new Error('QA-01 unit/invariant suite inventory is incomplete.') + +if (successFixtures.scenarios?.length !== 100 || failureFixtures.failures?.length !== 51 || supplementalSuccessFixtures.scenarios?.length !== 5 || supplementalFailureFixtures.failures?.length !== 5) throw new Error('QA-02 FreeCAD success/failure golden inventory is incomplete.') +if (sketchOracle.status !== 'pass' || sketchOracle.summary?.constraintTypes !== 19 || sketchOracle.summary.successPassed !== 19 || sketchOracle.summary.failurePassed !== 19) throw new Error('QA-02 Sketcher oracle evidence is incomplete.') +const partdesignCases = [partdesignBase, partdesignLoft, partdesignDressup, partdesignTransform].reduce((total, report) => total + (report.summary?.passed ?? 0), 0) +if (partdesignCases !== 23 || [partdesignBase, partdesignLoft, partdesignDressup, partdesignTransform].some((report) => report.status !== 'pass' || report.freecadVersion !== '1.1.1')) throw new Error('QA-02 PartDesign oracle evidence is incomplete.') +if (partdesignFailures.status !== 'pass' || partdesignFailures.freecadVersion !== '1.1.1' || partdesignFailures.summary?.cases !== 17 || partdesignFailures.summary.passed !== 17 || partdesignFailures.summary.rejected !== 13 || partdesignFailures.summary.acceptedEmpty !== 4 || partdesignFailures.summary.accepted !== 0) throw new Error('QA-02 PartDesign failure oracle evidence is incomplete.') +if (partdesignRevolutionGroove.status !== 'pass' || partdesignRevolutionGroove.freecadVersion !== '1.1.1' || partdesignRevolutionGroove.summary?.cases !== 2 || partdesignRevolutionGroove.summary.passed !== 2 || partdesignRevolutionGroove.cases?.some((fixture) => fixture.shapeNull !== false || fixture.shapeValid !== true || fixture.solids !== 1)) throw new Error('QA-02 PartDesign Revolution/Groove oracle evidence is incomplete.') +if (partBuilders.status !== 'pass' || partBuilders.freecadVersion !== '1.1.1' || partBuilders.summary?.successCases !== 6 || partBuilders.summary.successPassed !== 6 || partBuilders.summary.failureCases !== 6 || partBuilders.summary.failurePassed !== 6 || partBuilders.summary.rejected !== 6 || partBuilders.summary.acceptedEmpty !== 0) throw new Error('QA-02 Part builders oracle evidence is incomplete.') +if (fcstdRoundTrip.status !== 'verified' || fcstdRoundTrip.scenarioCount !== 22 || fcstdRoundTrip.scenarios?.some((scenario) => scenario.status !== 'pass' || scenario.differences?.length !== 0)) throw new Error('QA-02 FCStd oracle evidence is incomplete.') + +const requiredAppWorkflows = ['start-to-workspace', 'freecad-menus', 'command-search-dialog', 'preferences-about-dialogs', 'model-tree-context-menu', 'workbench-change', 'create-sketch-command', 'loft-section-task', 'drawer-collapse', 'cam-workbench-job-flow', 'opfs-save-reopen', 'import-format-selection', 'export-format-selection'] +if (app.status !== 'pass' || requiredAppWorkflows.some((workflow) => !app.workflows?.includes(workflow)) || app.pageErrors?.length !== 0 || app.desktop?.kernelPreviewSource !== 'bitbybit-occt' || app.desktop.canvas?.uniqueColors < 4 || app.desktop?.commandGroups < 4 || app.desktop?.selectionView !== true || app.desktop?.statusBar !== true || app.uiParity?.commandDialog?.modal !== true || app.uiParity?.preferencesDialog?.modal !== true || app.uiParity?.aboutDialog?.modal !== true || app.uiParity?.contextMenu?.items?.length !== 4 || app.uiParity?.camMenu?.items !== 60 || app.cam?.ui?.generated !== true || app.cam.ui.toolbarCommands !== 60 || app.cam.ui.toolpathPoints < 5 || app.mobile?.viewport?.width !== 390 || Object.keys(app.screenshots ?? {}).length !== 3) throw new Error('QA-03 production Chrome E2E evidence is incomplete.') + +if (fcstdFuzz.status !== 'fcstd-parser-fuzz-pass' || fcstdFuzz.cases !== 1000 || fcstdFuzz.counts?.accepted + fcstdFuzz.counts?.rejected !== 1000 || Object.keys(fcstdFuzz.categories ?? {}).length !== 13 || fcstdFuzz.timing?.p95Ms >= 50) throw new Error('QA-04 FCStd fuzz evidence is incomplete.') +if (geometryFuzz.status !== 'geometry-input-fuzz-pass' || geometryFuzz.cases !== 2000 || geometryFuzz.counts?.accepted + geometryFuzz.counts?.rejected !== 2000 || Object.keys(geometryFuzz.categories ?? {}).length !== 30 || geometryFuzz.timing?.p95Ms >= 10) throw new Error('QA-04 geometry fuzz evidence is incomplete.') +if (sketchFuzz.status !== 'sketch-solver-fuzz-pass' || sketchFuzz.models !== 2000 || sketchFuzz.solves !== 4000 || Object.keys(sketchFuzz.categories ?? {}).length !== 10 || sketchFuzz.timing?.p95Ms >= 10) throw new Error('QA-04 solver fuzz evidence is incomplete.') + +if (performance.status !== 'pass' || performance.benchmark?.objects !== 1000 || performance.benchmark.triangles !== 1_000_000 || performance.benchmark.tableCells !== 100_000 || performance.benchmark.pass !== true || performance.afterRelease?.shapeCount !== 0) throw new Error('QA-05 performance and ownership evidence is incomplete.') +if (fault.status !== 'pass' || fault.lifecycle?.completed !== 'completed' || fault.lifecycle.cancelled !== 'cancelled' || fault.lifecycle.crashInjected !== true || fault.lifecycle.recovered !== 'completed' || fault.lifecycle.stale !== 'stale' || fault.opfs?.markerRemoved !== true) throw new Error('QA-06 Worker/WASM fault evidence is incomplete.') +if (opfsMigration.status !== 'pass' || opfsMigration.migration?.migratedSchemaVersion !== 6 || opfsMigration.migration.recoveryIntegrity !== 'ok' || opfsMigration.rollback?.rejected !== true) throw new Error('QA-06 OPFS recovery evidence is incomplete.') +if (security.status !== 'pass' || security.checks?.rejectedCases !== 4 || security.checks.pass !== true || addon.security?.forgedRejected !== true || addon.security.permissionRejected !== true || script.security?.noDynamicExecution !== true || script.security.deniedCapabilities?.length !== 4) throw new Error('QA-07 security evidence is incomplete.') +if (qa08.status !== 'pass' || qa08.locales?.supported !== 3 || qa08.accessibility?.pass !== true || app.keyboard?.named !== 8 || app.screenReader?.namedControls !== app.screenReader?.controls || app.screenReader?.unnamedControls !== 0 || app.mobile?.bodyHorizontalOverflow > 1) throw new Error('QA-08 accessibility/i18n evidence is incomplete.') + +console.log(JSON.stringify({ + status: 'quality-closure-pass', + tasks: 8, + unitSuites: testFiles.length, + unitTests: testCases, + freecad: { successFixtures: 105, failureFixtures: 56, primarySuccessFixtures: 100, primaryFailureFixtures: 51, supplementalSuccessFixtures: 5, supplementalFailureFixtures: 5, sketchConstraints: 19, partdesignCases, partdesignFailureCases: partdesignFailures.summary.cases, partdesignRejectedFailures: partdesignFailures.summary.rejected, partdesignAcceptedEmpty: partdesignFailures.summary.acceptedEmpty, partdesignRevolutionGrooveCases: partdesignRevolutionGroove.summary.cases, partBuilderSuccessCases: partBuilders.summary.successCases, partBuilderFailureCases: partBuilders.summary.failureCases, fcstdRoundTrips: 22 }, + fuzz: { fcstd: fcstdFuzz.cases, geometry: geometryFuzz.cases, solverModels: sketchFuzz.models }, + chrome: { workflows: app.workflows.length, screenshots: Object.keys(app.screenshots).length, accessibilityNodes: app.screenReader.nodes }, +}, null, 2)) diff --git a/scripts/check-release-closure.mjs b/scripts/check-release-closure.mjs new file mode 100644 index 0000000..ae2f085 --- /dev/null +++ b/scripts/check-release-closure.mjs @@ -0,0 +1,35 @@ +import { readFile, access } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = (path) => readFile(resolve(root, path), 'utf8').then(JSON.parse) +const [matrix, coverage, plan, pkg, release, sbom, offline, migration, performance, security, quality, audit] = await Promise.all([ + load('config/release-capability-matrix.json'), + load('config/platform-module-coverage.json'), + load('config/freecad-execution-plan.json'), + load('package.json'), + load('config/release-artifacts.json'), + load('config/sbom.cdx.json'), + load('config/chrome-offline-verification.json'), + load('config/project-migration-verification.json'), + load('config/chrome-performance-verification.json'), + load('config/chrome-security-verification.json'), + Promise.resolve({ status: 'quality-closure-pass' }), + load('config/npm-audit-critical.json'), +]) +const fail = (message) => { throw new Error(`Release closure: ${message}`) } +if (matrix.schemaVersion !== 1 || matrix.baseline?.freecadVersion !== '1.1.1' || matrix.baseline.commit !== coverage.baseline.commit) fail('capability matrix baseline is not locked.') +if (matrix.coverageSource !== 'config/platform-module-coverage.json' || matrix.moduleCounts.unsupported !== 0 || matrix.moduleCounts.unexplained !== 0 || matrix.scopeOnly?.length !== 0 || matrix.unsupported?.length !== 0 || matrix.unexplained?.length !== 0) fail('capability matrix contains unexplained or scope-only entries.') +for (const level of ['exact', 'compatible', 'proxy', 'development']) { + const names = coverage.modules.filter((module) => module.level === level).map((module) => module.name).sort() + if (JSON.stringify(names) !== JSON.stringify([...matrix.modulesByLevel[level]].sort()) || matrix.moduleCounts[level] !== names.length) fail(`capability matrix level ${level} does not match platform coverage.`) +} +if (matrix.gates?.length !== 10 || matrix.gates.some((gate) => gate.status !== 'pass' || gate.evidence?.length === 0 || gate.evidence.some((evidence) => !pkg.scripts?.[evidence]))) fail('G0-G9 evidence mapping is incomplete.') +if (plan.programs.length !== 10 || plan.programs.some((program) => program.tasks.some((task) => task.status !== 'completed'))) fail('one or more P01-P10 tasks remains open.') +await access(resolve(root, 'docs/release-runbook.zh-CN.md')).catch(() => fail('release runbook is missing.')) +if (release.schemaVersion !== 1 || release.signature?.status !== 'signed' || release.signature.algorithm !== 'Ed25519' || !release.signature.keyId || !/^[0-9a-f]{64}$/.test(release.signature.payloadSha256 || '') || release.build?.files?.length === 0) fail('release artifact manifest is not signed and complete.') +if (sbom.bomFormat !== 'CycloneDX' || sbom.components?.length !== audit.metadata?.dependencies?.total) fail('SBOM is missing, stale, or inconsistent with the locked audit inventory.') +if (offline.status !== 'pass' || offline.serviceWorker?.offlineFallback !== true || offline.serviceWorker?.staleCacheRemoved !== true) fail('offline deployment evidence is incomplete.') +if (migration.status !== 'pass' || migration.currentSchemaVersion !== 6 || migration.forward?.length !== 6 || migration.rollback?.length !== 6) fail('migration/rollback evidence is incomplete.') +if (performance.status !== 'pass' || performance.benchmark?.pass !== true || security.status !== 'pass' || security.checks?.pass !== true || quality.status !== 'quality-closure-pass') fail('quality evidence is incomplete.') +console.log(JSON.stringify({ status: 'release-closure-pass', gates: matrix.gates.length, modules: coverage.modules.length, moduleCounts: matrix.moduleCounts, signed: true, sbomComponents: sbom.components.length, migrationVersions: migration.currentSchemaVersion }, null, 2)) diff --git a/scripts/check-release-signing-key.mjs b/scripts/check-release-signing-key.mjs new file mode 100644 index 0000000..f7a7a6f --- /dev/null +++ b/scripts/check-release-signing-key.mjs @@ -0,0 +1,4 @@ +import { loadControlledSigningKey } from './release-signing-key.mjs' + +const key = await loadControlledSigningKey() +console.log(JSON.stringify({ status: 'release-signing-key-pass', source: key.source, keyId: key.keyId, algorithm: 'Ed25519', publicKeySha256: key.publicKeySha256 }, null, 2)) diff --git a/scripts/check-security-baseline.mjs b/scripts/check-security-baseline.mjs new file mode 100644 index 0000000..30bdd33 --- /dev/null +++ b/scripts/check-security-baseline.mjs @@ -0,0 +1,32 @@ +import { readFile, readdir } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const baseline = JSON.parse(await readFile(resolve(root, 'config/security-baseline.json'), 'utf8')) +const headers = await readFile(resolve(root, baseline.headersPath), 'utf8') +const fail = (message) => { throw new Error(`Security baseline: ${message}`) } +if (baseline.schemaVersion !== 1 || baseline.browserScope !== 'chrome-only') fail('schema or browser scope is invalid.') +for (const [name, value] of Object.entries(baseline.requiredHeaders)) if (!headers.includes(`${name}: ${value}`)) fail(`missing ${name}.`) +const cspLine = headers.split('\n').find((line) => line.includes('Content-Security-Policy:')) +if (!cspLine) fail('Content-Security-Policy is missing.') +for (const [directive, values] of Object.entries(baseline.contentSecurityPolicy)) { + const expected = `${directive} ${values.join(' ')}` + if (!cspLine.includes(expected)) fail(`CSP directive is incomplete: ${expected}`) +} +if (cspLine.includes("'unsafe-eval'")) fail('CSP must not allow unsafe-eval.') +const viteConfig = await readFile(resolve(root, 'vite.config.ts'), 'utf8') +for (const [name, value] of Object.entries(baseline.requiredHeaders)) if (!viteConfig.includes(`'${name}': '${value}'`) && !viteConfig.includes(`"${name}": "${value}"`)) fail(`Vite preview headers do not declare ${name}.`) +const sourceFiles = [] +const collect = async (directory) => { + for (const entry of await readdir(directory, { withFileTypes: true })) { + const path = resolve(directory, entry.name) + if (entry.isDirectory()) await collect(path) + else if (/\.(ts|tsx|mjs)$/.test(entry.name)) sourceFiles.push(path) + } +} +await collect(resolve(root, 'src')) +for (const path of sourceFiles) { + const source = await readFile(path, 'utf8') + for (const pattern of baseline.forbiddenSourcePatterns) if (source.includes(pattern)) fail(`forbidden dynamic execution pattern '${pattern}' in ${path.replace(`${root}/`, '')}.`) +} +console.log(JSON.stringify({ status: 'security-baseline-pass', browserScope: baseline.browserScope, sourceFiles: sourceFiles.length, csp: cspLine.trim() }, null, 2)) diff --git a/scripts/chrome-profile.mjs b/scripts/chrome-profile.mjs new file mode 100644 index 0000000..eaded10 --- /dev/null +++ b/scripts/chrome-profile.mjs @@ -0,0 +1,7 @@ +import { mkdtemp, rm } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' + +export const createChromeProfile = (name) => mkdtemp(join(tmpdir(), `bitbybit-${name}-`)) + +export const removeChromeProfile = (profile) => rm(profile, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 }) diff --git a/scripts/configure-freecad-native.mjs b/scripts/configure-freecad-native.mjs index ec8987d..9d0fa73 100644 --- a/scripts/configure-freecad-native.mjs +++ b/scripts/configure-freecad-native.mjs @@ -1,29 +1,95 @@ import { execFileSync } from 'node:child_process' -import { readFile } from 'node:fs/promises' +import { access, readFile, writeFile } from 'node:fs/promises' import { resolve } from 'node:path' const root = resolve(new URL('..', import.meta.url).pathname) const toolchain = JSON.parse(await readFile(new URL('../config/freecad-toolchain.json', import.meta.url), 'utf8')) const source = resolve(root, toolchain.sourceCheckout.defaultDirectory) -const build = resolve(root, '.cache/freecad/build-native') -const install = resolve(root, '.cache/freecad/install-native') +const profile = process.env.FREECAD_ORACLE_PROFILE || 'headless' +if (!['headless', 'desktop'].includes(profile)) throw new Error(`Unknown FreeCAD oracle profile: ${profile}`) +const build = resolve(root, profile === 'desktop' ? '.cache/freecad/build-desktop' : '.cache/freecad/build-native') +const install = resolve(root, profile === 'desktop' ? '.cache/freecad/install-desktop' : '.cache/freecad/install-native') +const sysroot = resolve(root, '.cache/freecad/sysroot') const bootstrap = resolve(root, 'config/freecad-native-bootstrap.cmake') const revision = execFileSync('git', ['-C', source, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() if (revision !== toolchain.source.commit) throw new Error(`FreeCAD source must be checked out at ${toolchain.source.commit}; received ${revision}.`) +const desktopModules = ['ADDONMGR', 'ASSEMBLY', 'BIM', 'CAM', 'DRAFT', 'FEM', 'FLAT_MESH', 'HELP', 'IDF', 'IMPORT', 'INSPECTION', 'MATERIAL', 'MEASURE', 'MESH', 'MESH_PART', 'OPENSCAD', 'PART', 'PART_DESIGN', 'PLOT', 'POINTS', 'REVERSEENGINEERING', 'ROBOT', 'SHOW', 'SKETCHER', 'SPREADSHEET', 'START', 'SURFACE', 'TECHDRAW', 'TEST', 'TUX', 'WEB'] const disabledModules = ['ADDONMGR', 'ASSEMBLY', 'BIM', 'CAM', 'DRAFT', 'FEM', 'FLAT_MESH', 'HELP', 'IDF', 'IMPORT', 'INSPECTION', 'MATERIAL_EXTERNAL', 'MESH', 'MESH_PART', 'OPENSCAD', 'PART_DESIGN', 'PLOT', 'POINTS', 'REVERSEENGINEERING', 'ROBOT', 'SHOW', 'SKETCHER', 'SPREADSHEET', 'START', 'SURFACE', 'TECHDRAW', 'TEST', 'TUX', 'WEB'] const definitions = [ `-DCMAKE_BUILD_TYPE=Release`, `-DCMAKE_INSTALL_PREFIX=${install}`, `-DCMAKE_PROJECT_INCLUDE=${bootstrap}`, - '-DBUILD_GUI=OFF', - '-DBUILD_PART=ON', '-DENABLE_DEVELOPER_TESTS=OFF', - '-DFREECAD_USE_FREETYPE=OFF', + `-DBUILD_GUI=${profile === 'desktop' ? 'ON' : 'OFF'}`, + `-DBUILD_PART=${profile === 'desktop' ? 'ON' : 'ON'}`, + `-DFREECAD_USE_FREETYPE=${profile === 'desktop' ? 'ON' : 'OFF'}`, '-DFREECAD_USE_EXTERNAL_FMT=ON', '-DFREECAD_USE_PCH=OFF', '-DINSTALL_TO_SITEPACKAGES=OFF', - ...disabledModules.map((module) => `-DBUILD_${module}=OFF`), + ...(profile === 'desktop' + ? [ + `-DCMAKE_PREFIX_PATH=${resolve(root, '.cache/freecad/sysroot/usr')}`, + `-DCMAKE_LIBRARY_PATH=${resolve(root, '.cache/freecad/sysroot/usr/lib/x86_64-linux-gnu')}`, + `-DCMAKE_INCLUDE_PATH=${resolve(root, '.cache/freecad/sysroot/usr/include')}`, + '-DFREECAD_CHECK_PIVY=OFF', + '-DFREECAD_USE_SHIBOKEN=ON', + '-DFREECAD_USE_PYSIDE=ON', + '-DFREECAD_USE_EXTERNAL_SMESH=OFF', + '-DCOIN3D_VERSION=4.0.3', + '-DBUILD_CLOUD=OFF', + '-DBUILD_JTREADER=OFF', + '-DBUILD_VR=OFF', + '-DBUILD_TEMPLATE=OFF', + '-DBUILD_SANDBOX=OFF', + ...desktopModules.map((module) => `-DBUILD_${module}=ON`), + ] + : disabledModules.map((module) => `-DBUILD_${module}=OFF`)), ] -execFileSync('cmake', ['-S', source, '-B', build, '-G', 'Ninja', '-U', 'CMAKE_PROJECT_TOP_LEVEL_INCLUDES', ...definitions], { cwd: root, stdio: 'inherit' }) -console.log(`FreeCAD native build configured: ${build}`) +const cmakeEnv = profile === 'desktop' + ? { + ...process.env, + PKG_CONFIG_PATH: `${resolve(root, '.cache/freecad/sysroot/usr/lib/x86_64-linux-gnu/pkgconfig')}${process.env.PKG_CONFIG_PATH ? `:${process.env.PKG_CONFIG_PATH}` : ''}`, + PKG_CONFIG_SYSROOT_DIR: resolve(root, '.cache/freecad/sysroot'), + PYTHONPATH: `${resolve(root, '.cache/freecad/sysroot/usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(root, '.cache/freecad/sysroot/usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + } + : process.env +if (profile === 'desktop') { + // Debian's extracted Coin/SoQt configs retain their host prefix. Relocate only + // the generated local sysroot copies so CMake never depends on /usr artifacts. + const sysrootCmakeFiles = [ + 'usr/lib/x86_64-linux-gnu/cmake/Coin-4.0.3/coin-config.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/Coin-4.0.3/coin-export.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/Coin-4.0.3/coin-export-none.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/SoQt-1.6.3/soqt-config.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/SoQt-1.6.3/soqt-export.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/SoQt-1.6.3/soqt-export-none.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/Shiboken6/Shiboken6Config.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/Shiboken6/Shiboken6Config.abi3.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/Shiboken6/Shiboken6Targets.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/Shiboken6/Shiboken6Targets-release.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6/PySide6Config.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6/PySide6Config.abi3.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6/PySide6Targets.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6/PySide6Targets-release.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6Tools/PySide6ToolsConfig.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6Tools/PySide6ToolsTargets.cmake', + 'usr/lib/x86_64-linux-gnu/cmake/PySide6Tools/PySide6ToolsTargets-release.cmake', + ] + for (const relative of sysrootCmakeFiles) { + const file = resolve(sysroot, relative) + try { + await access(file) + const original = await readFile(file, 'utf8') + const relocated = original + .replaceAll('"/usr/', `"${sysroot}/usr/`) + .replaceAll('"/usr"', `"${sysroot}/usr"`) + if (relocated !== original) await writeFile(file, relocated) + } catch (error) { + if (error?.code !== 'ENOENT') throw error + } + } +} +execFileSync('cmake', ['-S', source, '-B', build, '-G', 'Ninja', '-U', 'CMAKE_PROJECT_TOP_LEVEL_INCLUDES', ...definitions], { cwd: root, stdio: 'inherit', env: cmakeEnv }) +console.log(`FreeCAD ${profile} oracle build configured: ${build}`) diff --git a/scripts/fetch-freecad-source.mjs b/scripts/fetch-freecad-source.mjs index aaa6111..03a1dc5 100644 --- a/scripts/fetch-freecad-source.mjs +++ b/scripts/fetch-freecad-source.mjs @@ -24,4 +24,9 @@ git('-C', target, 'fetch', '--depth=1', 'origin', `refs/tags/${toolchain.source. const fetched = git('-C', target, 'rev-parse', 'FETCH_HEAD') if (fetched !== toolchain.source.commit) throw new Error(`Fetched FreeCAD tag resolved to ${fetched}, expected ${toolchain.source.commit}.`) git('-C', target, 'checkout', '--detach', toolchain.source.commit) +// The locked source graph includes GSL, OndselSolver, AddonManager and the +// test support checkout. Initialize every gitlink so a clean oracle build does +// not silently fall back to a partial module set. +git('-C', target, 'submodule', 'sync', '--recursive') +git('-C', target, 'submodule', 'update', '--init', '--recursive') console.log(`FreeCAD source ready: ${target} @ ${toolchain.source.commit}`) diff --git a/scripts/freecad-cam-path-oracle.py b/scripts/freecad-cam-path-oracle.py new file mode 100644 index 0000000..86a6123 --- /dev/null +++ b/scripts/freecad-cam-path-oracle.py @@ -0,0 +1,576 @@ +import hashlib +import json +import os +import sys +import gc + +import FreeCAD as App +import Path + + +MARKER = "FREECAD_CAM_PATH_RESULT=" + + +def emit_marker(value, status=0): + result_file = os.environ.get("FREECAD_CAM_PATH_RESULT_FILE", "") + marker_value = value + if result_file: + parent = os.path.dirname(result_file) + if parent: + os.makedirs(parent, exist_ok=True) + with open(result_file, "w", encoding="utf-8") as stream: + json.dump(value, stream, sort_keys=True, separators=(",", ":")) + stream.write("\n") + os._exit(status) + marker_value = value + payload = (MARKER + json.dumps(marker_value, sort_keys=True, separators=(",", ":")) + "\n").encode("utf-8") + offset = 0 + while offset < len(payload): + offset += os.write(sys.stdout.fileno(), payload[offset:]) + os._exit(status) + + +def command_record(command, precision=9): + threshold = 0.5 * (10 ** -precision) + parameters = {} + for name, value in sorted(dict(command.Parameters).items()): + rounded = round(float(value), precision) + parameters[str(name)] = 0.0 if abs(rounded) < threshold else rounded + parameter_text = " ".join( + "{}{:0.{}f}".format(name, value, precision) + for name, value in parameters.items() + ) + return { + "name": str(command.Name), + "parameters": parameters, + "gcode": (str(command.Name) + (" " + parameter_text if parameter_text else "")).strip(), + } + + +def path_record(obj): + path = obj.Path + bounds = path.BoundBox + return { + "name": obj.Name, + "label": obj.Label, + "typeId": obj.TypeId, + "pathPropertyType": obj.getTypeIdOfProperty("Path"), + "commandCount": len(path.Commands), + "commands": [command_record(command) for command in path.Commands], + "length": round(float(path.Length), 9), + "boundingBox": { + "min": [round(float(bounds.XMin), 9), round(float(bounds.YMin), 9), round(float(bounds.ZMin), 9)], + "max": [round(float(bounds.XMax), 9), round(float(bounds.YMax), 9), round(float(bounds.ZMax), 9)], + }, + "oracleTag": str(getattr(obj, "OracleTag", "")), + } + + +def archive_record(path): + with open(path, "rb") as stream: + payload = stream.read() + return { + "path": path, + "byteLength": len(payload), + "sha256": hashlib.sha256(payload).hexdigest(), + } + + +def load_path_objects(path): + document = App.openDocument(path) + try: + records = [path_record(document.getObject(name)) for name in ("NativePath", "PythonPath")] + return records + finally: + App.closeDocument(document.Name) + + +def verify_preserved_archive(path): + records = load_path_objects(path) + expected_native_count = int(os.environ.get("FREECAD_CAM_PATH_EXPECT_NATIVE_COUNT", "5")) + expected_python_count = int(os.environ.get("FREECAD_CAM_PATH_EXPECT_PYTHON_COUNT", "5")) + expected_native_last = os.environ.get("FREECAD_CAM_PATH_EXPECT_NATIVE_LAST", "") + expected_python_last = os.environ.get("FREECAD_CAM_PATH_EXPECT_PYTHON_LAST", "") + expected_counts = {"NativePath": expected_native_count, "PythonPath": expected_python_count} + result = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "mode": "web-preserved-native-reopen", + "archive": archive_record(path), + "objects": records, + "verified": all( + record["pathPropertyType"] == "Path::PropertyPath" + and record["commandCount"] == expected_counts[record["name"]] + and (record["name"] != "NativePath" or not expected_native_last or record["commands"][-1]["name"] == expected_native_last) + and (record["name"] != "PythonPath" or not expected_python_last or record["commands"][-1]["name"] == expected_python_last) + for record in records + ), + } + emit_marker(result, 0 if result["verified"] else 2) + + +def qt_command_oracle(document, selected_object): + import FreeCADGui as Gui + from PySide import QtCore, QtWidgets + + workbenches = Gui.listWorkbenches() + workbench_name = "CAMWorkbench" if "CAMWorkbench" in workbenches else "PathWorkbench" + if workbench_name not in workbenches: + raise RuntimeError("FreeCAD CAM workbench is unavailable in the desktop oracle") + Gui.activateWorkbench(workbench_name) + Gui.updateGui() + QtWidgets.QApplication.processEvents() + + all_commands = sorted(set(Gui.listCommands())) + cam_commands = [command_id for command_id in all_commands if command_id.startswith("CAM_")] + required = [ + "CAM_Job", + "CAM_Profile", + "CAM_Pocket_Shape", + "CAM_Drilling", + "CAM_Adaptive", + "CAM_Pocket3D", + "CAM_Post", + "CAM_Simulator", + "CAM_Sanity", + "CAM_ToolBitDock", + ] + + def observe(command_id): + command = Gui.Command.get(command_id) + actions = [] if command is None else list(command.getAction()) + if not actions: + return {"registered": command is not None, "actionCount": 0, "enabled": None} + action = actions[0] + return { + "registered": True, + "actionCount": len(actions), + "objectName": str(action.objectName()), + "text": str(action.text()).replace("&", ""), + "toolTip": str(action.toolTip()), + "shortcut": str(action.shortcut().toString()), + "enabled": bool(command.isActive()), + "visible": bool(action.isVisible()), + "iconPresent": not action.icon().isNull(), + } + + Gui.Selection.clearSelection() + Gui.Command.update() + Gui.updateGui() + QtWidgets.QApplication.processEvents() + empty = {command_id: observe(command_id) for command_id in required} + Gui.Selection.addSelection(document.Name, selected_object.Name) + Gui.Command.update() + Gui.updateGui() + QtWidgets.QApplication.processEvents() + selected = {command_id: observe(command_id) for command_id in required} + Gui.Selection.clearSelection() + selected_job_object = document.getObject("OracleJob") + Gui.Selection.addSelection(document.Name, selected_job_object.Name) + Gui.Command.update() + Gui.updateGui() + QtWidgets.QApplication.processEvents() + selected_job = {command_id: observe(command_id) for command_id in required} + Gui.Selection.clearSelection() + selected_operation_object = document.getObject("OracleProfile") + Gui.Selection.addSelection(document.Name, selected_operation_object.Name) + Gui.Command.update() + Gui.updateGui() + QtWidgets.QApplication.processEvents() + selected_operation = {command_id: observe(command_id) for command_id in required} + Gui.Selection.clearSelection() + empty_document = App.newDocument("CamQtEmptyContext") + Gui.Command.update() + Gui.updateGui() + QtWidgets.QApplication.processEvents() + empty_document_state = {command_id: observe(command_id) for command_id in required} + App.closeDocument(empty_document.Name) + App.setActiveDocument(document.Name) + Gui.Command.update() + Gui.updateGui() + + main_window = Gui.getMainWindow() + toolbars = [] + for toolbar in main_window.findChildren(QtWidgets.QToolBar): + command_ids = [str(action.objectName()) for action in toolbar.actions() if str(action.objectName()).startswith("CAM_")] + if command_ids: + toolbars.append({ + "objectName": str(toolbar.objectName()), + "title": str(toolbar.windowTitle()).replace("&", ""), + "visible": bool(toolbar.isVisible()), + "commands": command_ids, + }) + + menus = [] + for menu_action in main_window.menuBar().actions(): + menu = menu_action.menu() + if menu is None: + continue + command_ids = [] + for action in menu.actions(): + action_name = str(action.objectName()) + if action_name.startswith("CAM_"): + command_ids.append(action_name) + submenu = action.menu() + if submenu is not None: + command_ids.extend( + str(child.objectName()) + for child in submenu.actions() + if str(child.objectName()).startswith("CAM_") + ) + if command_ids: + menus.append({ + "title": str(menu_action.text()).replace("&", ""), + "commands": sorted(set(command_ids)), + }) + + def flush_qt(): + Gui.updateGui() + QtWidgets.QApplication.processEvents() + + def task_panel_state(phase): + focus = QtWidgets.QApplication.focusWidget() + button_boxes = [box for box in main_window.findChildren(QtWidgets.QDialogButtonBox) if box.isVisible()] + buttons = [] + for box in button_boxes: + for button in box.buttons(): + buttons.append({ + "text": str(button.text()).replace("&", ""), + "objectName": str(button.objectName()), + "enabled": bool(button.isEnabled()), + "visible": bool(button.isVisible()), + "default": bool(button.isDefault()), + "role": str(box.buttonRole(button)), + }) + fields = [] + field_types = (QtWidgets.QLineEdit, QtWidgets.QComboBox, QtWidgets.QSpinBox, QtWidgets.QDoubleSpinBox, QtWidgets.QCheckBox) + widgets = [] + seen_widgets = set() + for field_type in field_types: + for widget in main_window.findChildren(field_type): + identity = id(widget) + if identity not in seen_widgets: + widgets.append(widget) + seen_widgets.add(identity) + for widget in widgets: + if not widget.isVisible(): + continue + fields.append({ + "className": str(widget.metaObject().className()), + "objectName": str(widget.objectName()), + "enabled": bool(widget.isEnabled()), + "focus": widget is focus, + }) + field_classes = sorted({field["className"] for field in fields}) + in_edit = Gui.activeDocument().getInEdit() if Gui.activeDocument() else None + in_edit_object = getattr(in_edit, "Object", None) if in_edit else None + return { + "phase": phase, + "activeDialog": bool(Gui.Control.activeDialog()), + "inEdit": str(getattr(in_edit_object, "Name", "")) if in_edit else "", + "focus": None if focus is None else {"className": str(focus.metaObject().className()), "objectName": str(focus.objectName())}, + "buttonBoxCount": len(button_boxes), + "buttonTexts": [{"text": button["text"], "enabled": button["enabled"], "default": button["default"], "role": button["role"]} for button in buttons], + "fieldCount": len(fields), + "fieldClasses": field_classes, + } + + def close_task_panel(action): + candidates = [] + for box in main_window.findChildren(QtWidgets.QDialogButtonBox): + if not box.isVisible(): + continue + for button in box.buttons(): + role = box.buttonRole(button) + if action == "accept" and role in (QtWidgets.QDialogButtonBox.AcceptRole, QtWidgets.QDialogButtonBox.ApplyRole): + candidates.append(button) + if action == "cancel" and role in (QtWidgets.QDialogButtonBox.RejectRole, QtWidgets.QDialogButtonBox.DestructiveRole): + candidates.append(button) + clicked = False + if candidates: + candidates[0].click() + clicked = True + flush_qt() + if Gui.Control.activeDialog(): + Gui.activeDocument().resetEdit() + flush_qt() + return clicked + + def edit_lifecycle(object_name, action): + before = task_panel_state("before") + entered = bool(Gui.activeDocument().setEdit(object_name)) + flush_qt() + active = task_panel_state("active") + clicked = close_task_panel(action) + closed = task_panel_state("closed") + return { + "objectName": object_name, + "action": action, + "setEditAccepted": entered, + "buttonClicked": clicked, + "before": before, + "active": active, + "closed": closed, + "dialogOpened": active["activeDialog"] and bool(active["inEdit"]), + "dialogClosed": not closed["activeDialog"] and not closed["inEdit"], + } + + task_lifecycles = [ + edit_lifecycle(selected_job_object.Name, "cancel"), + edit_lifecycle(selected_operation_object.Name, "accept"), + edit_lifecycle(selected_operation_object.Name, "cancel"), + ] + gc.collect() + QtWidgets.QApplication.processEvents() + + observations = [] + for command_id in required: + observations.append({ + "id": command_id, + "emptySelection": empty[command_id], + "selectedModel": selected[command_id], + "selectedJob": selected_job[command_id], + "selectedOperation": selected_operation[command_id], + "emptyDocument": empty_document_state[command_id], + "selectionChangesEnabledState": len({ + (empty[command_id].get("enabled"), empty[command_id].get("isActive")), + (selected[command_id].get("enabled"), selected[command_id].get("isActive")), + (selected_job[command_id].get("enabled"), selected_job[command_id].get("isActive")), + (selected_operation[command_id].get("enabled"), selected_operation[command_id].get("isActive")), + (empty_document_state[command_id].get("enabled"), empty_document_state[command_id].get("isActive")), + }) > 1, + }) + return { + "guiUp": bool(App.GuiUp), + "qtVersion": str(QtCore.qVersion()), + "workbench": workbench_name, + "activeWorkbench": str(Gui.activeWorkbench().name()), + "registeredCommandCount": len(all_commands), + "camCommandCount": len(cam_commands), + "camCommands": cam_commands, + "requiredCommands": observations, + "toolbarCount": len(toolbars), + "toolbars": sorted(toolbars, key=lambda item: (item["title"], item["objectName"])), + "menuCount": len(menus), + "menus": menus, + "taskLifecycles": task_lifecycles, + "taskLifecycleVerified": all(item["dialogOpened"] and item["dialogClosed"] for item in task_lifecycles), + } + + +def profile_algorithm_oracle(): + import Path.Main.Job as PathJob + import Path.Op.Profile as PathProfile + + fixture = os.path.join(App.getHomePath(), "Mod", "CAM", "CAMTests", "test_profile.fcstd") + App.ConfigSet("SuppressRecomputeRequiredDialog", "True") + document = App.openDocument(fixture) + App.ConfigSet("SuppressRecomputeRequiredDialog", "") + job = PathJob.Create("OracleJob", [document.Body], None) + job.GeometryTolerance.Value = 0.001 + profile = PathProfile.Create("OracleProfile", parentJob=job) + profile.Base = [(document.Body, ["Face18"])] + profile.processCircles = True + profile.processHoles = True + profile.UseComp = True + profile.Direction = "CW" + document.recompute() + + def summarize(operation, scenario_id): + commands = [command_record(command, 2) for command in operation.Path.Commands] + cutting = [command for command in commands if command["name"] in ("G1", "G2", "G3")] + canonical = json.dumps(commands, sort_keys=True, separators=(",", ":")) + return { + "id": scenario_id, + "useComp": bool(operation.UseComp), + "direction": str(operation.Direction), + "commandCount": len(commands), + "cuttingCommandCount": len(cutting), + "commandSha256": hashlib.sha256(canonical.encode("utf-8")).hexdigest(), + "firstCuttingCommand": cutting[0] if cutting else None, + "lastCuttingCommand": cutting[-1] if cutting else None, + "pathLength": round(float(operation.Path.Length), 2), + "commands": commands, + } + + compensated = summarize(profile, "outside-cw-tool-comp") + no_comp = PathProfile.Create("OracleProfileNoComp", parentJob=job) + no_comp.Base = [(document.Body, ["Face18"])] + no_comp.processCircles = True + no_comp.processHoles = True + no_comp.UseComp = False + no_comp.Direction = "CW" + document.recompute() + uncompensated = summarize(no_comp, "outside-cw-no-comp") + result = { + "fixture": "Mod/CAM/CAMTests/test_profile.fcstd", + "fixtureSha256": archive_record(fixture)["sha256"], + "modelTypeId": document.Body.TypeId, + "jobTypeId": job.TypeId, + "operationTypeId": profile.TypeId, + "pathPropertyType": profile.getTypeIdOfProperty("Path"), + "commandCount": compensated["commandCount"], + "cuttingCommandCount": compensated["cuttingCommandCount"], + "commandSha256": compensated["commandSha256"], + "normalizationToleranceMm": 0.01, + "firstCuttingCommand": compensated["firstCuttingCommand"], + "lastCuttingCommand": compensated["lastCuttingCommand"], + "pathLength": compensated["pathLength"], + "commands": compensated["commands"], + "variants": [compensated, uncompensated], + } + return document, result + + +def helix_algorithm_oracle(): + import Path.Main.Job as PathJob + import Path.Op.Helix as PathHelix + + fixture = os.path.join(App.getHomePath(), "Mod", "CAM", "CAMTests", "test_holes00.fcstd") + App.ConfigSet("SuppressRecomputeRequiredDialog", "True") + document = App.openDocument(fixture) + App.ConfigSet("SuppressRecomputeRequiredDialog", "") + try: + job = PathJob.Create("HelixOracleJob", [document.Body], None) + job.Tools.Group[0].Tool.Diameter = 0.9 + operation = PathHelix.Create("OracleHelix", parentJob=job) + scenarios = [] + expected = [ + ("inside-conventional", "Inside", "Conventional", "CW", "G2"), + ("outside-climb", "Outside", "Climb", "CW", "G2"), + ("inside-climb", "Inside", "Climb", "CCW", "G3"), + ("outside-conventional", "Outside", "Conventional", "CCW", "G3"), + ] + for scenario_id, start_side, cut_mode, expected_direction, expected_arc in expected: + operation.StartSide = start_side + operation.CutMode = cut_mode + operation.enforceRecompute() + document.recompute() + commands = [command_record(command, 2) for command in operation.Path.Commands] + arc_commands = [command for command in commands if command["name"] in ("G2", "G3")] + arc_names = sorted({command["name"] for command in arc_commands}) + command_histogram = { + name: sum(1 for command in commands if command["name"] == name) + for name in sorted({command["name"] for command in commands}) + } + canonical = json.dumps(commands, sort_keys=True, separators=(",", ":")) + scenarios.append({ + "id": scenario_id, + "startSide": str(operation.StartSide), + "cutMode": str(operation.CutMode), + "direction": str(operation.Direction), + "expectedDirection": expected_direction, + "expectedArc": expected_arc, + "arcNames": arc_names, + "arcCommandCount": len(arc_commands), + "firstArcCommand": arc_commands[0] if arc_commands else None, + "lastArcCommand": arc_commands[-1] if arc_commands else None, + "commandCount": len(commands), + "commandHistogram": command_histogram, + "commandSha256": hashlib.sha256(canonical.encode("utf-8")).hexdigest(), + "pathLength": round(float(operation.Path.Length), 2), + }) + base_sub_elements = sum(len(base[1]) for base in operation.Base) + return { + "fixture": "Mod/CAM/CAMTests/test_holes00.fcstd", + "fixtureSha256": archive_record(fixture)["sha256"], + "modelTypeId": document.Body.TypeId, + "jobTypeId": job.TypeId, + "operationTypeId": operation.TypeId, + "pathPropertyType": operation.getTypeIdOfProperty("Path"), + "toolDiameterMm": round(float(job.Tools.Group[0].Tool.Diameter), 3), + "baseSubElementCount": base_sub_elements, + "normalizationToleranceMm": 0.01, + "scenarioCount": len(scenarios), + "scenarios": scenarios, + } + finally: + App.closeDocument(document.Name) + + +def create_roundtrip_archives(source_path, mutated_path): + document = App.newDocument("NativeCamPathRoundTrip") + native = document.addObject("Path::Feature", "NativePath") + native.Label = "Native Path Original" + native.addProperty("App::PropertyString", "OracleTag", "Oracle") + native.OracleTag = "native-v1" + python_path = document.addObject("Path::FeaturePython", "PythonPath") + python_path.Label = "Python Path Original" + python_path.addProperty("App::PropertyString", "OracleTag", "Oracle") + python_path.OracleTag = "python-v1" + + commands = [ + Path.Command("G0", {"X": 0.0, "Y": 0.0, "Z": 5.0}), + Path.Command("G1", {"X": 0.0, "Y": 0.0, "Z": 0.0, "F": 120.0}), + Path.Command("G1", {"X": 20.0, "Y": 0.0, "Z": 0.0, "F": 300.0}), + Path.Command("G2", {"X": 20.0, "Y": 20.0, "I": 0.0, "J": 10.0, "F": 300.0}), + Path.Command("G0", {"X": 20.0, "Y": 20.0, "Z": 5.0}), + ] + native.Path = Path.Path(commands) + python_path.Path = Path.Path([command for command in commands]) + document.recompute() + document.saveAs(source_path) + source_before_close = [path_record(native), path_record(python_path)] + App.closeDocument(document.Name) + + source_reopened = load_path_objects(source_path) + mutated = App.openDocument(source_path) + native_mutated = mutated.getObject("NativePath") + python_mutated = mutated.getObject("PythonPath") + native_mutated.Label = "Native Path Mutated" + native_mutated.OracleTag = "native-v2" + native_mutated.Path = Path.Path(native_mutated.Path.Commands + [Path.Command("M5")]) + python_mutated.Label = "Python Path Mutated" + python_mutated.OracleTag = "python-v2" + python_mutated.Path = Path.Path(python_mutated.Path.Commands + [Path.Command("M2")]) + mutated.recompute() + mutated.saveAs(mutated_path) + App.closeDocument(mutated.Name) + mutated_reopened = load_path_objects(mutated_path) + + return { + "source": archive_record(source_path), + "mutated": archive_record(mutated_path), + "sourceBeforeClose": source_before_close, + "sourceReopened": source_reopened, + "mutatedReopened": mutated_reopened, + } + + +preserved_path = os.environ.get("FREECAD_CAM_PATH_VERIFY_ARCHIVE", "") +if os.environ.get("FREECAD_CAM_PATH_VERIFY_ONLY") == "1": + if not preserved_path: + raise RuntimeError("FREECAD_CAM_PATH_VERIFY_ARCHIVE is required in verify-only mode") + verify_preserved_archive(preserved_path) + +source_path = os.environ.get("FREECAD_CAM_PATH_SOURCE", "") +mutated_path = os.environ.get("FREECAD_CAM_PATH_MUTATED", "") +if not source_path or not mutated_path: + raise RuntimeError("FREECAD_CAM_PATH_SOURCE and FREECAD_CAM_PATH_MUTATED are required") + +profile_document, profile_result = profile_algorithm_oracle() +helix_result = helix_algorithm_oracle() +App.setActiveDocument(profile_document.Name) +try: + qt_result = qt_command_oracle(profile_document, profile_document.Body) +finally: + App.closeDocument(profile_document.Name) + +fcstd_result = create_roundtrip_archives(source_path, mutated_path) +version = App.Version() +result = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1", + "freecadVersion": ".".join(str(value) for value in version[:3]), + "revision": str(version[3]), + "gitCommit": str(version[7]) if len(version) > 7 else "", + "nativeRuntime": { + "guiUp": bool(App.GuiUp), + "pathModule": str(getattr(Path, "__file__", "built-in")), + }, + "profileAlgorithm": profile_result, + "helixAlgorithm": helix_result, + "qtDynamicOracle": qt_result, + "fcstdRoundTrip": fcstd_result, +} +emit_marker(result) diff --git a/scripts/freecad-composite-history-elementmap-oracle.py b/scripts/freecad-composite-history-elementmap-oracle.py new file mode 100644 index 0000000..4f6dae7 --- /dev/null +++ b/scripts/freecad-composite-history-elementmap-oracle.py @@ -0,0 +1,300 @@ +import hashlib +import json +import os +import tempfile +import zipfile + +import FreeCAD as App +import Part +import Sketcher + + +FREECAD_COMMIT = "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + + +def version_text(): + return ".".join(str(value) for value in App.Version()[:3]) + + +def square_sketch(body, name, half_size=2.0, z=0.0): + sketch = body.newObject("Sketcher::SketchObject", name) + points = [(-half_size, -half_size), (half_size, -half_size), (half_size, half_size), (-half_size, half_size)] + for index, start in enumerate(points): + end = points[(index + 1) % len(points)] + sketch.addGeometry(Part.LineSegment(App.Vector(start[0], start[1], 0), App.Vector(end[0], end[1], 0)), False) + sketch.Placement.Base.z = z + return sketch + + +def shape_summary(shape): + if shape is None or shape.isNull(): + return {"valid": False, "solids": 0, "faces": 0, "edges": 0, "volume": 0.0} + return {"valid": bool(shape.isValid()), "solids": len(shape.Solids), "faces": len(shape.Faces), "edges": len(shape.Edges), "volume": float(shape.Volume)} + + +def history_entry(obj, name): + try: + history = obj.getElementHistory(name) + except Exception: + return [] + result = [] + for source, mapped, children in history: + result.append({"object": getattr(source, "Name", ""), "typeId": getattr(source, "TypeId", ""), "mappedName": mapped, "children": list(children or [])}) + return result + + +def relation_from_mapped_name(mapped_name): + if not mapped_name: + return "preserved" + if ":G" in mapped_name: + return "generated" + if ":M" in mapped_name: + return "modified" + return "preserved" + + +def native_mapping(obj, kind, index, name, mapped_name, mapped_ids, indexed_name, indexed_ids, history): + reference_name = mapped_name or indexed_name or name + source_refs = [] + for item in history[1:]: + source_name = item.get("object") + source_mapped_name = item.get("mappedName") or "" + if not source_name: + continue + source_refs.append({ + "objectId": source_name, + # FreeCAD exposes the source object and mapped name, but not a + # persistent source subshape id in this API response. + "persistentId": "%s:mapped:%s" % (source_name, source_mapped_name or "%s%d" % (kind, index)), + "stageId": source_name, + "mappedName": source_mapped_name, + }) + return { + "kind": kind.lower(), + "resultIndex": index - 1, + "resultPersistentId": "%s:%s:%d" % (obj.Name, kind.lower(), index - 1), + "reference": { + "name": reference_name, + "stringIds": list(mapped_ids or indexed_ids or []), + "indexedName": {"type": kind, "index": index}, + }, + "relation": relation_from_mapped_name(mapped_name), + "sourceRefs": source_refs, + "nativeApi": "getElementMappedName/getElementIndexedName/getElementHistory", + "mappedName": mapped_name, + "indexedName": indexed_name, + "mappedStringIds": list(mapped_ids or []), + "indexedStringIds": list(indexed_ids or []), + } + + +def stage_report(obj): + shape = getattr(obj, "Shape", None) + if shape is None or shape.isNull(): + return None + names = [] + native_mapped_names = [] + native_evidence_complete = True + mapped_name_entries = 0 + indexed_name_entries = 0 + for kind, count in (("Face", len(shape.Faces)), ("Edge", len(shape.Edges)), ("Vertex", len(shape.Vertexes))): + for index in range(1, count + 1): + name = "%s%d" % (kind, index) + try: + mapped, mapped_ids = shape.getElementMappedName(name, True) + except Exception: + mapped, mapped_ids = "", [] + try: + indexed, indexed_ids = shape.getElementIndexedName(name, True) + except Exception: + indexed, indexed_ids = "", [] + history = history_entry(obj, name) + if not mapped and not indexed: + native_evidence_complete = False + if mapped: + mapped_name_entries += 1 + if indexed: + indexed_name_entries += 1 + names.append({ + "name": name, + "mappedName": mapped, + "mappedStringIds": list(mapped_ids or []), + "indexedName": indexed, + "indexedStringIds": list(indexed_ids or []), + "history": history, + }) + native_mapped_names.append(native_mapping(obj, kind, index, name, mapped, mapped_ids, indexed, indexed_ids, history)) + native_evidence = { + "schemaVersion": 1, + "stageId": obj.Name, + "resultObjectId": obj.Name, + "status": "native-evidence" if native_evidence_complete and native_mapped_names else "missing", + "mappedNames": native_mapped_names, + "source": "FreeCAD 1.1.1 runtime API", + "mappedNameApiEntries": mapped_name_entries, + "indexedNameApiEntries": indexed_name_entries, + "privateTokenEvidenceComplete": mapped_name_entries == len(native_mapped_names) and mapped_name_entries > 0, + "internalBuilderEvidence": False, + "reason": None if native_evidence_complete else "One or more subshapes had no mapped or indexed name from the native API.", + } + return { + "name": obj.Name, + "label": obj.Label, + "typeId": obj.TypeId, + "shape": shape_summary(shape), + "elementMapVersion": getattr(shape, "ElementMapVersion", None), + "elementMapSize": int(getattr(shape, "ElementMapSize", 0) or 0), + "names": names, + "nativeEvidence": native_evidence, + } + + +def make_boolean(doc, operation, index): + base = doc.addObject("Part::Box", "Box%02d" % index) + base.Length, base.Width, base.Height = 10.0, 10.0, 10.0 + tool = doc.addObject("Part::Cylinder", "Cylinder%02d" % index) + tool.Radius, tool.Height = 3.0 + (index % 3), 14.0 + tool.Placement.Base = App.Vector(5.0, 5.0, -2.0) + if operation == "fuse": + result = doc.addObject("Part::Fuse", "Fuse%02d" % index) + elif operation == "common": + result = doc.addObject("Part::Common", "Common%02d" % index) + else: + result = doc.addObject("Part::Cut", "Cut%02d" % index) + result.Base, result.Tool = base, tool + return result + + +def make_partdesign(doc, mode, index): + body = doc.addObject("PartDesign::Body", "Body%02d" % index) + sketch = square_sketch(body, "Sketch%02d" % index, 2.0 + (index % 2) * 0.5) + pad = body.newObject("PartDesign::Pad", "Pad%02d" % index) + pad.Profile, pad.Length = sketch, 5.0 + (index % 4) + if mode == "midplane": + pad.Midplane = True + elif mode == "reverse": + pad.Reversed = True + elif mode == "taper": + pad.TaperAngle = 4.0 + elif mode == "twoside": + pad.Length2 = 2.0 + if hasattr(pad, "Type2"): + pad.Type2 = "Length" + doc.recompute() + if mode.startswith("pocket"): + base = pad + pocket_sketch = square_sketch(body, "PocketSketch%02d" % index, 0.8, 5.0) + pocket = body.newObject("PartDesign::Pocket", "Pocket%02d" % index) + pocket.Profile = pocket_sketch + if hasattr(pocket, "BaseFeature"): + pocket.BaseFeature = base + pocket.Length = 3.0 + if mode == "pocket-through": + pocket.Type = 1 + elif mode == "pocket-midplane": + pocket.Midplane = True + elif mode == "pocket-twoside": + pocket.Length2 = 1.0 + doc.recompute() + return pocket + return pad + + +def make_composite(doc, index): + first = make_boolean(doc, "fuse" if index % 2 else "cut", index) + second = doc.addObject("Part::Box", "SecondBox%02d" % index) + second.Length, second.Width, second.Height = 4.0, 4.0, 4.0 + second.Placement.Base = App.Vector(3.0, 3.0, 3.0) + final = doc.addObject("Part::Cut", "CompositeCut%02d" % index) + final.Base, final.Tool = first, second + return final + + +def make_dressup(doc, mode, index): + body = doc.addObject("PartDesign::Body", "DressupBody%02d" % index) + box = body.newObject("PartDesign::AdditiveBox", "DressupBox%02d" % index) + box.Length, box.Width, box.Height = 10.0, 10.0, 10.0 + doc.recompute() + if mode == "fillet": + feature = body.newObject("PartDesign::Fillet", "Fillet%02d" % index) + feature.Base, feature.Radius = (box, ["Edge1"]), 1.0 + else: + feature = body.newObject("PartDesign::Chamfer", "Chamfer%02d" % index) + feature.Base, feature.Size = (box, ["Edge1"]), 1.0 + doc.recompute() + return feature + + +def collect_case(case_id, factory, index, directory): + name = "ElementMapOracle%02d" % index + doc = App.newDocument(name) + try: + final = factory(doc, index) + doc.recompute() + stages = [entry for obj in doc.Objects if (entry := stage_report(obj)) is not None] + before_names = {(stage["name"], entry["name"]): entry.get("mappedName") for stage in stages for entry in stage["names"]} + final_name = getattr(final, "Name", "") + path = os.path.join(directory, "%s.FCStd" % case_id) + doc.saveAs(path) + resources = {} + string_hasher_resource = None + with zipfile.ZipFile(path, "r") as archive: + for resource_path in archive.namelist(): + if resource_path == "StringHasher.Table.txt": + raw = archive.read(resource_path) + try: + text = raw.decode("utf-8") + except UnicodeDecodeError: + text = None + string_hasher_resource = {"sha256": hashlib.sha256(raw).hexdigest(), "text": text} if text is not None else {"sha256": hashlib.sha256(raw).hexdigest(), "text": None} + continue + if not resource_path.endswith(".Map.txt"): + continue + raw = archive.read(resource_path) + try: + text = raw.decode("utf-8") + except UnicodeDecodeError: + continue + resources[resource_path] = {"sha256": hashlib.sha256(raw).hexdigest(), "text": text} + stages = [dict(stage, namingEvidenceStatus=stage["nativeEvidence"]["status"], elementMap2ResourcePaths=[path for path in resources if path.startswith(stage["name"] + ".")]) for stage in stages] + App.closeDocument(doc.Name) + reopened = App.openDocument(path) + reopened.recompute() + after_stages = [entry for obj in reopened.Objects if (entry := stage_report(obj)) is not None] + after_names = {(stage["name"], entry["name"]): entry.get("mappedName") for stage in after_stages for entry in stage["names"]} + roundtrip_drift = sum(1 for key, value in before_names.items() if after_names.get(key) != value) + App.closeDocument(reopened.Name) + return {"id": case_id, "finalObject": final_name, "stages": stages, "elementMapResources": resources, "stringHasherResource": string_hasher_resource, "roundtripNameDrift": roundtrip_drift, "status": "pass"} + except Exception as error: + return {"id": case_id, "finalObject": "", "stages": [], "elementMapResources": {}, "status": "failed", "error": str(error)} + finally: + if name in App.listDocuments(): + App.closeDocument(name) + + +factories = [] +for operation in ("fuse", "cut", "common"): + for variant in range(1, 4): + factories.append(("boolean-%s-%d" % (operation, variant), lambda doc, index, op=operation: make_boolean(doc, op, index))) +for mode in ("plain", "midplane", "reverse", "taper", "twoside", "pocket", "pocket-through", "pocket-midplane", "pocket-twoside", "pocket-taper", "pocket-up-to-face"): + factories.append(("partdesign-%s" % mode, lambda doc, index, value=mode: make_partdesign(doc, value, index))) +for variant in range(1, 7): + factories.append(("composite-%02d" % variant, make_composite)) +for mode in ("fillet", "chamfer"): + for variant in range(1, 3): + factories.append(("dressup-%s-%d" % (mode, variant), lambda doc, index, value=mode: make_dressup(doc, value, index))) + +with tempfile.TemporaryDirectory(prefix="freecad-elementmap-oracle-") as directory: + cases = [collect_case(case_id, factory, index + 1, directory) for index, (case_id, factory) in enumerate(factories[:30])] + +version = App.Version() +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-composite-history-elementmap2", + "freecadVersion": version_text(), + "gitCommit": FREECAD_COMMIT, + "status": "pass" if len(cases) == 30 and all(case["status"] == "pass" for case in cases) else "failed", + "cases": cases, + "summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["status"] == "pass"), "failed": sum(1 for case in cases if case["status"] != "pass")}, +} +print("FREECAD_COMPOSITE_HISTORY_ELEMENTMAP_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":"))) diff --git a/scripts/freecad-fcstd-gui-probe.py b/scripts/freecad-fcstd-gui-probe.py new file mode 100644 index 0000000..c3f189c --- /dev/null +++ b/scripts/freecad-fcstd-gui-probe.py @@ -0,0 +1,203 @@ +import json +import os +import sys + +import FreeCAD as App +import FreeCADGui as Gui +import Part +import Sketcher + + +path = os.environ.get("FREECAD_FCSTD_PATH", "") +object_name = os.environ.get("FREECAD_FCSTD_OBJECT", "Box") +if not path: + raise RuntimeError("FREECAD_FCSTD_PATH must point to an FCStd file.") + +if os.environ.get("FREECAD_FCSTD_CREATE") == "1": + generated = App.newDocument("GuiOracleGenerator") + generated_object = generated.addObject(os.environ.get("FREECAD_FCSTD_CREATE_TYPEID", "Part::Feature"), object_name) + for property_name, property_value in json.loads(os.environ.get("FREECAD_FCSTD_CREATE_PROPERTIES", "{}")).items(): + setattr(generated_object, property_name, property_value) + generated_brep_path = os.environ.get("FREECAD_BREP_PATH", "") + if generated_brep_path: + generated_shape = Part.Shape() + generated_shape.read(generated_brep_path) + generated_object.Shape = generated_shape + generated_view = Gui.getDocument(generated.Name).getObject(object_name) + generated_view.Visibility = False + generated_view.Transparency = 35 + generated_view.LineColor = (0x11 / 255.0, 0x22 / 255.0, 0x33 / 255.0) + generated_view.PointColor = (0x44 / 255.0, 0x55 / 255.0, 0x66 / 255.0) + generated_view.Deviation = 0.2 + generated.recompute() + generated.saveAs(path) + App.closeDocument(generated.Name) + +if not os.path.isfile(path): + raise RuntimeError("FREECAD_FCSTD_PATH does not exist.") + +document = App.openDocument(path) +obj = document.getObject(object_name) +if obj is None: + raise RuntimeError(f"FCStd object does not exist: {object_name}") +if os.environ.get("FREECAD_FCSTD_RECOMPUTE") == "1": + document.recompute() +view = Gui.getDocument(document.Name).getObject(object_name) +if view is None: + raise RuntimeError(f"FCStd ViewObject does not exist: {object_name}") + +resave_path = os.environ.get("FREECAD_FCSTD_RESAVE_PATH", "") +if resave_path: + document.saveAs(resave_path) + +shape_result = { + "shapeNull": None, + "shapeValid": None, + "solidCount": None, + "faceCount": None, + "volume": None, + "boundingBox": None, + "shapeError": None, +} +if hasattr(obj, "Shape"): + try: + shape_result.update({ + "shapeNull": bool(obj.Shape.isNull()), + "shapeValid": bool(obj.Shape.isValid()) if not obj.Shape.isNull() else None, + "solidCount": len(obj.Shape.Solids), + "faceCount": len(obj.Shape.Faces), + "volume": float(obj.Shape.Volume), + "boundingBox": { + "min": [float(obj.Shape.BoundBox.XMin), float(obj.Shape.BoundBox.YMin), float(obj.Shape.BoundBox.ZMin)], + "max": [float(obj.Shape.BoundBox.XMax), float(obj.Shape.BoundBox.YMax), float(obj.Shape.BoundBox.ZMax)], + }, + }) + except Exception as error: + shape_result["shapeError"] = str(error) + +direct_brep_result = None +direct_brep_path = os.environ.get("FREECAD_BREP_PATH", "") +if direct_brep_path: + direct_brep_result = {"valid": None, "solidCount": None, "faceCount": None, "volume": None, "error": None} + try: + direct_shape = Part.Shape() + direct_shape.read(direct_brep_path) + direct_brep_result.update({ + "valid": bool(direct_shape.isValid()), + "solidCount": len(direct_shape.Solids), + "faceCount": len(direct_shape.Faces), + "volume": float(direct_shape.Volume), + }) + except Exception as error: + direct_brep_result["error"] = str(error) + +property_result = {} +for property_name in filter(None, os.environ.get("FREECAD_FCSTD_PROPERTIES", "").split(",")): + try: + property_value = getattr(obj, property_name) + if hasattr(property_value, "Value"): + property_result[property_name] = float(property_value.Value) + elif hasattr(property_value, "Name"): + property_result[property_name] = property_value.Name + else: + property_result[property_name] = property_value + except Exception as error: + property_result[property_name] = {"error": str(error)} + +sketch_result = { + "geometryCount": None, + "constraintCount": None, + "constructionGeometry": None, + "constraintNames": None, + "constraintTypes": None, + "externalGeometryCount": None, + "externalGeoCount": None, + "externalTypes": None, + "externalLinks": None, + "externalStates": None, + "mapMode": None, + "attachmentSupport": None, + "attachmentOffset": None, +} +if hasattr(obj, "GeometryCount") and hasattr(obj, "ConstraintCount"): + try: + sketch_result.update({ + "geometryCount": int(obj.GeometryCount), + "constraintCount": int(obj.ConstraintCount), + "constructionGeometry": [index for index in range(int(obj.GeometryCount)) if obj.getConstruction(index)], + "constraintNames": [str(constraint.Name) for constraint in obj.Constraints], + "constraintTypes": [str(constraint.Type) for constraint in obj.Constraints], + }) + except Exception as error: + sketch_result["error"] = str(error) +if hasattr(obj, "ExternalGeometry") and hasattr(obj, "ExternalGeo"): + try: + external_links = [] + for linked_object, sub_elements in obj.ExternalGeometry: + external_links.append({ + "objectName": str(linked_object.Name), + "subElements": [str(sub_element) for sub_element in sub_elements], + }) + sketch_result.update({ + "externalGeometryCount": len(obj.ExternalGeometry), + "externalGeoCount": len(obj.ExternalGeo), + "externalTypes": [int(value) for value in obj.ExternalTypes], + "externalLinks": external_links, + "externalStates": [ + { + "ref": str(facade.Ref), + "id": int(facade.Id), + "geometryType": type(geometry).__name__, + "flags": sum( + (1 << index) if facade.testFlag(flag) else 0 + for index, flag in enumerate(("Defining", "Frozen", "Detached", "Missing", "Sync")) + ), + } + for geometry in obj.ExternalGeo + for facade in (Sketcher.ExternalGeometryFacade(geometry),) + if facade.Ref + ], + }) + except Exception as error: + sketch_result["externalError"] = str(error) +if hasattr(obj, "MapMode") and hasattr(obj, "AttachmentSupport") and hasattr(obj, "AttachmentOffset"): + try: + attachment_links = [] + for linked_object, sub_elements in obj.AttachmentSupport: + attachment_links.append({ + "objectName": str(linked_object.Name), + "subElements": [str(sub_element) for sub_element in sub_elements], + }) + offset = obj.AttachmentOffset + sketch_result.update({ + "mapMode": str(obj.MapMode), + "attachmentSupport": attachment_links, + "attachmentOffset": { + "position": [float(offset.Base.x), float(offset.Base.y), float(offset.Base.z)], + "axis": [float(offset.Rotation.Axis.x), float(offset.Rotation.Axis.y), float(offset.Rotation.Axis.z)], + "angle": float(offset.Rotation.Angle), + }, + }) + except Exception as error: + sketch_result["attachmentError"] = str(error) + +result = { + "schemaVersion": 1, + "freecadVersion": ".".join(str(value) for value in App.Version()[:3]), + "guiUp": bool(getattr(App, "GuiUp", False)), + "objectName": object_name, + "visibility": bool(view.Visibility), + "transparency": int(view.Transparency), + "lineColor": [float(value) for value in view.LineColor], + "pointColor": [float(value) for value in view.PointColor], + "shapeColor": [float(value) for value in view.ShapeColor], + "deviation": float(view.Deviation), + "directBrep": direct_brep_result, + "properties": property_result, + **sketch_result, + **shape_result, +} +App.closeDocument(document.Name) +print("FREECAD_FCSTD_GUI_RESULT=" + json.dumps(result, sort_keys=True, separators=(",", ":"))) +sys.stdout.flush() +sys.exit(0) diff --git a/scripts/freecad-golden-contract.mjs b/scripts/freecad-golden-contract.mjs index d685c3b..5686b3c 100644 --- a/scripts/freecad-golden-contract.mjs +++ b/scripts/freecad-golden-contract.mjs @@ -27,6 +27,17 @@ export function validateGoldenOperation(operation, label = 'operation') { if (!positive(operation.radius)) throw new RangeError(`${label} sphere radius must be positive.`) } else if (operation.type === 'cone') { if (!finite(operation.radius1) || operation.radius1 < 0 || !finite(operation.radius2) || operation.radius2 < 0 || operation.radius1 + operation.radius2 <= 0 || !positive(operation.height) || !positive(operation.angle) || operation.angle > 360) throw new RangeError(`${label} cone parameters are invalid.`) + } else if (operation.type === 'ellipsoid') { + if (!positive(operation.radius1) || !positive(operation.radius2) || !finite(operation.radius3) || operation.radius3 < 0 || !finite(operation.angle1) || !finite(operation.angle2) || operation.angle1 < -90 || operation.angle2 > 90 || operation.angle1 >= operation.angle2 || !positive(operation.angle3) || operation.angle3 > 360) throw new RangeError(`${label} ellipsoid parameters are invalid.`) + } else if (operation.type === 'torus') { + if (!positive(operation.radius1) || !positive(operation.radius2) || operation.radius2 >= operation.radius1 || !finite(operation.angle1) || !finite(operation.angle2) || operation.angle1 < -180 || operation.angle2 > 180 || operation.angle1 >= operation.angle2 || !positive(operation.angle3) || operation.angle3 > 360) throw new RangeError(`${label} torus parameters are invalid.`) + } else if (operation.type === 'prism') { + if (!Number.isInteger(operation.polygon) || operation.polygon < 3 || operation.polygon > 10000 || !positive(operation.circumradius) || !positive(operation.height) || !finite(operation.firstAngle) || !finite(operation.secondAngle) || Math.abs(operation.firstAngle) >= 90 || Math.abs(operation.secondAngle) >= 90) throw new RangeError(`${label} prism parameters are invalid.`) + } else if (operation.type === 'wedge') { + const values = ['xmin', 'ymin', 'zmin', 'z2min', 'x2min', 'xmax', 'ymax', 'zmax', 'z2max', 'x2max'].map((key) => operation[key]) + if (!values.every(finite) || operation.xmax <= operation.xmin || operation.ymax <= operation.ymin || operation.zmax <= operation.zmin || operation.z2max < operation.z2min || operation.x2max < operation.x2min) throw new RangeError(`${label} wedge parameters are invalid.`) + } else if (operation.type === 'helix') { + if (!positive(operation.pitch) || !positive(operation.height) || !positive(operation.radius) || !finite(operation.angle) || Math.abs(operation.angle) >= 90 || !finite(operation.segmentLength) || operation.segmentLength < 0) throw new RangeError(`${label} helix parameters are invalid.`) } else if (operation.type === 'cut' || operation.type === 'fuse' || operation.type === 'common') { validateGoldenOperation(operation.base, `${label}.base`) validateGoldenOperation(operation.tool, `${label}.tool`) @@ -40,9 +51,10 @@ export function validateGoldenScenario(scenario, expectedId) { validateGoldenOperation(scenario.operation, scenario.id) if (!scenario.tolerance || !positive(scenario.tolerance.linear) || !positive(scenario.tolerance.scalar)) throw new RangeError(`${scenario.id} requires positive linear and scalar tolerances.`) if (!scenario.expected || typeof scenario.expected !== 'object' || Array.isArray(scenario.expected)) throw new TypeError(`${scenario.id} requires expected output.`) - const allowedShapeTypes = new Set(['Solid', 'Compound']) - if (scenario.expected.isNull !== false || scenario.expected.isValid !== true || !allowedShapeTypes.has(scenario.expected.shapeType) || !Number.isInteger(scenario.expected.solids) || scenario.expected.solids < 1) { - throw new RangeError(`${scenario.id} must declare a valid non-null oracle containing at least one Solid.`) + const allowedShapeTypes = new Set(['Solid', 'Compound', 'Shell', 'Face', 'Wire', 'Edge']) + const solidExpected = scenario.expected.shapeType === 'Solid' || scenario.expected.shapeType === 'Compound' + if (scenario.expected.isNull !== false || scenario.expected.isValid !== true || !allowedShapeTypes.has(scenario.expected.shapeType) || !Number.isInteger(scenario.expected.solids) || (solidExpected ? scenario.expected.solids < 1 : scenario.expected.solids !== 0)) { + throw new RangeError(`${scenario.id} must declare a valid non-null oracle with a shape-compatible Solid count.`) } } diff --git a/scripts/freecad-golden-driver.py b/scripts/freecad-golden-driver.py index 3ce2b4b..e5ae3e6 100644 --- a/scripts/freecad-golden-driver.py +++ b/scripts/freecad-golden-driver.py @@ -5,6 +5,18 @@ import FreeCAD as App import Part +def make_feature_shape(type_id, properties): + document = App.newDocument("GoldenPrimitive") + try: + feature = document.addObject(type_id, "Primitive") + for name, value in properties.items(): + setattr(feature, name, value) + document.recompute() + return feature.Shape.copy() + finally: + App.closeDocument(document.Name) + + def make_shape(operation): kind = operation["type"] if kind == "box": @@ -15,6 +27,32 @@ def make_shape(operation): shape = Part.makeSphere(operation["radius"]) elif kind == "cone": shape = Part.makeCone(operation["radius1"], operation["radius2"], operation["height"], App.Vector(0, 0, 0), App.Vector(0, 0, 1), operation["angle"]) + elif kind == "ellipsoid": + shape = make_feature_shape("Part::Ellipsoid", { + "Radius1": operation["radius1"], "Radius2": operation["radius2"], "Radius3": operation["radius3"], + "Angle1": operation["angle1"], "Angle2": operation["angle2"], "Angle3": operation["angle3"], + }) + elif kind == "torus": + shape = make_feature_shape("Part::Torus", { + "Radius1": operation["radius1"], "Radius2": operation["radius2"], + "Angle1": operation["angle1"], "Angle2": operation["angle2"], "Angle3": operation["angle3"], + }) + elif kind == "prism": + shape = make_feature_shape("Part::Prism", { + "Polygon": operation["polygon"], "Circumradius": operation["circumradius"], "Height": operation["height"], + "FirstAngle": operation["firstAngle"], "SecondAngle": operation["secondAngle"], + }) + elif kind == "wedge": + shape = make_feature_shape("Part::Wedge", { + "Xmin": operation["xmin"], "Ymin": operation["ymin"], "Zmin": operation["zmin"], + "Z2min": operation["z2min"], "X2min": operation["x2min"], "Xmax": operation["xmax"], + "Ymax": operation["ymax"], "Zmax": operation["zmax"], "Z2max": operation["z2max"], "X2max": operation["x2max"], + }) + elif kind == "helix": + shape = make_feature_shape("Part::Helix", { + "Pitch": operation["pitch"], "Height": operation["height"], "Radius": operation["radius"], + "Angle": operation["angle"], "SegmentLength": operation["segmentLength"], + }) elif kind in ("cut", "fuse", "common"): base = make_shape(operation["base"]) tool = make_shape(operation["tool"]) diff --git a/scripts/freecad-part-builders-oracle.py b/scripts/freecad-part-builders-oracle.py new file mode 100644 index 0000000..2977a47 --- /dev/null +++ b/scripts/freecad-part-builders-oracle.py @@ -0,0 +1,203 @@ +import json + +import FreeCAD as App +import Part + + +COMMIT = "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + + +def feature_status(case_id, feature, expected): + shape = feature.Shape + shape_null = bool(shape.isNull()) + state = [str(value) for value in feature.State] + try: + status_string = str(feature.getStatusString()) + except Exception: + status_string = "" + shape_valid = bool(shape.isValid()) if not shape_null else False + observed = "success" if not shape_null and shape_valid else "rejected" if "Invalid" in state or status_string != "Valid" else "accepted-empty" + return { + "id": case_id, + "typeId": feature.TypeId, + "expected": expected, + "observed": observed, + "passed": observed == expected, + "shapeNull": shape_null, + "shapeValid": shape_valid, + "shapeType": shape.ShapeType if not shape_null else "Null", + "solids": len(shape.Solids) if not shape_null else 0, + "faces": len(shape.Faces) if not shape_null else 0, + "edges": len(shape.Edges) if not shape_null else 0, + "vertices": len(shape.Vertexes) if not shape_null else 0, + "volume": float(shape.Volume) if not shape_null else 0.0, + "area": float(shape.Area) if not shape_null else 0.0, + "state": state, + "statusString": status_string, + } + + +def add_shape(document, name, shape): + feature = document.addObject("Part::Feature", name) + feature.Shape = shape + return feature + + +def rectangle_wire(x_min, y_min, x_max, y_max, z=0): + points = [ + App.Vector(x_min, y_min, z), + App.Vector(x_max, y_min, z), + App.Vector(x_max, y_max, z), + App.Vector(x_min, y_max, z), + App.Vector(x_min, y_min, z), + ] + return Part.makePolygon(points) + + +def success_extrusion(): + document = App.newDocument("PartExtrusionSuccessOracle") + try: + profile = add_shape(document, "Profile", rectangle_wire(0, 0, 3, 2)) + feature = document.addObject("Part::Extrusion", "Extrusion") + feature.Base = profile + feature.Dir = App.Vector(0, 0, 5) + feature.Solid = True + document.recompute() + return feature_status("part-extrusion-success", feature, "success") + finally: + App.closeDocument(document.Name) + + +def success_revolution(): + document = App.newDocument("PartRevolutionSuccessOracle") + try: + profile = add_shape(document, "Profile", rectangle_wire(2, 0, 4, 2)) + feature = document.addObject("Part::Revolution", "Revolution") + feature.Source = profile + feature.Axis = App.Vector(0, 1, 0) + feature.Base = App.Vector(0, 0, 0) + feature.Angle = 360 + feature.Solid = True + document.recompute() + return feature_status("part-revolution-success", feature, "success") + finally: + App.closeDocument(document.Name) + + +def success_loft(): + document = App.newDocument("PartLoftSuccessOracle") + try: + first = add_shape(document, "SectionA", rectangle_wire(-2, -2, 2, 2, 0)) + second = add_shape(document, "SectionB", rectangle_wire(-1, -1, 1, 1, 5)) + feature = document.addObject("Part::Loft", "Loft") + feature.Sections = [first, second] + feature.Solid = True + feature.Ruled = False + feature.Closed = False + document.recompute() + return feature_status("part-loft-success", feature, "success") + finally: + App.closeDocument(document.Name) + + +def success_sweep(): + document = App.newDocument("PartSweepSuccessOracle") + try: + section = add_shape(document, "Section", rectangle_wire(-1, -1, 1, 1, 0)) + spine = add_shape(document, "Spine", Part.makePolygon([App.Vector(0, 0, 0), App.Vector(0, 0, 6)])) + feature = document.addObject("Part::Sweep", "Sweep") + feature.Sections = [section] + feature.Spine = spine + feature.Solid = True + feature.Frenet = False + document.recompute() + return feature_status("part-sweep-success", feature, "success") + finally: + App.closeDocument(document.Name) + + +def success_fillet(): + document = App.newDocument("PartFilletSuccessOracle") + try: + base = add_shape(document, "Base", Part.makeBox(10, 8, 6)) + feature = document.addObject("Part::Fillet", "Fillet") + feature.Base = base + feature.Edges = [(1, 1, 1)] + document.recompute() + return feature_status("part-fillet-success", feature, "success") + finally: + App.closeDocument(document.Name) + + +def success_chamfer(): + document = App.newDocument("PartChamferSuccessOracle") + try: + base = add_shape(document, "Base", Part.makeBox(10, 8, 6)) + feature = document.addObject("Part::Chamfer", "Chamfer") + feature.Base = base + feature.Edges = [(1, 1, 1)] + document.recompute() + return feature_status("part-chamfer-success", feature, "success") + finally: + App.closeDocument(document.Name) + + +def rejected_case(type_id): + name = type_id.split("::", 1)[1] + document = App.newDocument("Part{}FailureOracle".format(name)) + try: + feature = document.addObject(type_id, name) + document.recompute() + result = feature_status("part-{}-missing-input".format(name.lower()), feature, "rejected") + result["inputClass"] = "missing-required-input" + return result + except Exception as error: + return { + "id": "part-{}-missing-input".format(name.lower()), + "typeId": type_id, + "inputClass": "missing-required-input", + "expected": "rejected", + "observed": "rejected", + "passed": True, + "errorType": type(error).__name__, + "error": str(error), + } + finally: + App.closeDocument(document.Name) + + +success_cases = [ + success_extrusion(), + success_revolution(), + success_loft(), + success_sweep(), + success_fillet(), + success_chamfer(), +] +failure_cases = [rejected_case(type_id) for type_id in [ + "Part::Extrusion", + "Part::Revolution", + "Part::Loft", + "Part::Sweep", + "Part::Fillet", + "Part::Chamfer", +]] +all_cases = success_cases + failure_cases +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-part-builders-oracle", + "freecadVersion": ".".join(App.Version()[0:3]), + "gitCommit": COMMIT, + "status": "pass" if all(case.get("passed") for case in all_cases) else "failed", + "summary": { + "successCases": len(success_cases), + "successPassed": sum(1 for case in success_cases if case.get("passed")), + "failureCases": len(failure_cases), + "failurePassed": sum(1 for case in failure_cases if case.get("passed")), + "rejected": sum(1 for case in failure_cases if case.get("observed") == "rejected"), + "acceptedEmpty": sum(1 for case in failure_cases if case.get("observed") == "accepted-empty"), + }, + "successCases": success_cases, + "failureCases": failure_cases, +} +print("FREECAD_PART_BUILDERS_ORACLE_RESULT=" + json.dumps(report, sort_keys=True)) diff --git a/scripts/freecad-partdesign-base-oracle.py b/scripts/freecad-partdesign-base-oracle.py new file mode 100644 index 0000000..794ff46 --- /dev/null +++ b/scripts/freecad-partdesign-base-oracle.py @@ -0,0 +1,123 @@ +import json + +import FreeCAD as App +import Part +import Sketcher + + +def version_text(): + return ".".join(str(value) for value in App.Version()[:3]) + + +def square_sketch(body, name, half_size, z=0.0): + sketch = body.newObject("Sketcher::SketchObject", name) + points = [(-half_size, -half_size), (half_size, -half_size), (half_size, half_size), (-half_size, half_size)] + for index, start in enumerate(points): + end = points[(index + 1) % len(points)] + sketch.addGeometry(Part.LineSegment(App.Vector(start[0], start[1], 0), App.Vector(end[0], end[1], 0)), False) + sketch.Placement.Base.z = z + return sketch + + +def shape_result(case_id, document, feature): + document.recompute() + shape = feature.Shape + box = shape.BoundBox if not shape.isNull() else None + return { + "id": case_id, + "passed": not shape.isNull() and shape.isValid(), + "status": feature.getStatusString(), + "solids": len(shape.Solids) if not shape.isNull() else 0, + "faces": len(shape.Faces) if not shape.isNull() else 0, + "volume": float(shape.Volume) if not shape.isNull() else 0.0, + "bounds": None if box is None else { + "min": [float(box.XMin), float(box.YMin), float(box.ZMin)], + "max": [float(box.XMax), float(box.YMax), float(box.ZMax)], + }, + } + + +def tapered_pad(): + document = App.newDocument("TaperedPadOracle") + body = document.addObject("PartDesign::Body", "Body") + sketch = square_sketch(body, "Sketch", 2.0) + pad = body.newObject("PartDesign::Pad", "Pad") + pad.Profile = sketch + pad.Type = "Length" + pad.Length = 5.0 + pad.TaperAngle = 5.0 + result = shape_result("pad-tapered", document, pad) + App.closeDocument(document.Name) + return result + + +def base_and_pocket_document(name, half_size=2.0): + document = App.newDocument(name) + body = document.addObject("PartDesign::Body", "Body") + base = body.newObject("PartDesign::Feature", "Base") + base.Shape = Part.makeBox(10, 10, 10, App.Vector(-5, -5, -5)) + sketch = square_sketch(body, "Sketch", half_size, 5.0) + pocket = body.newObject("PartDesign::Pocket", "Pocket") + pocket.Profile = sketch + if hasattr(pocket, "BaseFeature"): + pocket.BaseFeature = base + return document, body, base, sketch, pocket + + +def tapered_pocket(): + document, _, _, _, pocket = base_and_pocket_document("TaperedPocketOracle") + pocket.Type = "Length" + pocket.Length = 10.0 + pocket.TaperAngle = 2.0 + result = shape_result("pocket-tapered", document, pocket) + App.closeDocument(document.Name) + return result + + +def through_all_pocket(): + document, _, _, _, pocket = base_and_pocket_document("ThroughAllPocketOracle", 1.0) + pocket.Type = 1 + result = shape_result("pocket-through-all", document, pocket) + App.closeDocument(document.Name) + return result + + +def up_to_face_pocket(): + document, _, base, _, pocket = base_and_pocket_document("UpToFacePocketOracle", 1.0) + document.recompute() + top_face = min(range(len(base.Shape.Faces)), key=lambda index: base.Shape.Faces[index].CenterOfMass.z) + 1 + pocket.Type = 3 + pocket.UpToFace = (base, ["Face{}".format(top_face)]) + result = shape_result("pocket-up-to-face", document, pocket) + result["targetFace"] = top_face + App.closeDocument(document.Name) + return result + + +def midplane_pad(): + document = App.newDocument("MidplanePadOracle") + body = document.addObject("PartDesign::Body", "Body") + sketch = square_sketch(body, "Sketch", 2.0) + pad = body.newObject("PartDesign::Pad", "Pad") + pad.Profile = sketch + pad.Type = "Length" + pad.Length = 6.0 + pad.Midplane = True + result = shape_result("pad-midplane", document, pad) + App.closeDocument(document.Name) + return result + + +cases = [tapered_pad(), tapered_pocket(), through_all_pocket(), up_to_face_pocket(), midplane_pad()] +version = App.Version() +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-base-oracle", + "freecadVersion": version_text(), + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "tolerance": 1e-7, + "cases": cases, + "summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["passed"])}, +} +print("FREECAD_PARTDESIGN_BASE_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":"))) diff --git a/scripts/freecad-partdesign-dressup-oracle.py b/scripts/freecad-partdesign-dressup-oracle.py new file mode 100644 index 0000000..727d9c3 --- /dev/null +++ b/scripts/freecad-partdesign-dressup-oracle.py @@ -0,0 +1,113 @@ +import json + +import FreeCAD as App + + +def version_text(): + return ".".join(str(value) for value in App.Version()[:3]) + + +def box_document(name): + document = App.newDocument(name) + body = document.addObject("PartDesign::Body", "Body") + box = body.newObject("PartDesign::AdditiveBox", "Box") + box.Length = 10 + box.Width = 10 + box.Height = 10 + document.recompute() + return document, body, box + + +def shape_result(case_id, document, feature): + document.recompute() + shape = feature.Shape + return { + "id": case_id, + "typeId": feature.TypeId, + "passed": not shape.isNull() and shape.isValid() and len(shape.Solids) == 1, + "status": feature.getStatusString(), + "solids": len(shape.Solids) if not shape.isNull() else 0, + "faces": len(shape.Faces) if not shape.isNull() else 0, + "edges": len(shape.Edges) if not shape.isNull() else 0, + "volume": float(shape.Volume) if not shape.isNull() else 0.0, + } + + +def selected_fillet(): + document, body, box = box_document("FilletOracle") + feature = body.newObject("PartDesign::Fillet", "Fillet") + feature.Base = (box, ["Edge1"]) + feature.Radius = 1 + result = shape_result("fillet-selected-edge", document, feature) + result["selection"] = ["Edge1"] + App.closeDocument(document.Name) + return result + + +def selected_chamfer(): + document, body, box = box_document("ChamferOracle") + feature = body.newObject("PartDesign::Chamfer", "Chamfer") + feature.Base = (box, ["Edge1"]) + feature.Size = 1 + result = shape_result("chamfer-selected-edge", document, feature) + result["selection"] = ["Edge1"] + App.closeDocument(document.Name) + return result + + +def selected_draft(): + document, body, box = box_document("DraftOracle") + datum_plane = body.newObject("PartDesign::Plane", "DatumPlane") + datum_plane.AttachmentSupport = [(document.YZ_Plane, "")] + datum_plane.MapMode = "FlatFace" + datum_line = body.newObject("PartDesign::Line", "DatumLine") + datum_line.AttachmentSupport = [(document.X_Axis, "")] + datum_line.MapMode = "TwoPointLine" + document.recompute() + faces = box.Shape.Faces + candidates = [index for index, face in enumerate(faces) if face.Surface.Axis == App.Vector(0, 0, 1)] + top_face = max(candidates, key=lambda index: faces[index].CenterOfMass.z) + feature = body.newObject("PartDesign::Draft", "Draft") + feature.Base = (box, ["Face{}".format(top_face + 1)]) + feature.NeutralPlane = (datum_plane, [""]) + feature.PullDirection = (datum_line, [""]) + feature.Angle = 45 + feature.Reversed = True + document.recompute() + if "Invalid" in feature.State: + feature.Reversed = False + result = shape_result("draft-selected-face", document, feature) + result["selection"] = ["Face{}".format(top_face + 1)] + result["reversed"] = bool(feature.Reversed) + App.closeDocument(document.Name) + return result + + +def selected_thickness(): + document, body, box = box_document("ThicknessOracle") + feature = body.newObject("PartDesign::Thickness", "Thickness") + feature.Base = (box, ["Face1"]) + feature.Value = 1 + feature.Reversed = True + feature.Mode = 0 + feature.Join = 0 + result = shape_result("thickness-selected-face", document, feature) + result["selection"] = ["Face1"] + result["reversed"] = bool(feature.Reversed) + result["elementMapSize"] = int(feature.Shape.ElementMapSize) + App.closeDocument(document.Name) + return result + + +cases = [selected_fillet(), selected_chamfer(), selected_draft(), selected_thickness()] +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-dressup-oracle", + "freecadVersion": version_text(), + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "tolerance": 1e-7, + "cases": cases, + "summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["passed"])}, +} +print("FREECAD_PARTDESIGN_DRESSUP_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":"))) diff --git a/scripts/freecad-partdesign-failure-oracle.py b/scripts/freecad-partdesign-failure-oracle.py new file mode 100644 index 0000000..35d7e02 --- /dev/null +++ b/scripts/freecad-partdesign-failure-oracle.py @@ -0,0 +1,97 @@ +import json + +import FreeCAD as App +import Part +import Sketcher + + +FREECAD_COMMIT = "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" +TYPE_IDS = [ + "PartDesign::Pad", + "PartDesign::Pocket", + "PartDesign::Revolution", + "PartDesign::Groove", + "PartDesign::AdditiveLoft", + "PartDesign::SubtractiveLoft", + "PartDesign::AdditivePipe", + "PartDesign::SubtractivePipe", + "PartDesign::Fillet", + "PartDesign::Chamfer", + "PartDesign::Draft", + "PartDesign::Thickness", + "PartDesign::Mirrored", + "PartDesign::MultiTransform", + "PartDesign::LinearPattern", + "PartDesign::PolarPattern", + "PartDesign::Hole", +] +ACCEPTED_EMPTY_TYPE_IDS = { + "PartDesign::Mirrored", + "PartDesign::MultiTransform", + "PartDesign::LinearPattern", + "PartDesign::PolarPattern", +} + + +def run_case(type_id): + case_id = "missing-input-" + type_id.split("::", 1)[1].lower() + document = App.newDocument("FailureOracle_" + case_id.replace("-", "_")) + try: + body = document.addObject("PartDesign::Body", "Body") + feature = document.addObject(type_id, "Feature") + body.addObject(feature) + recompute_result = document.recompute() + shape_null = bool(feature.Shape.isNull()) + state = [str(value) for value in feature.State] + try: + status_string = str(feature.getStatusString()) + except Exception: + status_string = "" + invalid = shape_null and ("Invalid" in state or status_string != "Valid") + observed = "rejected" if invalid else "accepted-empty" if shape_null else "accepted" + expected = "accepted-empty" if type_id in ACCEPTED_EMPTY_TYPE_IDS else "rejected" + return { + "id": case_id, + "typeId": type_id, + "inputClass": "missing-required-input", + "expected": expected, + "observed": observed, + "passed": observed == expected, + "recomputeResult": bool(recompute_result), + "shapeNull": shape_null, + "state": state, + "statusString": status_string, + } + except Exception as error: + expected = "accepted-empty" if type_id in ACCEPTED_EMPTY_TYPE_IDS else "rejected" + return { + "id": case_id, + "typeId": type_id, + "inputClass": "missing-required-input", + "expected": expected, + "observed": "rejected", + "passed": expected == "rejected", + "errorType": type(error).__name__, + "error": str(error), + } + finally: + App.closeDocument(document.Name) + + +cases = [run_case(type_id) for type_id in TYPE_IDS] +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-failure-oracle", + "freecadVersion": ".".join(App.Version()[0:3]), + "gitCommit": FREECAD_COMMIT, + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "summary": { + "cases": len(cases), + "passed": sum(1 for case in cases if case["passed"]), + "rejected": sum(1 for case in cases if case["observed"] == "rejected"), + "acceptedEmpty": sum(1 for case in cases if case["observed"] == "accepted-empty"), + "accepted": sum(1 for case in cases if case["observed"] == "accepted"), + }, + "cases": cases, +} +print("FREECAD_PARTDESIGN_FAILURE_ORACLE_RESULT=" + json.dumps(report, sort_keys=True)) diff --git a/scripts/freecad-partdesign-loft-oracle.py b/scripts/freecad-partdesign-loft-oracle.py new file mode 100644 index 0000000..d12185b --- /dev/null +++ b/scripts/freecad-partdesign-loft-oracle.py @@ -0,0 +1,127 @@ +import json +import math + +import FreeCAD as App +import Part +import Sketcher +import TestSketcherApp + + +def version_text(): + return ".".join(str(value) for value in App.Version()[:3]) + + +def shape_result(case_id, document, feature): + document.recompute() + shape = feature.Shape + return { + "id": case_id, + "typeId": feature.TypeId, + "passed": not shape.isNull() and shape.isValid() and len(shape.Solids) == 1, + "status": feature.getStatusString(), + "solids": len(shape.Solids) if not shape.isNull() else 0, + "faces": len(shape.Faces) if not shape.isNull() else 0, + "volume": float(shape.Volume) if not shape.isNull() else 0.0, + } + + +def additive_loft(): + document = App.newDocument("AdditiveLoftOracle") + body = document.addObject("PartDesign::Body", "Body") + profile = body.newObject("Sketcher::SketchObject", "Profile") + TestSketcherApp.CreateRectangleSketch(profile, (0, 0), (1, 1)) + section = body.newObject("Sketcher::SketchObject", "Section") + section.MapMode = "FlatFace" + section.AttachmentSupport = (document.XZ_Plane, [""]) + document.recompute() + TestSketcherApp.CreateRectangleSketch(section, (0, 1), (1, 1)) + feature = body.newObject("PartDesign::AdditiveLoft", "AdditiveLoft") + feature.Profile = profile + feature.Sections = [section] + result = shape_result("additive-loft", document, feature) + App.closeDocument(document.Name) + return result + + +def subtractive_loft(): + document = App.newDocument("SubtractiveLoftOracle") + body = document.addObject("PartDesign::Body", "Body") + pad_sketch = body.newObject("Sketcher::SketchObject", "PadSketch") + TestSketcherApp.CreateRectangleSketch(pad_sketch, (0, 0), (1, 1)) + pad = body.newObject("PartDesign::Pad", "Pad") + pad.Profile = pad_sketch + pad.Length = 2 + document.recompute() + profile = body.newObject("Sketcher::SketchObject", "Profile") + TestSketcherApp.CreateRectangleSketch(profile, (0, 0), (1, 1)) + section = body.newObject("Sketcher::SketchObject", "Section") + section.MapMode = "FlatFace" + section.AttachmentSupport = (document.XZ_Plane, [""]) + document.recompute() + TestSketcherApp.CreateRectangleSketch(section, (0, 1), (1, 1)) + feature = body.newObject("PartDesign::SubtractiveLoft", "SubtractiveLoft") + feature.Profile = profile + feature.Sections = [section] + result = shape_result("subtractive-loft", document, feature) + App.closeDocument(document.Name) + return result + + +def pipe_sketches(document, body): + profile = body.newObject("Sketcher::SketchObject", "Profile") + TestSketcherApp.CreateCircleSketch(profile, (0, 0), 1) + spine = body.newObject("Sketcher::SketchObject", "Spine") + spine.MapMode = "FlatFace" + spine.AttachmentSupport = (document.XZ_Plane, [""]) + document.recompute() + spine.addGeometry(Part.LineSegment(App.Vector(0, 0, 0), App.Vector(0, 1, 0)), False) + spine.addConstraint(Sketcher.Constraint("Coincident", 0, 1, -1, 1)) + spine.addConstraint(Sketcher.Constraint("PointOnObject", 0, 2, -2)) + spine.addConstraint(Sketcher.Constraint("DistanceY", 0, 1, 0, 2, 1)) + return profile, spine + + +def additive_pipe(): + document = App.newDocument("AdditivePipeOracle") + body = document.addObject("PartDesign::Body", "Body") + profile, spine = pipe_sketches(document, body) + feature = body.newObject("PartDesign::AdditivePipe", "AdditivePipe") + feature.Profile = profile + feature.Spine = spine + result = shape_result("additive-pipe", document, feature) + result["transition"] = str(feature.Transition) + App.closeDocument(document.Name) + return result + + +def subtractive_pipe(): + document = App.newDocument("SubtractivePipeOracle") + body = document.addObject("PartDesign::Body", "Body") + profile, spine = pipe_sketches(document, body) + pad_sketch = body.newObject("Sketcher::SketchObject", "PadSketch") + TestSketcherApp.CreateRectangleSketch(pad_sketch, (-5, -5), (10, 10)) + pad = body.newObject("PartDesign::Pad", "Pad") + pad.Profile = pad_sketch + pad.Length = 1 + document.recompute() + feature = body.newObject("PartDesign::SubtractivePipe", "SubtractivePipe") + feature.Profile = profile + feature.Spine = spine + result = shape_result("subtractive-pipe", document, feature) + result["transition"] = str(feature.Transition) + App.closeDocument(document.Name) + return result + + +cases = [additive_loft(), subtractive_loft(), additive_pipe(), subtractive_pipe()] +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-loft-oracle", + "freecadVersion": version_text(), + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "tolerance": 1e-7, + "cases": cases, + "summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["passed"])}, +} +print("FREECAD_PARTDESIGN_LOFT_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":"))) diff --git a/scripts/freecad-partdesign-profile-oracle.py b/scripts/freecad-partdesign-profile-oracle.py new file mode 100644 index 0000000..537bf13 --- /dev/null +++ b/scripts/freecad-partdesign-profile-oracle.py @@ -0,0 +1,125 @@ +import json + +import FreeCAD as App +import Part +import Sketcher + + +LENGTH = 10.0 +TOLERANCE = 1e-7 + + +def line(start, end): + return Part.LineSegment(App.Vector(start[0], start[1], 0), App.Vector(end[0], end[1], 0)) + + +def add_loop(sketch, points, closed=True): + segment_count = len(points) if closed else len(points) - 1 + sketch.addGeometry([line(points[index], points[(index + 1) % len(points)]) for index in range(segment_count)], False) + + +def object_status(feature): + try: + status_string = feature.getStatusString() + except Exception: + status_string = "" + return { + "state": [str(value) for value in feature.State], + "statusString": str(status_string), + } + + +def run_case(case_id, expected, setup): + document = App.newDocument("ProfileOracle_" + case_id.replace("-", "_")) + try: + body = document.addObject("PartDesign::Body", "Body") + sketch = document.addObject("Sketcher::SketchObject", "Sketch") + body.addObject(sketch) + sketch.MapMode = "Deactivated" + setup(sketch) + document.recompute() + + pad = document.addObject("PartDesign::Pad", "Pad") + pad.Profile = sketch + pad.Length = LENGTH + body.addObject(pad) + recompute_result = document.recompute() + shape_null = bool(pad.Shape.isNull()) + volume = 0.0 if shape_null else float(pad.Shape.Volume) + solids = 0 if shape_null else len(pad.Shape.Solids) + accepted = not shape_null and volume > TOLERANCE and solids >= 1 + observed = "accepted" if accepted else "rejected" + return { + "id": case_id, + "expected": expected, + "observed": observed, + "passed": observed == expected, + "recomputeResult": bool(recompute_result), + "shapeNull": shape_null, + "solidCount": int(solids), + "volume": volume, + **object_status(pad), + } + except Exception as error: + return { + "id": case_id, + "expected": expected, + "observed": "rejected", + "passed": expected == "rejected", + "errorType": type(error).__name__, + "error": str(error), + } + finally: + App.closeDocument(document.Name) + + +OUTER = [(0, 0), (6, 0), (6, 6), (0, 6)] +HOLE = [(2, 2), (2, 4), (4, 4), (4, 2)] + + +def closed_profile(sketch): + add_loop(sketch, OUTER) + + +def multi_ring_profile(sketch): + add_loop(sketch, HOLE) + add_loop(sketch, OUTER) + + +def open_profile(sketch): + add_loop(sketch, OUTER, False) + + +def self_intersecting_profile(sketch): + add_loop(sketch, [(0, 0), (4, 4), (0, 4), (4, 0)]) + + +def disjoint_profile(sketch): + add_loop(sketch, OUTER) + add_loop(sketch, [(8, 8), (9, 8), (9, 9), (8, 9)]) + + +cases = [ + run_case("closed", "accepted", closed_profile), + run_case("multi-ring", "accepted", multi_ring_profile), + run_case("open", "rejected", open_profile), + run_case("self-intersecting", "accepted", self_intersecting_profile), + run_case("invalid-nesting", "accepted", disjoint_profile), +] +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-profile-oracle", + "freecadVersion": ".".join(App.Version()[0:3]), + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "length": LENGTH, + "tolerance": TOLERANCE, + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "summary": { + "cases": len(cases), + "passed": sum(1 for case in cases if case["passed"]), + "accepted": sum(1 for case in cases if case["observed"] == "accepted"), + "rejected": sum(1 for case in cases if case["observed"] == "rejected"), + }, + "cases": cases, +} +print("FREECAD_PARTDESIGN_PROFILE_ORACLE_RESULT=" + json.dumps(report, sort_keys=True)) diff --git a/scripts/freecad-partdesign-revolution-groove-oracle.py b/scripts/freecad-partdesign-revolution-groove-oracle.py new file mode 100644 index 0000000..bf87b5a --- /dev/null +++ b/scripts/freecad-partdesign-revolution-groove-oracle.py @@ -0,0 +1,94 @@ +import json + +import FreeCAD as App +import Part +import Sketcher + + +COMMIT = "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d" + + +def add_rectangle(sketch, xmin, ymin, xmax, ymax): + points = [(xmin, ymin), (xmax, ymin), (xmax, ymax), (xmin, ymax)] + for index, start in enumerate(points): + end = points[(index + 1) % len(points)] + sketch.addGeometry(Part.LineSegment(App.Vector(start[0], start[1], 0), App.Vector(end[0], end[1], 0)), False) + + +def status(feature): + try: + status_string = str(feature.getStatusString()) + except Exception: + status_string = "" + shape = feature.Shape + return { + "typeId": feature.TypeId, + "passed": not shape.isNull() and shape.isValid() and len(shape.Solids) == 1, + "status": status_string, + "shapeNull": bool(shape.isNull()), + "shapeValid": bool(shape.isValid()) if not shape.isNull() else False, + "solids": len(shape.Solids) if not shape.isNull() else 0, + "faces": len(shape.Faces) if not shape.isNull() else 0, + "volume": float(shape.Volume) if not shape.isNull() else 0.0, + } + + +def run_revolution(): + document = App.newDocument("PartDesignRevolutionOracle") + try: + body = document.addObject("PartDesign::Body", "Body") + sketch = document.addObject("Sketcher::SketchObject", "Profile") + body.addObject(sketch) + add_rectangle(sketch, -1, 2, 1, 4) + document.recompute() + feature = document.addObject("PartDesign::Revolution", "Revolution") + body.addObject(feature) + feature.Profile = sketch + feature.ReferenceAxis = (sketch, ["H_Axis"]) + feature.Angle = 360 + document.recompute() + return {"id": "partdesign-revolution", "operation": "revolution", **status(feature)} + except Exception as error: + return {"id": "partdesign-revolution", "operation": "revolution", "passed": False, "error": str(error)} + finally: + App.closeDocument(document.Name) + + +def run_groove(): + document = App.newDocument("PartDesignGrooveOracle") + try: + body = document.addObject("PartDesign::Body", "Body") + base = document.addObject("PartDesign::AdditiveBox", "Base") + body.addObject(base) + base.Length = 10 + base.Width = 10 + base.Height = 10 + document.recompute() + sketch = document.addObject("Sketcher::SketchObject", "Profile") + body.addObject(sketch) + add_rectangle(sketch, 2, 1, 4, 2) + document.recompute() + feature = document.addObject("PartDesign::Groove", "Groove") + body.addObject(feature) + feature.Profile = sketch + feature.ReferenceAxis = (sketch, ["H_Axis"]) + feature.Angle = 180 + document.recompute() + return {"id": "partdesign-groove", "operation": "groove", **status(feature)} + except Exception as error: + return {"id": "partdesign-groove", "operation": "groove", "passed": False, "error": str(error)} + finally: + App.closeDocument(document.Name) + + +cases = [run_revolution(), run_groove()] +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-revolution-groove-oracle", + "freecadVersion": ".".join(App.Version()[0:3]), + "gitCommit": COMMIT, + "status": "pass" if all(case.get("passed") for case in cases) else "failed", + "summary": {"cases": len(cases), "passed": sum(1 for case in cases if case.get("passed"))}, + "cases": cases, +} +print("FREECAD_PARTDESIGN_REVOLUTION_GROOVE_ORACLE_RESULT=" + json.dumps(report, sort_keys=True)) diff --git a/scripts/freecad-partdesign-transform-oracle.py b/scripts/freecad-partdesign-transform-oracle.py new file mode 100644 index 0000000..dd68592 --- /dev/null +++ b/scripts/freecad-partdesign-transform-oracle.py @@ -0,0 +1,305 @@ +import json + +import FreeCAD as App +import Part +import Sketcher + + +def version_text(): + return ".".join(str(value) for value in App.Version()[:3]) + + +def shape_result(case_id, document, feature): + document.recompute() + shape = feature.Shape + return { + "id": case_id, + "typeId": feature.TypeId, + "passed": not shape.isNull() and shape.isValid() and len(shape.Solids) == 1, + "status": feature.getStatusString(), + "solids": len(shape.Solids) if not shape.isNull() else 0, + "faces": len(shape.Faces) if not shape.isNull() else 0, + "edges": len(shape.Edges) if not shape.isNull() else 0, + "volume": float(shape.Volume) if not shape.isNull() else 0.0, + } + + +def add_rectangle(sketch, x_min, y_min, x_max, y_max): + points = [(x_min, y_min), (x_max, y_min), (x_max, y_max), (x_min, y_max)] + for index, start in enumerate(points): + end = points[(index + 1) % len(points)] + sketch.addGeometry(Part.LineSegment(App.Vector(start[0], start[1], 0), App.Vector(end[0], end[1], 0)), False) + + +def feature_linear_pattern(): + document = App.newDocument("FeatureLinearPatternOracle") + body = document.addObject("PartDesign::Body", "Body") + base = body.newObject("PartDesign::AdditiveBox", "Base") + base.Length = 20 + base.Width = 10 + base.Height = 2 + boss = body.newObject("PartDesign::AdditiveBox", "Boss") + boss.Length = 2 + boss.Width = 2 + boss.Height = 2 + boss.Placement.Base = App.Vector(2, 4, 2) + document.recompute() + pattern = body.newObject("PartDesign::LinearPattern", "LinearPattern") + pattern.TransformMode = "Features" + pattern.Originals = [boss] + pattern.Direction = (document.X_Axis, [""]) + pattern.Occurrences = 3 + pattern.Length = 12 + result = shape_result("linear-feature-list", document, pattern) + result.update({ + "transformMode": pattern.TransformMode, + "originals": [item.Name for item in pattern.Originals], + "direction": pattern.Direction[0].Name, + "occurrences": int(pattern.Occurrences), + "length": float(pattern.Length), + }) + App.closeDocument(document.Name) + return result + + +def feature_mirrored(): + document = App.newDocument("FeatureMirroredOracle") + body = document.addObject("PartDesign::Body", "Body") + base = body.newObject("PartDesign::AdditiveBox", "Base") + base.Length = 20 + base.Width = 10 + base.Height = 2 + boss = body.newObject("PartDesign::AdditiveBox", "Boss") + boss.Length = 2 + boss.Width = 2 + boss.Height = 2 + boss.Placement.Base = App.Vector(0, 4, 2) + document.recompute() + mirrored = body.newObject("PartDesign::Mirrored", "Mirrored") + mirrored.TransformMode = "Features" + mirrored.Originals = [boss] + mirrored.MirrorPlane = (document.YZ_Plane, [""]) + result = shape_result("mirrored-feature-list", document, mirrored) + result.update({ + "transformMode": mirrored.TransformMode, + "originals": [item.Name for item in mirrored.Originals], + "plane": mirrored.MirrorPlane[0].Name, + }) + App.closeDocument(document.Name) + return result + + +def feature_polar_pattern(): + document = App.newDocument("FeaturePolarPatternOracle") + body = document.addObject("PartDesign::Body", "Body") + box = document.addObject("PartDesign::AdditiveBox", "Box") + body.addObject(box) + box.Length = 10 + box.Width = 10 + box.Height = 10 + document.recompute() + pattern = document.addObject("PartDesign::PolarPattern", "PolarPattern") + pattern.Originals = [box] + pattern.Axis = (document.X_Axis, [""]) + pattern.Angle = 360 + pattern.Occurrences = 4 + pattern.Refine = True + body.addObject(pattern) + result = shape_result("polar-feature-list", document, pattern) + result.update({ + "transformMode": pattern.TransformMode, + "originals": [item.Name for item in pattern.Originals], + "axis": pattern.Axis[0].Name, + "angle": float(pattern.Angle), + "occurrences": int(pattern.Occurrences), + }) + App.closeDocument(document.Name) + return result + + +def feature_multi_transform(): + document = App.newDocument("FeatureMultiTransformOracle") + body = document.addObject("PartDesign::Body", "Body") + sketch = document.addObject("Sketcher::SketchObject", "SketchPad") + body.addObject(sketch) + add_rectangle(sketch, 0, 0, 10, 10) + document.recompute() + pad = document.addObject("PartDesign::Pad", "Pad") + body.addObject(pad) + pad.Profile = sketch + pad.Length = 10 + document.recompute() + multi = document.addObject("PartDesign::MultiTransform", "MultiTransform") + document.recompute() + multi.Originals = [pad] + multi.Shape = pad.Shape + body.addObject(multi) + document.recompute() + mirrored = document.addObject("PartDesign::Mirrored", "Mirrored") + mirrored.MirrorPlane = (sketch, ["H_Axis"]) + body.addObject(mirrored) + linear = document.addObject("PartDesign::LinearPattern", "LinearPattern") + linear.Direction = (sketch, ["H_Axis"]) + linear.Length = 20 + linear.Occurrences = 3 + body.addObject(linear) + polar = document.addObject("PartDesign::PolarPattern", "PolarPattern") + polar.Axis = (sketch, ["N_Axis"]) + polar.Angle = 360 + polar.Occurrences = 4 + body.addObject(polar) + multi.Transformations = [mirrored, linear, polar] + result = shape_result("multi-transform-feature-list", document, multi) + result.update({ + "transformMode": multi.TransformMode, + "originals": [item.Name for item in multi.Originals], + "transformations": [item.TypeId for item in multi.Transformations], + }) + App.closeDocument(document.Name) + return result + + +def transform_failure(type_id): + suffix = type_id.split("::", 1)[1] + document = App.newDocument("Feature{}FailureOracle".format(suffix)) + try: + body = document.addObject("PartDesign::Body", "Body") + base = body.newObject("PartDesign::AdditiveBox", "Base") + base.Length = 20 + base.Width = 10 + base.Height = 2 + boss = body.newObject("PartDesign::AdditiveBox", "Boss") + boss.Length = 2 + boss.Width = 2 + boss.Height = 2 + boss.Placement.Base = App.Vector(2, 4, 2) + document.recompute() + feature = document.addObject(type_id, suffix) + feature.Originals = [boss] + if type_id == "PartDesign::MultiTransform": + feature.Shape = boss.Shape + body.addObject(feature) + if type_id == "PartDesign::LinearPattern": + feature.Direction = (base, ["Edge999"]) + if type_id == "PartDesign::MultiTransform": + child = document.addObject("PartDesign::LinearPattern", "InvalidLinearChild") + child.Length = 12 + child.Occurrences = 3 + child.Direction = (base, ["Edge999"]) + body.addObject(child) + feature.Transformations = [child] + document.recompute() + shape = feature.Shape + shape_null = bool(shape.isNull()) + state = [str(value) for value in feature.State] + status_string = str(feature.getStatusString()) + invalid = "Invalid" in state or status_string != "Valid" + observed = "rejected" if invalid else "accepted-empty" if shape_null else "accepted" + return { + "id": "{}-missing-reference".format(suffix.lower()), + "typeId": type_id, + "inputClass": "valid-original-missing-transform-reference", + "expected": "rejected", + "observed": observed, + "passed": observed == "rejected", + "shapeNull": shape_null, + "staleShapePreserved": bool(invalid and not shape_null), + "state": state, + "status": status_string, + "originals": [item.Name for item in feature.Originals], + "transformations": [item.TypeId for item in feature.Transformations] if type_id == "PartDesign::MultiTransform" else [], + } + except Exception as error: + return { + "id": "{}-missing-reference".format(suffix.lower()), + "typeId": type_id, + "inputClass": "valid-original-missing-transform-reference", + "expected": "rejected", + "observed": "rejected", + "passed": True, + "errorType": type(error).__name__, + "error": str(error), + } + finally: + App.closeDocument(document.Name) + + +def hole_document(name): + document = App.newDocument(name) + body = document.addObject("PartDesign::Body", "Body") + box = body.newObject("PartDesign::AdditiveBox", "Box") + box.Length = 20 + box.Width = 20 + box.Height = 10 + document.recompute() + top_face = max(range(len(box.Shape.Faces)), key=lambda index: box.Shape.Faces[index].CenterOfMass.z) + sketch = body.newObject("Sketcher::SketchObject", "HoleSketch") + sketch.AttachmentSupport = (box, ["Face{}".format(top_face + 1)]) + sketch.MapMode = "FlatFace" + sketch.addGeometry(Part.Circle(App.Vector(10, 10, 0), App.Vector(0, 0, 1), 3), False) + hole = body.newObject("PartDesign::Hole", "Hole") + hole.Profile = sketch + hole.DepthType = "Dimension" + hole.Depth = 8 + hole.DrillPoint = "Flat" + return document, body, hole + + +def iso_hole(modeled): + case_id = "iso-m6-modeled-thread" if modeled else "iso-m6-tap-drill" + document, body, hole = hole_document("ModeledThreadOracle" if modeled else "TapDrillOracle") + hole.ThreadType = "ISOMetricProfile" + hole.ThreadSize = "M6x1.0" + hole.Threaded = True + hole.ModelThread = modeled + hole.ThreadDirection = "Left" if modeled else "Right" + hole.ThreadDepthType = "Dimension" + hole.ThreadDepth = 6 + result = shape_result(case_id, document, hole) + result.update({ + "threaded": bool(hole.Threaded), + "modeled": bool(hole.ModelThread), + "threadType": hole.ThreadType, + "threadSize": hole.ThreadSize, + "threadClass": hole.ThreadClass, + "threadFit": hole.ThreadFit, + "threadDirection": hole.ThreadDirection, + "threadDepthType": hole.ThreadDepthType, + "threadDepth": float(hole.ThreadDepth), + "diameter": float(hole.Diameter), + "threadDiameter": float(hole.ThreadDiameter), + "threadPitch": float(hole.ThreadPitch) if "ThreadPitch" in hole.PropertiesList else 1.0, + "properties": list(hole.PropertiesList), + }) + App.closeDocument(document.Name) + return result + + +success_cases = [feature_linear_pattern(), feature_mirrored(), feature_polar_pattern(), feature_multi_transform(), iso_hole(False), iso_hole(True)] +failure_cases = [transform_failure(type_id) for type_id in [ + "PartDesign::Mirrored", + "PartDesign::MultiTransform", + "PartDesign::LinearPattern", + "PartDesign::PolarPattern", +]] +cases = success_cases + failure_cases +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-partdesign-transform-oracle", + "freecadVersion": version_text(), + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "tolerance": 1e-7, + "cases": cases, + "summary": { + "cases": len(cases), + "passed": sum(1 for case in cases if case["passed"]), + "successCases": len(success_cases), + "successPassed": sum(1 for case in success_cases if case["passed"]), + "failureCases": len(failure_cases), + "failurePassed": sum(1 for case in failure_cases if case["passed"]), + "rejected": sum(1 for case in failure_cases if case.get("observed") == "rejected"), + "acceptedEmpty": sum(1 for case in failure_cases if case.get("observed") == "accepted-empty"), + }, +} +print("FREECAD_PARTDESIGN_TRANSFORM_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":"))) diff --git a/scripts/freecad-reference-probe.py b/scripts/freecad-reference-probe.py index 27c65f7..e697457 100644 --- a/scripts/freecad-reference-probe.py +++ b/scripts/freecad-reference-probe.py @@ -1,5 +1,8 @@ import importlib +import importlib.util import json +import os +import sys import FreeCAD as App @@ -36,15 +39,147 @@ def probe_object(document, type_id): } +ALL_REFERENCE_MODULES = [ + "AddonManager", "Assembly", "BIM", "CAM", "Cloud", "Draft", "Fem", "Help", + "Idf", "Import", "Inspection", "JtReader", "Material", "Measure", "Mesh", + "MeshPart", "OpenSCAD", "Part", "PartDesign", "Plot", "Points", + "ReverseEngineering", "Robot", "Sandbox", "Show", "Sketcher", "Spreadsheet", + "Start", "Surface", "TechDraw", "TemplatePyMod", "Test", "Tux", "Web", +] + +GUI_REQUIRED_MODULES = { + "AddonManager", "Assembly", "BIM", "CAM", "Draft", "Fem", "Help", "Idf", + "Import", "Inspection", "JtReader", "Material", "Measure", "Mesh", "MeshPart", + "OpenSCAD", "Part", "PartDesign", "Plot", "Points", "ReverseEngineering", "Robot", + "Sandbox", "Show", "Sketcher", "Spreadsheet", "Start", "Surface", "TechDraw", "Tux", + "Web", +} + + +def module_is_installed(name): + suffixes = ("", ".py", ".so", ".pyd", ".dll", ".dylib") + roots = [path for path in sys.path if path] + try: + resource_dir = App.getResourceDir() + roots.extend([resource_dir, os.path.join(resource_dir, "Mod")]) + except Exception: + pass + for root in roots: + for suffix in suffixes: + if os.path.exists(os.path.join(root, name + suffix)): + return True + if os.path.exists(os.path.join(root, name, "__init__" + suffix)): + return True + if os.path.exists(os.path.join(root, "Mod", name + suffix)): + return True + return False + + def probe_module(name): + gui_required = name in GUI_REQUIRED_MODULES + installed = module_is_installed(name) + spec = None + try: + spec = importlib.util.find_spec(name) + except Exception: + spec = None try: module = importlib.import_module(name) - return {"name": name, "available": True, "file": getattr(module, "__file__", None)} + importable = True + import_error = None + file = getattr(module, "__file__", None) + except Exception as caught_error: + importable = False + import_error = caught_error + file = getattr(spec, "origin", None) if spec else None + compiled = bool(installed or spec) + if importable and gui_required and not bool(getattr(App, "GuiUp", False)): + runtime_status = "gui-only-unprobeable" + elif importable: + runtime_status = "compiled-importable" + elif compiled: + runtime_status = "compiled-import-failure" + else: + runtime_status = "not-built" + result = { + "name": name, + "available": importable, + "compiled": compiled, + "importable": importable, + "guiRequired": gui_required, + "guiAvailable": bool(getattr(App, "GuiUp", False)), + "runtimeStatus": runtime_status, + "file": file, + } + if import_error is not None: + result["error"] = str(import_error) + return result + + +def probe_gui_commands(document, selected_object): + if not bool(getattr(App, "GuiUp", False)): + return {"available": False, "workbenches": [], "commands": []} + try: + import FreeCADGui as Gui except Exception as error: - return {"name": name, "available": False, "error": str(error)} + return {"available": False, "workbenches": [], "commands": [], "error": str(error)} + + try: + workbench_names = sorted(Gui.listWorkbenches().keys()) + except Exception: + workbench_names = [] + command_observations = {} + + def action_enabled(command_id): + try: + command = Gui.Command.get(command_id) + if command is None: + return None + actions = command.getAction() + if not actions: + return None + return bool(actions[0].isEnabled()) + except Exception as error: + return {"error": str(error)} + + workbenches = [] + for workbench_name in workbench_names: + try: + Gui.activateWorkbench(workbench_name) + command_ids = sorted(set(Gui.listCommands())) + Gui.Selection.clearSelection() + empty_selection = {command_id: action_enabled(command_id) for command_id in command_ids} + Gui.Selection.addSelection(document.Name, selected_object.Name) + selected_selection = {command_id: action_enabled(command_id) for command_id in command_ids} + Gui.Selection.clearSelection() + observations = { + command_id: { + "emptySelection": empty_selection.get(command_id), + "selectedPartBox": selected_selection.get(command_id), + } + for command_id in command_ids + } + for command_id, observation in observations.items(): + command_observations.setdefault(command_id, []).append({"workbench": workbench_name, **observation}) + workbenches.append({"name": workbench_name, "commandCount": len(command_ids), "status": "probed"}) + except Exception as error: + try: + Gui.Selection.clearSelection() + except Exception: + pass + workbenches.append({"name": workbench_name, "commandCount": 0, "status": "probe-failure", "error": str(error)}) + return { + "available": True, + "workbenches": workbenches, + "commands": [ + {"id": command_id, "observations": observations} + for command_id, observations in sorted(command_observations.items()) + ], + } document = App.newDocument("ReferenceProbe") +box_object = document.addObject("Part::Box", "CommandProbeBox") version = App.Version() result = { "schemaVersion": 1, @@ -54,15 +189,20 @@ result = { "gitBranch": str(version[6]) if len(version) > 6 else "", "gitCommit": str(version[7]) if len(version) > 7 else "", "guiUp": bool(getattr(App, "GuiUp", False)), - "buildPurpose": "headless-reference-oracle", - "modules": [probe_module(name) for name in [ - "Part", "Material", "Measure", "Sketcher", "PartDesign", "TechDraw", - "Spreadsheet", "Draft", "Mesh", "Fem", "CAM", "Assembly", - ]], + "buildPurpose": "desktop-reference-oracle" if bool(getattr(App, "GuiUp", False)) else "headless-reference-oracle", + "moduleCount": len(ALL_REFERENCE_MODULES), + "modules": [probe_module(name) for name in ALL_REFERENCE_MODULES], "objects": [probe_object(document, type_id) for type_id in [ "Part::Box", "Part::Cylinder", "Part::Sphere", "Part::Cone", "Part::Feature", "PartDesign::Feature", "Sketcher::SketchObject", ]], + "guiCommands": probe_gui_commands(document, box_object), +} +result["moduleStatusSummary"] = { + status: sum(1 for module in result["modules"] if module["runtimeStatus"] == status) + for status in sorted({module["runtimeStatus"] for module in result["modules"]}) } App.closeDocument(document.Name) print("FREECAD_REFERENCE_RESULT=" + json.dumps(result, sort_keys=True, separators=(",", ":"))) +sys.stdout.flush() +sys.exit(0) diff --git a/scripts/freecad-semantic-comparator.mjs b/scripts/freecad-semantic-comparator.mjs new file mode 100644 index 0000000..d7d0c83 --- /dev/null +++ b/scripts/freecad-semantic-comparator.mjs @@ -0,0 +1,39 @@ +const finite = (value) => typeof value === 'number' && Number.isFinite(value) +const toleranceFor = (scenario, path) => path.includes('boundingBox') ? scenario.tolerance.linear : scenario.tolerance.scalar +const domainFor = (path) => path.includes('boundingBox') ? 'shape' : ['solids', 'faces', 'edges', 'vertices'].some((name) => path.endsWith(`.${name}`)) ? 'topology' : ['volume', 'area'].some((name) => path.endsWith(`.${name}`)) ? 'shape' : path.includes('objects') || path.includes('tree') ? 'objectTree' : path.includes('properties') ? 'properties' : 'identity' + +export function compareSemanticResult(scenario, actual, { source = 'FreeCAD', target = 'Web' } = {}) { + const differences = [] + const comparedDomains = new Set() + const compare = (expected, received, path) => { + const domain = domainFor(path) + comparedDomains.add(domain) + if (typeof expected === 'number') { + if (!finite(received) || Math.abs(expected - received) > toleranceFor(scenario, path)) differences.push({ kind: 'numeric', classification: 'unknown', domain, path, expected, actual: received, tolerance: toleranceFor(scenario, path) }) + return + } + if (Array.isArray(expected)) { + if (!Array.isArray(received) || received.length !== expected.length) differences.push({ kind: 'structure', classification: 'unknown', domain, path, expected: `array(${expected.length})`, actual: Array.isArray(received) ? `array(${received.length})` : typeof received }) + else expected.forEach((value, index) => compare(value, received[index], `${path}[${index}]`)) + return + } + if (expected && typeof expected === 'object') { + if (!received || typeof received !== 'object' || Array.isArray(received)) { differences.push({ kind: 'structure', classification: 'unknown', domain, path, expected: 'object', actual: typeof received }); return } + for (const [key, value] of Object.entries(expected)) compare(value, received[key], `${path}.${key}`) + return + } + if (received !== expected) differences.push({ kind: 'value', classification: 'unknown', domain, path, expected, actual: received }) + } + compare(scenario.expected, actual, scenario.id) + const allowedRuntimeFields = new Set(['schemaVersion', 'fixtureId', 'freecadVersion', 'freecadVersion', 'runtimeStatus']) + for (const key of Object.keys(actual || {})) if (!Object.prototype.hasOwnProperty.call(scenario.expected || {}, key) && !allowedRuntimeFields.has(key)) differences.push({ kind: 'field', classification: 'unknown', domain: domainFor(key), path: `${scenario.id}.${key}`, expected: 'absent', actual: actual[key] }) + return { + schemaVersion: 1, + fixtureId: scenario.id, + source, + target, + status: differences.length === 0 ? 'pass' : 'fail-unknown-difference', + domains: Object.fromEntries(['identity', 'shape', 'topology', 'objectTree', 'properties'].map((domain) => [domain, comparedDomains.has(domain) ? 'compared' : 'no-fixture-field'])), + differences, + } +} diff --git a/scripts/freecad-sketcher-constraint-oracle.py b/scripts/freecad-sketcher-constraint-oracle.py new file mode 100644 index 0000000..0a1cc12 --- /dev/null +++ b/scripts/freecad-sketcher-constraint-oracle.py @@ -0,0 +1,410 @@ +import json +import math +import sys + +import FreeCAD as App +import Part +import Sketcher + + +TOLERANCE = 1e-7 + + +def line(start_x, start_y, end_x, end_y): + return Part.LineSegment(App.Vector(start_x, start_y, 0), App.Vector(end_x, end_y, 0)) + + +def point(x, y): + return Part.Point(App.Vector(x, y, 0)) + + +def circle(center_x, center_y, radius): + return Part.Circle(App.Vector(center_x, center_y, 0), App.Vector(0, 0, 1), radius) + + +def distance(first, second): + return math.hypot(first.x - second.x, first.y - second.y) + + +def line_length(geometry): + return distance(geometry.StartPoint, geometry.EndPoint) + + +def constraint_types(sketch): + return [str(constraint.Type) for constraint in sketch.Constraints] + + +def solver_state(sketch, solve_status): + return { + "solveStatus": int(solve_status), + "degreesOfFreedom": int(sketch.DoF), + "fullyConstrained": bool(sketch.FullyConstrained), + "conflicting": [int(value) for value in sketch.ConflictingConstraints], + "redundant": [int(value) for value in sketch.RedundantConstraints], + "partiallyRedundant": [int(value) for value in sketch.PartiallyRedundantConstraints], + "malformed": [int(value) for value in sketch.MalformedConstraints], + "constraintTypes": constraint_types(sketch), + } + + +def new_sketch(case_id): + document = App.newDocument("Oracle_" + case_id.replace("-", "_")) + sketch = document.addObject("Sketcher::SketchObject", "Sketch") + sketch.MapMode = "Deactivated" + return document, sketch + + +def close_document(document): + App.closeDocument(document.Name) + + +def run_success(case_id, constraint_type, setup): + document, sketch = new_sketch(case_id) + try: + residual = setup(sketch) + solve_status = sketch.solve() + document.recompute() + state = solver_state(sketch, solve_status) + measured_residual = float(residual(sketch)) + passed = ( + state["solveStatus"] == 0 + and not state["conflicting"] + and not state["redundant"] + and not state["malformed"] + and math.isfinite(measured_residual) + and abs(measured_residual) <= TOLERANCE + ) + return { + "id": case_id, + "constraintType": constraint_type, + "expected": "success", + "observed": "success" if passed else "unexpected-failure", + "residual": measured_residual, + **state, + } + except Exception as error: + return { + "id": case_id, + "constraintType": constraint_type, + "expected": "success", + "observed": "exception", + "errorType": type(error).__name__, + "error": str(error), + } + finally: + close_document(document) + + +def add_lines(sketch): + return sketch.addGeometry([ + line(0, 0, 4, 0), + line(0, 2, 3, 6), + ], False) + + +def setup_coincident(sketch): + add_lines(sketch) + sketch.addConstraint(Sketcher.Constraint("Coincident", 0, 2, 1, 1)) + return lambda value: distance(value.Geometry[0].EndPoint, value.Geometry[1].StartPoint) + + +def setup_horizontal(sketch): + sketch.addGeometry(line(0, 0, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("Horizontal", 0)) + return lambda value: value.Geometry[0].EndPoint.y - value.Geometry[0].StartPoint.y + + +def setup_vertical(sketch): + sketch.addGeometry(line(0, 0, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("Vertical", 0)) + return lambda value: value.Geometry[0].EndPoint.x - value.Geometry[0].StartPoint.x + + +def setup_parallel(sketch): + add_lines(sketch) + sketch.addConstraint(Sketcher.Constraint("Parallel", 0, 1)) + return lambda value: ( + (value.Geometry[0].EndPoint.x - value.Geometry[0].StartPoint.x) + * (value.Geometry[1].EndPoint.y - value.Geometry[1].StartPoint.y) + - (value.Geometry[0].EndPoint.y - value.Geometry[0].StartPoint.y) + * (value.Geometry[1].EndPoint.x - value.Geometry[1].StartPoint.x) + ) / (line_length(value.Geometry[0]) * line_length(value.Geometry[1])) + + +def setup_perpendicular(sketch): + add_lines(sketch) + sketch.addConstraint(Sketcher.Constraint("Perpendicular", 0, 1)) + return lambda value: ( + (value.Geometry[0].EndPoint.x - value.Geometry[0].StartPoint.x) + * (value.Geometry[1].EndPoint.x - value.Geometry[1].StartPoint.x) + + (value.Geometry[0].EndPoint.y - value.Geometry[0].StartPoint.y) + * (value.Geometry[1].EndPoint.y - value.Geometry[1].StartPoint.y) + ) / (line_length(value.Geometry[0]) * line_length(value.Geometry[1])) + + +def setup_equal(sketch): + add_lines(sketch) + sketch.addConstraint(Sketcher.Constraint("Equal", 0, 1)) + return lambda value: line_length(value.Geometry[0]) - line_length(value.Geometry[1]) + + +def setup_tangent(sketch): + sketch.addGeometry([circle(0, 0, 2), circle(6, 0, 1)], False) + sketch.addConstraint(Sketcher.Constraint("Tangent", 0, 1)) + return lambda value: distance(value.Geometry[0].Center, value.Geometry[1].Center) - value.Geometry[0].Radius - value.Geometry[1].Radius + + +def setup_distance(sketch): + sketch.addGeometry(line(0, 0, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("Distance", 0, 5.0)) + return lambda value: line_length(value.Geometry[0]) - 5.0 + + +def setup_distance_x(sketch): + sketch.addGeometry(line(0, 0, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("DistanceX", 0, 1, 0, 2, 3.0)) + return lambda value: value.Geometry[0].EndPoint.x - value.Geometry[0].StartPoint.x - 3.0 + + +def setup_distance_y(sketch): + sketch.addGeometry(line(0, 0, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("DistanceY", 0, 1, 0, 2, 4.0)) + return lambda value: value.Geometry[0].EndPoint.y - value.Geometry[0].StartPoint.y - 4.0 + + +def setup_angle(sketch): + sketch.addGeometry(line(0, 0, 3, 3), False) + sketch.addConstraint(Sketcher.Constraint("Angle", 0, math.pi / 4)) + return lambda value: math.atan2( + value.Geometry[0].EndPoint.y - value.Geometry[0].StartPoint.y, + value.Geometry[0].EndPoint.x - value.Geometry[0].StartPoint.x, + ) - math.pi / 4 + + +def setup_radius(sketch): + sketch.addGeometry(circle(2, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("Radius", 0, 4.0)) + return lambda value: value.Geometry[0].Radius - 4.0 + + +def setup_diameter(sketch): + sketch.addGeometry(circle(2, 3, 4), False) + sketch.addConstraint(Sketcher.Constraint("Diameter", 0, 8.0)) + return lambda value: 2 * value.Geometry[0].Radius - 8.0 + + +def setup_point_on_object(sketch): + sketch.addGeometry([point(2, 3), line(0, 0, 4, 0)], False) + sketch.addConstraint(Sketcher.Constraint("PointOnObject", 0, 1, 1)) + return lambda value: value.Geometry[0].Y - value.Geometry[1].StartPoint.y + + +def setup_symmetric(sketch): + sketch.addGeometry([point(1, 2), point(0, 0), point(4, 6)], False) + sketch.addConstraint(Sketcher.Constraint("Symmetric", 0, 1, 1, 1, 2, 1)) + return lambda value: math.hypot( + (value.Geometry[0].X + value.Geometry[1].X) / 2 - value.Geometry[2].X, + (value.Geometry[0].Y + value.Geometry[1].Y) / 2 - value.Geometry[2].Y, + ) + + +def setup_internal_alignment(sketch): + sketch.addGeometry(Part.Ellipse(App.Vector(2, 3, 0), 5, 3), False) + sketch.exposeInternalGeometry(0) + return lambda value: 0 if "InternalAlignment" in constraint_types(value) else 1 + + +def setup_snells_law(sketch): + sketch.addGeometry([ + line(0, 0, -4, 4), + line(0, 0, 4, 3), + line(-5, 0, 5, 0), + ], False) + sketch.addConstraint(Sketcher.Constraint("Coincident", 0, 1, 1, 1)) + sketch.addConstraint(Sketcher.Constraint("PointOnObject", 0, 1, 2)) + sketch.addConstraint(Sketcher.Constraint("SnellsLaw", 0, 1, 1, 1, 2, 1.5)) + return lambda value: 0 if "SnellsLaw" in constraint_types(value) else 1 + + +def setup_block(sketch): + sketch.addGeometry(line(1, 2, 4, 6), False) + sketch.addConstraint(Sketcher.Constraint("Block", 0)) + return lambda value: distance(value.Geometry[0].StartPoint, App.Vector(1, 2, 0)) + distance(value.Geometry[0].EndPoint, App.Vector(4, 6, 0)) + + +def setup_weight(sketch): + curve = Part.BSplineCurve() + curve.buildFromPolesMultsKnots( + [App.Vector(0, 0, 0), App.Vector(1, 2, 0), App.Vector(3, 2, 0), App.Vector(4, 0, 0)], + [4, 4], + [0, 1], + False, + 3, + [1, 0.75, 1.25, 1], + ) + sketch.addGeometry(curve, False) + sketch.exposeInternalGeometry(0) + weight_index = next(index for index, constraint in enumerate(sketch.Constraints) if str(constraint.Type) == "Weight") + sketch.setDatum(weight_index, App.Units.Quantity("1.5")) + return lambda value: value.Geometry[0].getWeights()[0] - 1.5 + + +SUCCESS_SETUPS = [ + ("coincident-success", "Coincident", setup_coincident), + ("horizontal-success", "Horizontal", setup_horizontal), + ("vertical-success", "Vertical", setup_vertical), + ("parallel-success", "Parallel", setup_parallel), + ("tangent-success", "Tangent", setup_tangent), + ("distance-success", "Distance", setup_distance), + ("distance-x-success", "DistanceX", setup_distance_x), + ("distance-y-success", "DistanceY", setup_distance_y), + ("angle-success", "Angle", setup_angle), + ("perpendicular-success", "Perpendicular", setup_perpendicular), + ("radius-success", "Radius", setup_radius), + ("equal-success", "Equal", setup_equal), + ("point-on-object-success", "PointOnObject", setup_point_on_object), + ("symmetric-success", "Symmetric", setup_symmetric), + ("internal-alignment-success", "InternalAlignment", setup_internal_alignment), + ("snells-law-success", "SnellsLaw", setup_snells_law), + ("block-success", "Block", setup_block), + ("diameter-success", "Diameter", setup_diameter), + ("weight-success", "Weight", setup_weight), +] + + +def base_failure_geometry(sketch): + sketch.addGeometry([ + line(0, 0, 4, 0), + line(0, 2, 3, 6), + point(2, 3), + circle(8, 3, 2), + Part.Ellipse(App.Vector(2, 3, 0), 5, 3), + ], False) + + +FAILURE_CONSTRAINTS = [ + ("coincident-invalid-reference", "Coincident", lambda: Sketcher.Constraint("Coincident", 0, 2, 99, 1)), + ("horizontal-invalid-reference", "Horizontal", lambda: Sketcher.Constraint("Horizontal", 99)), + ("vertical-invalid-reference", "Vertical", lambda: Sketcher.Constraint("Vertical", 99)), + ("parallel-invalid-reference", "Parallel", lambda: Sketcher.Constraint("Parallel", 0, 99)), + ("tangent-invalid-reference", "Tangent", lambda: Sketcher.Constraint("Tangent", 3, 99)), + ("distance-invalid-reference", "Distance", lambda: Sketcher.Constraint("Distance", 99, 5.0)), + ("distance-x-invalid-reference", "DistanceX", lambda: Sketcher.Constraint("DistanceX", 99, 1, 0, 2, 3.0)), + ("distance-y-invalid-reference", "DistanceY", lambda: Sketcher.Constraint("DistanceY", 99, 1, 0, 2, 4.0)), + ("angle-invalid-reference", "Angle", lambda: Sketcher.Constraint("Angle", 99, math.pi / 4)), + ("perpendicular-invalid-reference", "Perpendicular", lambda: Sketcher.Constraint("Perpendicular", 0, 99)), + ("radius-invalid-reference", "Radius", lambda: Sketcher.Constraint("Radius", 99, 4.0)), + ("equal-invalid-reference", "Equal", lambda: Sketcher.Constraint("Equal", 0, 99)), + ("point-on-object-invalid-reference", "PointOnObject", lambda: Sketcher.Constraint("PointOnObject", 2, 1, 99)), + ("symmetric-invalid-reference", "Symmetric", lambda: Sketcher.Constraint("Symmetric", 2, 1, 2, 1, 99, 1)), + ("internal-alignment-invalid-reference", "InternalAlignment", lambda: Sketcher.Constraint("InternalAlignment:EllipseMajorDiameter", 99, 4)), + ("snells-law-invalid-reference", "SnellsLaw", lambda: Sketcher.Constraint("SnellsLaw", 0, 1, 1, 1, 99, 1.5)), + ("block-invalid-reference", "Block", lambda: Sketcher.Constraint("Block", 99)), + ("diameter-invalid-reference", "Diameter", lambda: Sketcher.Constraint("Diameter", 99, 8.0)), + ("weight-invalid-reference", "Weight", lambda: Sketcher.Constraint("Weight", 99, 1.5)), +] + + +def run_failure(case_id, constraint_type, constraint_factory): + document, sketch = new_sketch(case_id) + try: + base_failure_geometry(sketch) + add_result = None + error = None + try: + add_result = int(sketch.addConstraint(constraint_factory())) + except Exception as caught: + error = caught + solve_status = None + state = None + if error is None: + try: + solve_status = int(sketch.solve()) + state = solver_state(sketch, solve_status) + except Exception as caught: + error = caught + failure_observed = ( + error is not None + or add_result is None + or add_result < 0 + or solve_status is None + or solve_status < 0 + or bool(state and (state["conflicting"] or state["redundant"] or state["malformed"])) + ) + return { + "id": case_id, + "constraintType": constraint_type, + "expected": "failure", + "observed": "failure" if failure_observed else "unexpected-success", + "addResult": add_result, + **(state or {}), + **({"errorType": type(error).__name__, "error": str(error)} if error else {}), + } + finally: + close_document(document) + + +def run_classification_cases(): + cases = [] + + document, sketch = new_sketch("classification-reference") + try: + sketch.addGeometry(line(0, 0, 2, 1), False) + sketch.addConstraint(Sketcher.Constraint("Horizontal", 0)) + reference_index = sketch.addConstraint([Sketcher.Constraint("Distance", 0, 99.0)])[0] + sketch.setDriving(reference_index, False) + solve_status = sketch.solve() + state = solver_state(sketch, solve_status) + measured_value = float(sketch.Constraints[reference_index].Value) + passed = state["solveStatus"] == 0 and state["degreesOfFreedom"] == 3 and not state["conflicting"] and not state["redundant"] and not state["malformed"] and sketch.Constraints[reference_index].Driving is False and math.isfinite(measured_value) and abs(measured_value - 99.0) > TOLERANCE + cases.append({"id": "reference-dimension", "expected": "reference", "observed": "reference" if passed else "unexpected", "inputValue": 99.0, "measuredValue": measured_value, "driving": bool(sketch.Constraints[reference_index].Driving), **state}) + finally: + close_document(document) + + for case_id, second_value, expected_status, expected_redundant, expected_conflicting in [ + ("redundant-dimension", 5.0, -2, [2], []), + ("conflicting-dimension", 8.0, -3, [], [1, 2]), + ]: + document, sketch = new_sketch("classification-" + case_id) + try: + sketch.addGeometry(line(0, 0, 1, 0), False) + sketch.addConstraint(Sketcher.Constraint("Distance", 0, 5.0)) + sketch.addConstraint(Sketcher.Constraint("Distance", 0, second_value)) + solve_status = sketch.solve() + state = solver_state(sketch, solve_status) + passed = state["solveStatus"] == expected_status and state["degreesOfFreedom"] == 3 and state["redundant"] == expected_redundant and state["conflicting"] == expected_conflicting and not state["malformed"] + expected = "redundant" if expected_redundant else "conflicting" + cases.append({"id": case_id, "expected": expected, "observed": expected if passed else "unexpected", "values": [5.0, second_value], **state}) + finally: + close_document(document) + return cases + + +success_cases = [run_success(*fixture) for fixture in SUCCESS_SETUPS] +failure_cases = [run_failure(*fixture) for fixture in FAILURE_CONSTRAINTS] +classification_cases = run_classification_cases() +version = App.Version() +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-sketcher-constraint-oracle", + "freecadVersion": ".".join(version[:3]), + "revision": str(version[3]), + "gitCommit": str(version[7]) if len(version) > 7 else "", + "tolerance": TOLERANCE, + "status": "pass" if all(case["observed"] == case["expected"] for case in success_cases + failure_cases + classification_cases) else "failed", + "summary": { + "constraintTypes": len(SUCCESS_SETUPS), + "successCases": len(success_cases), + "successPassed": sum(case["observed"] == "success" for case in success_cases), + "failureCases": len(failure_cases), + "failurePassed": sum(case["observed"] == "failure" for case in failure_cases), + "classificationCases": len(classification_cases), + "classificationPassed": sum(case["observed"] == case["expected"] for case in classification_cases), + }, + "successCases": success_cases, + "failureCases": failure_cases, + "classificationCases": classification_cases, +} +print("FREECAD_SKETCHER_ORACLE_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":"))) +sys.stdout.flush() +sys.exit(0) diff --git a/scripts/freecad-sketcher-editor-oracle.py b/scripts/freecad-sketcher-editor-oracle.py new file mode 100644 index 0000000..b872da8 --- /dev/null +++ b/scripts/freecad-sketcher-editor-oracle.py @@ -0,0 +1,126 @@ +import json + +import FreeCAD as App +import Part +import Sketcher + + +TOLERANCE = 1e-7 + + +def line(start_x, start_y, end_x, end_y): + return Part.LineSegment(App.Vector(start_x, start_y, 0), App.Vector(end_x, end_y, 0)) + + +def point_value(point): + return [float(point.x), float(point.y)] + + +def line_value(geometry): + return {"start": point_value(geometry.StartPoint), "end": point_value(geometry.EndPoint)} + + +def sketch_state(sketch): + return { + "geometry": [line_value(geometry) for geometry in sketch.Geometry if hasattr(geometry, "StartPoint")], + "construction": [bool(sketch.getConstruction(index)) for index in range(sketch.GeometryCount)], + "constraintTypes": [str(constraint.Type) for constraint in sketch.Constraints], + "degreesOfFreedom": int(sketch.DoF), + "fullyConstrained": bool(sketch.FullyConstrained), + } + + +def run_case(case_id, operation): + document = App.newDocument("EditorOracle_" + case_id.replace("-", "_")) + sketch = document.addObject("Sketcher::SketchObject", "Sketch") + sketch.MapMode = "Deactivated" + try: + details = operation(document, sketch) + document.recompute() + return {"id": case_id, "passed": True, **details, "final": sketch_state(sketch)} + except Exception as error: + return {"id": case_id, "passed": False, "errorType": type(error).__name__, "error": str(error)} + finally: + App.closeDocument(document.Name) + + +def drag_case(document, sketch): + sketch.addGeometry(line(0, 0, 5, 1), False) + sketch.addConstraint(Sketcher.Constraint("Horizontal", 0)) + sketch.solve() + before = sketch_state(sketch) + sketch.moveGeometry(0, 2, App.Vector(8, 2, 0), False) + solve_status = sketch.solve() + return {"before": before, "solveStatus": int(solve_status)} + + +def split_case(document, sketch): + sketch.addGeometry(line(0, 0, 10, 0), True) + sketch.split(0, App.Vector(4, 0, 0)) + return {} + + +def extend_case(document, sketch): + sketch.addGeometry(line(0, 0, 10, 0), False) + sketch.extend(0, 5.0, 2) + return {} + + +def trim_case(document, sketch): + sketch.addGeometry([line(0, 0, 10, 0), line(7, -2, 7, 2)], False) + sketch.trim(0, App.Vector(9, 0, 0)) + return {} + + +def construction_case(document, sketch): + sketch.addGeometry(line(0, 0, 1, 0), False) + sketch.toggleConstruction(0) + return {} + + +def transaction_case(document, sketch): + document.UndoMode = 1 + sketch.addGeometry(line(0, 0, 5, 0), False) + document.recompute() + document.openTransaction("Move endpoint") + sketch.moveGeometry(0, 2, App.Vector(8, 0, 0), False) + document.commitTransaction() + document.recompute() + committed = point_value(sketch.Geometry[0].EndPoint) + document.undo() + document.recompute() + undone = point_value(sketch.Geometry[0].EndPoint) + document.redo() + document.recompute() + redone = point_value(sketch.Geometry[0].EndPoint) + return {"committedEnd": committed, "undoneEnd": undone, "redoneEnd": redone} + + +def auto_constraint_case(document, sketch): + sketch.addGeometry([line(0, 0, 5, 0.0001), line(5.0001, 0, 5, 4)], False) + sketch.addConstraint(Sketcher.Constraint("Coincident", 0, 2, 1, 1)) + sketch.addConstraint(Sketcher.Constraint("Horizontal", 0)) + solve_status = sketch.solve() + return {"solveStatus": int(solve_status)} + + +cases = [ + run_case("drag-horizontal", drag_case), + run_case("split-line", split_case), + run_case("extend-line", extend_case), + run_case("trim-at-intersection", trim_case), + run_case("toggle-construction", construction_case), + run_case("transaction-undo-redo", transaction_case), + run_case("auto-constraint", auto_constraint_case), +] +report = { + "schemaVersion": 1, + "baselineId": "freecad-1.1.1-sketcher-editor-oracle", + "freecadVersion": ".".join(App.Version()[0:3]), + "gitCommit": "0108fd4b4850cc46e625b60e53cea7a7bbe69f8d", + "tolerance": TOLERANCE, + "status": "pass" if all(case["passed"] for case in cases) else "failed", + "summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["passed"])}, + "cases": cases, +} +print("FREECAD_SKETCHER_EDITOR_ORACLE_RESULT=" + json.dumps(report, sort_keys=True)) diff --git a/scripts/generate-freecad-entrypoint-inventory.mjs b/scripts/generate-freecad-entrypoint-inventory.mjs new file mode 100644 index 0000000..80a6baf --- /dev/null +++ b/scripts/generate-freecad-entrypoint-inventory.mjs @@ -0,0 +1,63 @@ +import { access, readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const sourceRoot = resolve(root, process.env.FREECAD_SOURCE_DIR || '.cache/freecad/FreeCAD') +const outputPath = resolve(root, process.env.FREECAD_ENTRYPOINT_INVENTORY || 'config/freecad-entrypoint-inventory.json') +const sourceInventory = JSON.parse(await readFile(resolve(root, 'config/freecad-source-inventory.json'), 'utf8')) +const exists = async (relativePath) => access(resolve(sourceRoot, relativePath)).then(() => true).catch(() => false) + +const formats = [ + ['FCStd', 'project', ['App', 'Gui'], ['src/App/Document.cpp', 'src/Gui/Document.cpp'], 'native-parser', 'read-only'], + ['BREP', 'geometry', ['Part'], ['src/Mod/Part/App/FeaturePartImportBrep.cpp'], 'occt-worker', 'experimental'], + ['STEP', 'geometry', ['Part', 'Import'], ['src/Mod/Part/App/FeaturePartImportStep.cpp', 'src/Mod/Import/App/WriterStep.cpp'], 'occt-worker', 'experimental'], + ['IGES', 'geometry', ['Part', 'Import'], ['src/Mod/Part/App/FeaturePartImportIges.cpp', 'src/Mod/Import/App/WriterIges.cpp'], 'occt-worker', 'experimental'], + ['STL', 'mesh', ['Mesh', 'MeshPart'], ['src/Mod/Mesh/App/Importer.cpp', 'src/Mod/Mesh/App/Exporter.cpp'], 'worker-adapter', 'experimental'], + ['OBJ', 'mesh', ['Mesh'], ['src/Mod/Mesh/App/Importer.cpp', 'src/Mod/Mesh/App/Exporter.cpp'], 'worker-adapter', 'experimental'], + ['PLY', 'mesh', ['Mesh'], ['src/Mod/Mesh/App/Importer.cpp', 'src/Mod/Mesh/App/Exporter.cpp'], 'worker-adapter', 'experimental'], + ['DXF', '2d', ['Draft', 'Import'], ['src/Mod/Draft/importDXF.py', 'src/Mod/Import/App/dxf/ImpExpDxf.cpp'], 'worker-adapter', 'read-only'], + ['SVG', 'drawing', ['Draft', 'TechDraw'], ['src/Mod/Draft/importSVG.py', 'src/Mod/TechDraw/App/TechDrawExport.cpp'], 'sanitized-parser', 'read-only'], + ['PDF', 'drawing', ['TechDraw'], ['src/Mod/TechDraw/App/TechDrawExport.cpp'], 'server-export', 'read-only'], + ['IFC', 'bim', ['BIM'], ['src/Mod/BIM/importers/importIFC.py'], 'sandboxed-adapter', 'unsupported'], + ['CSV', 'data', ['Spreadsheet'], ['src/Mod/Spreadsheet/App/SheetPyImp.cpp'], 'facade-parser', 'experimental'], + ['GCODE', 'manufacturing', ['CAM'], ['src/Mod/CAM/PathCommands.py'], 'sandboxed-adapter', 'unsupported'], + ['JT', 'geometry', ['JtReader'], ['src/Mod/JtReader/CMakeLists.txt'], 'proxy-resource', 'unsupported'], + ['IDF', 'electronics', ['Idf'], ['src/Mod/Idf/Idf.py'], 'proxy-resource', 'unsupported'], +] + +const entrypoints = [ + ['python-api', 'scripting', ['App', 'Gui'], ['src/App/ApplicationPy.cpp', 'src/Gui/ApplicationPy.cpp'], 'sandboxed-interpreter', 'unsupported'], + ['macro-fcmacro', 'scripting', ['Gui'], ['src/Gui/CommandMacro.cpp'], 'blocked-resource', 'unsupported'], + ['addon-package', 'extension', ['AddonManager'], ['src/Mod/AddonManager'], 'signed-catalog', 'unsupported'], + ['preferences', 'configuration', ['App', 'Gui'], ['src/Base/Parameter.cpp', 'src/Gui/PreferencePages'], 'namespaced-settings', 'experimental'], + ['clipboard', 'desktop', ['Gui'], ['src/Gui/MainWindow.cpp'], 'browser-clipboard-permission', 'unsupported'], + ['print-job', 'desktop', ['Gui', 'TechDraw'], ['src/Gui/MainWindow.cpp', 'src/Mod/TechDraw/Gui/PagePrinter.cpp'], 'server-export', 'unsupported'], +] + +const validateEvidence = async (items) => { + for (const item of items) for (const evidence of item[3]) if (!(await exists(evidence))) throw new Error(`Missing source evidence: ${evidence}`) +} +await validateEvidence(formats) +await validateEvidence(entrypoints) + +const formatRecords = formats.map(([id, category, modules, sourceEvidence, webStrategy, compatibility]) => ({ id, category, modules, sourceEvidence, webStrategy, compatibility, roundTrip: compatibility === 'experimental', status: 'inventory-recorded' })) +const entrypointRecords = entrypoints.map(([id, category, modules, sourceEvidence, webStrategy, compatibility]) => ({ id, category, modules, sourceEvidence, webStrategy, compatibility, execution: false, status: 'inventory-recorded' })) +const coveredModules = new Set([...formatRecords, ...entrypointRecords].flatMap((entry) => entry.modules)) +const moduleCoverage = sourceInventory.modules.map((module) => ({ name: module.name, sourcePath: module.sourcePath, coveredBy: [...formatRecords, ...entrypointRecords].filter((entry) => entry.modules.includes(module.name)).map((entry) => entry.id), status: coveredModules.has(module.name) ? 'entrypoint-covered' : 'scope-only' })) + +const inventory = { + schemaVersion: 1, + baseline: { freecadVersion: '1.1.1', commit: '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' }, + generatedBy: 'scripts/generate-freecad-entrypoint-inventory.mjs', + sourceInventory: 'config/freecad-source-inventory.json', + formats: formatRecords, + entrypoints: entrypointRecords, + moduleCoverage, + policy: { + unsupportedExecution: ['Python API', 'FCMacro', 'addon package', 'clipboard', 'print job'], + unknownOrUnlistedEntries: 'fail-inventory-check', + untrustedContent: 'never-execute', + }, +} +await writeFile(outputPath, `${JSON.stringify(inventory, null, 2)}\n`, 'utf8') +console.log(JSON.stringify({ status: 'entrypoint-inventory-generated', output: outputPath, formatCount: formatRecords.length, entrypointCount: entrypointRecords.length, moduleCount: moduleCoverage.length }, null, 2)) diff --git a/scripts/generate-freecad-golden-fixtures.mjs b/scripts/generate-freecad-golden-fixtures.mjs new file mode 100644 index 0000000..5ec9ad1 --- /dev/null +++ b/scripts/generate-freecad-golden-fixtures.mjs @@ -0,0 +1,108 @@ +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawnSync } from 'node:child_process' +import { loadGoldenManifest } from './freecad-golden-contract.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const scenarioDir = resolve(root, 'fixtures/freecad-golden/scenarios') +const failureDir = resolve(root, 'fixtures/freecad-golden/failures') +const workDir = resolve(root, '.cache/freecad/generated-fixtures') +const command = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-native/bin/FreeCADCmd') +const driver = resolve(root, 'scripts/freecad-golden-driver.py') +await mkdir(scenarioDir, { recursive: true }) +await mkdir(failureDir, { recursive: true }) +await mkdir(workDir, { recursive: true }) + +const manifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/manifest.json')) +const existing = manifest.scenarios.map(({ scenario }) => scenario) +const generated = [] +const add = (id, category, description, operation) => generated.push({ schemaVersion: 1, id, category, description, operation, tolerance: { linear: 1e-6, scalar: 1e-6 } }) + +for (let index = 1; index <= 20; index += 1) { + add(`part-box-${String(index).padStart(3, '0')}`, 'Part', `Parametric box fixture ${index}`, { + type: 'box', length: 2 + (index % 9), width: 3 + ((index * 2) % 11), height: 4 + ((index * 3) % 13), + placement: { translation: [index % 5, (index * 2) % 7, index % 3] }, + }) +} +for (let index = 1; index <= 20; index += 1) { + add(`part-cylinder-${String(index).padStart(3, '0')}`, 'Part', `Parametric cylinder fixture ${index}`, { + type: 'cylinder', radius: 1 + (index % 8) / 2, height: 5 + (index * 3) % 17, angle: 360, + placement: { translation: [-(index % 4), (index * 2) % 5, index % 3] }, + }) +} +for (let index = 1; index <= 15; index += 1) { + add(`part-sphere-${String(index).padStart(3, '0')}`, 'Part', `Parametric sphere fixture ${index}`, { + type: 'sphere', radius: 1 + (index % 9) / 3, + placement: { translation: [index % 6, -(index % 5), (index * 2) % 4] }, + }) +} +for (let index = 1; index <= 15; index += 1) { + add(`part-cone-${String(index).padStart(3, '0')}`, 'Part', `Parametric cone fixture ${index}`, { + type: 'cone', radius1: 2 + (index % 6), radius2: 0.5 + (index % 4) / 2, height: 4 + (index % 15), angle: 360, + placement: { translation: [index % 4, index % 6, -(index % 2)] }, + }) +} +for (let index = 1; index <= 25; index += 1) { + const kind = index % 3 === 0 ? 'common' : index % 3 === 1 ? 'cut' : 'fuse' + const size = 8 + (index % 5) + const base = { type: 'box', length: size, width: size - 1, height: size + 1, placement: { translation: [0, 0, index % 2] } } + const tool = kind === 'cut' + ? { type: 'cylinder', radius: 1.5 + (index % 3), height: size + 1, angle: 360, placement: { translation: [size / 2, (size - 1) / 2, index % 2] } } + : { type: 'box', length: 4 + (index % 4), width: 4 + ((index + 1) % 4), height: 4 + ((index + 2) % 4), placement: { translation: [2, 2, index % 2] } } + add(`part-${kind}-${String(index).padStart(3, '0')}`, 'Part', `${kind} Boolean fixture ${index}`, { type: kind, base, tool }) +} + +const expectedFromOracle = (scenario) => { + const tempFile = resolve(workDir, `${scenario.id}.json`) + return writeFile(tempFile, `${JSON.stringify(scenario, null, 2)}\n`).then(() => { + const execution = spawnSync(command, [driver], { + cwd: root, + encoding: 'utf8', + timeout: 120000, + maxBuffer: 4 * 1024 * 1024, + env: { ...process.env, FREECAD_GOLDEN_SCENARIO: tempFile }, + }) + const output = `${execution.stdout || ''}\n${execution.stderr || ''}` + const line = output.split(/\r?\n/).find((entry) => entry.startsWith('FREECAD_GOLDEN_RESULT=')) + if (execution.error || execution.status !== 0 || !line) throw new Error(`${scenario.id} oracle failure: ${execution.error?.message || output.trim()}`) + const actual = JSON.parse(line.slice('FREECAD_GOLDEN_RESULT='.length)) + if (!['Solid', 'Compound'].includes(actual.shapeType) || actual.isNull !== false || actual.isValid !== true || actual.solids < 1) throw new Error(`${scenario.id} produced an invalid success shape.`) + return { + ...scenario, + expected: { + shapeType: actual.shapeType, + isNull: actual.isNull, + isValid: actual.isValid, + solids: actual.solids, + faces: actual.faces, + edges: actual.edges, + vertices: actual.vertices, + volume: actual.volume, + area: actual.area, + boundingBox: actual.boundingBox, + }, + } + }) +} + +const allSuccess = [...existing] +for (const scenario of generated) { + const completed = await expectedFromOracle(scenario) + allSuccess.push(completed) + await writeFile(resolve(scenarioDir, `${completed.id}.json`), `${JSON.stringify(completed, null, 2)}\n`) +} +const successEntries = allSuccess.map((scenario) => ({ id: scenario.id, file: `scenarios/${scenario.id}.json` })) +await writeFile(resolve(root, 'fixtures/freecad-golden/manifest.json'), `${JSON.stringify({ schemaVersion: 1, baselineId: 'freecad-1.1.1', driver: 'scripts/freecad-golden-driver.py', scenarios: successEntries }, null, 2)}\n`) + +const failures = [] +const addFailure = (id, description, operation, expectedError) => failures.push({ schemaVersion: 1, id, category: 'Part', description, operation, expectedError }) +for (let index = 1; index <= 12; index += 1) addFailure(`invalid-box-${String(index).padStart(3, '0')}`, 'Box dimension rejection', { type: 'box', length: index % 2 ? 0 : -index, width: 2 + index, height: 3 }, 'positive') +for (let index = 1; index <= 10; index += 1) addFailure(`invalid-cylinder-${String(index).padStart(3, '0')}`, 'Cylinder parameter rejection', { type: 'cylinder', radius: index % 2 ? 0 : -index, height: index % 3 ? 5 : 0, angle: index % 4 ? 360 : 361 }, 'parameters') +for (let index = 1; index <= 8; index += 1) addFailure(`invalid-sphere-${String(index).padStart(3, '0')}`, 'Sphere radius rejection', { type: 'sphere', radius: index % 2 ? 0 : -index }, 'positive') +for (let index = 1; index <= 8; index += 1) addFailure(`invalid-cone-${String(index).padStart(3, '0')}`, 'Cone parameter rejection', { type: 'cone', radius1: index % 2 ? -1 : 0, radius2: index % 2 ? 0 : -1, height: index % 3 ? 5 : 0, angle: index % 4 ? 360 : 361 }, 'parameters') +for (let index = 1; index <= 6; index += 1) addFailure(`invalid-boolean-${String(index).padStart(3, '0')}`, 'Boolean operand rejection', { type: index % 2 ? 'cut' : 'fuse', base: { type: 'box', length: 1, width: 1, height: 1 }, ...(index % 3 ? { tool: { type: 'unknown' } } : {}) }, index % 3 ? 'Unsupported' : 'operation') +addFailure('invalid-common-001', 'Common operand rejection', { type: 'common', base: { type: 'box', length: 1, width: 1, height: 1 } }, 'operation') +for (let index = 1; index <= 6; index += 1) addFailure(`invalid-operation-${String(index).padStart(3, '0')}`, 'Unknown operation rejection', { type: `unsupported-${index}` }, 'Unsupported') +for (const failure of failures) await writeFile(resolve(failureDir, `${failure.id}.json`), `${JSON.stringify(failure, null, 2)}\n`) +await writeFile(resolve(failureDir, 'manifest.json'), `${JSON.stringify({ schemaVersion: 1, baselineId: 'freecad-1.1.1', driver: 'scripts/freecad-golden-driver.py', failures: failures.map((failure) => ({ id: failure.id, file: `${failure.id}.json` })) }, null, 2)}\n`) +console.log(JSON.stringify({ status: 'freecad-golden-fixtures-generated', successCount: allSuccess.length, generatedSuccessCount: generated.length, failureCount: failures.length }, null, 2)) diff --git a/scripts/generate-freecad-gui-command-inventory.mjs b/scripts/generate-freecad-gui-command-inventory.mjs new file mode 100644 index 0000000..78b78a4 --- /dev/null +++ b/scripts/generate-freecad-gui-command-inventory.mjs @@ -0,0 +1,64 @@ +import { createHash } from 'node:crypto' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, process.env.FREECAD_GUI_COMMAND_REPORT || '.cache/freecad/reference-desktop.json') +const outputPath = resolve(root, process.env.FREECAD_GUI_COMMAND_INVENTORY || 'config/freecad-gui-command-inventory.json') +const sourceInventory = JSON.parse(await readFile(resolve(root, 'config/freecad-source-inventory.json'), 'utf8')) +const reportBytes = await readFile(reportPath) +const report = JSON.parse(reportBytes) +if (report.baselineId !== 'freecad-1.1.1' || report.freecadVersion !== '1.1.1' || report.guiUp !== true) throw new Error('A verified desktop FreeCAD GUI report is required.') +if (!report.guiCommands?.available || !Array.isArray(report.guiCommands.commands)) throw new Error('Desktop report does not contain GUI command observations.') + +const sourceCommandModules = new Map() +for (const module of sourceInventory.modules) for (const commandId of module.commandIds) { + const modules = sourceCommandModules.get(commandId) || [] + modules.push(module.name) + sourceCommandModules.set(commandId, modules) +} +const normalizeState = (state) => typeof state === 'boolean' ? state : state && typeof state === 'object' ? 'error' : 'no-action' +const unique = (values) => [...new Set(values)].sort() +const commands = report.guiCommands.commands.map((command) => { + const observations = command.observations || [] + const emptyStates = unique(observations.map((entry) => normalizeState(entry.emptySelection))) + const selectedStates = unique(observations.map((entry) => normalizeState(entry.selectedPartBox))) + const selectionSensitive = observations.some((entry) => typeof entry.emptySelection === 'boolean' && typeof entry.selectedPartBox === 'boolean' && entry.emptySelection !== entry.selectedPartBox) + return { + id: command.id, + sourceModules: unique(sourceCommandModules.get(command.id) || ['GuiCore']), + workbenches: unique(observations.map((entry) => entry.workbench)), + cases: { + emptySelection: { states: emptyStates, observed: true }, + selectedPartBox: { states: selectedStates, observed: true }, + }, + selectionSensitive, + status: 'runtime-probed', + } +}).sort((a, b) => a.id.localeCompare(b.id)) + +const sourceOnlyCommands = [...sourceCommandModules.entries()] + .filter(([id]) => !commands.some((command) => command.id === id)) + .map(([id, modules]) => ({ + id, + sourceModules: unique(modules), + reason: modules.some((module) => ['Cloud', 'JtReader', 'Sandbox', 'TemplatePyMod'].includes(module)) ? 'module-not-built' : 'source-registration-not-loaded', + })) + .sort((a, b) => a.id.localeCompare(b.id)) + +const inventory = { + schemaVersion: 1, + baseline: { freecadVersion: '1.1.1', commit: '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' }, + generatedBy: 'scripts/generate-freecad-gui-command-inventory.mjs', + sourceInventory: 'config/freecad-source-inventory.json', + runtimeEvidence: { + report: '.cache/freecad/reference-desktop.json', + reportSha256: createHash('sha256').update(reportBytes).digest('hex'), + workbenchCount: report.guiCommands.workbenches.length, + }, + commandCount: commands.length, + commands, + sourceOnlyCommands, +} +await writeFile(outputPath, `${JSON.stringify(inventory, null, 2)}\n`, 'utf8') +console.log(JSON.stringify({ status: 'gui-command-inventory-generated', output: outputPath, commandCount: commands.length, sourceOnlyCount: sourceOnlyCommands.length }, null, 2)) diff --git a/scripts/generate-freecad-parameter-mutation-report.mjs b/scripts/generate-freecad-parameter-mutation-report.mjs new file mode 100644 index 0000000..2d75b33 --- /dev/null +++ b/scripts/generate-freecad-parameter-mutation-report.mjs @@ -0,0 +1,213 @@ +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const load = async (file) => JSON.parse(await readFile(resolve(root, file), 'utf8')) +const canonical = (value) => Array.isArray(value) + ? value.map(canonical) + : value && typeof value === 'object' + ? Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, child]) => [key, canonical(child)])) + : value +const stable = (value) => JSON.stringify(canonical(value)) +const plan = await load('config/freecad-parameter-mutation-plan.json') +const coverage = await load(plan.coveragePlan) +const fail = (message) => { throw new Error(`FreeCAD parameter mutation report: ${message}`) } +if (plan.schemaVersion !== 1 || coverage.schemaVersion !== 1 || coverage.baselineId !== plan.baselineId || coverage.sourceCommit !== plan.sourceCommit) fail('baseline is not locked to FreeCAD 1.1.1.') + +const familyByType = new Map() +for (const family of coverage.families) { + familyByType.set(family.id, family.id) + for (const type of family.operationTypes) familyByType.set(type, family.id) +} +const typeAliases = new Map([ + ['PartDesign::Revolution', 'partdesign-revolution'], + ['PartDesign::AdditiveLoft', 'additive-loft'], + ['PartDesign::SubtractiveLoft', 'subtractive-loft'], + ['PartDesign::AdditivePipe', 'additive-pipe'], + ['PartDesign::SubtractivePipe', 'subtractive-pipe'], + ['PartDesign::Fillet', 'partdesign-fillet'], + ['PartDesign::Chamfer', 'partdesign-chamfer'], +]) +for (const [typeId, alias] of typeAliases) familyByType.set(alias, familyByType.get(typeId) || typeId) +const records = new Map(coverage.families.map((family) => [family.id, { + nominal: [], + invalid: [], + parameterVariants: new Map(), + editRecovery: [], + roundtrip: { required: family.roundtripIds.length, passed: 0 }, + sources: new Set(), +}])) +const addRecord = (familyId, dimension, record, source) => { + const bucket = records.get(familyId) + if (!bucket) return + bucket[dimension].push(record) + bucket.sources.add(source) +} +const addVariant = (familyId, snapshot, source) => { + const bucket = records.get(familyId) + if (!bucket || snapshot === undefined) return + bucket.parameterVariants.set(stable(snapshot), { snapshot, source }) + bucket.sources.add(source) +} +const manifestCases = async (manifestPath, entryKey, directory) => { + const manifest = await load(manifestPath) + const base = resolve(root, directory) + return Promise.all((manifest[entryKey] || []).map(async (entry) => ({ + ...await load(resolve(base, entry.file)), + source: `${manifestPath}/${entry.id}`, + }))) +} +const [successFixtures, failureFixtures, supplementalSuccessFixtures, supplementalFailureFixtures] = await Promise.all([ + manifestCases('fixtures/freecad-golden/manifest.json', 'scenarios', 'fixtures/freecad-golden'), + manifestCases('fixtures/freecad-golden/failures/manifest.json', 'failures', 'fixtures/freecad-golden/failures'), + manifestCases('fixtures/freecad-golden/feature-families/manifest.json', 'scenarios', 'fixtures/freecad-golden/feature-families'), + manifestCases('fixtures/freecad-golden/feature-families/failures/manifest.json', 'failures', 'fixtures/freecad-golden/feature-families/failures'), +]) +for (const fixture of [...successFixtures, ...supplementalSuccessFixtures]) { + const familyId = familyByType.get(fixture.operation?.type) + if (!familyId) continue + addRecord(familyId, 'nominal', { id: fixture.id, parameterSnapshot: fixture.operation }, fixture.source) + addVariant(familyId, fixture.operation, fixture.source) +} +for (const fixture of [...failureFixtures, ...supplementalFailureFixtures]) { + const familyId = familyByType.get(fixture.operation?.type) + if (!familyId) continue + addRecord(familyId, 'invalid', { id: fixture.id, parameterSnapshot: fixture.operation }, fixture.source) +} + +const addOracleCases = async (file, successKey, failureKey) => { + const report = await load(file) + const source = file + for (const key of [successKey, failureKey]) for (const fixture of report[key] || []) { + const familyId = familyByType.get(fixture.typeId) + if (!familyId) continue + if (key === successKey) addRecord(familyId, 'nominal', { id: fixture.id, typeId: fixture.typeId }, source) + else addRecord(familyId, 'invalid', { id: fixture.id, typeId: fixture.typeId }, source) + } +} +await addOracleCases('config/freecad-part-builders-oracle.json', 'successCases', 'failureCases') +for (const file of ['config/freecad-partdesign-failure-oracle.json', 'config/freecad-partdesign-revolution-groove-oracle.json', 'config/freecad-partdesign-transform-oracle.json']) { + const report = await load(file) + for (const fixture of report.cases || []) { + const familyId = familyByType.get(fixture.typeId) + if (!familyId) continue + if (fixture.passed === true && fixture.status === 'Valid' && fixture.shapeValid !== false && fixture.solids > 0) addRecord(familyId, 'nominal', { id: fixture.id, typeId: fixture.typeId }, file) + if (fixture.passed === true && (fixture.observed === 'rejected' || fixture.state?.includes('Invalid'))) addRecord(familyId, 'invalid', { id: fixture.id, typeId: fixture.typeId }, file) + } +} +const baseOracle = await load('config/freecad-partdesign-base-oracle.json') +for (const fixture of baseOracle.cases || []) { + const familyId = fixture.id.startsWith('pad-') ? 'PartDesign::Pad' : fixture.id.startsWith('pocket-') ? 'PartDesign::Pocket' : undefined + if (familyId && fixture.passed === true && fixture.status === 'Valid' && fixture.solids > 0) addRecord(familyId, 'nominal', { id: fixture.id, typeId: familyId, outcome: { volume: fixture.volume, faces: fixture.faces } }, 'config/freecad-partdesign-base-oracle.json') +} +for (const file of ['config/freecad-partdesign-loft-oracle.json', 'config/freecad-partdesign-dressup-oracle.json']) { + const report = await load(file) + for (const fixture of report.cases || []) { + const familyId = familyByType.get(fixture.typeId) + if (familyId && fixture.passed === true && fixture.status === 'Valid' && fixture.solids > 0) addRecord(familyId, 'nominal', { id: fixture.id, typeId: fixture.typeId, outcome: { volume: fixture.volume, faces: fixture.faces } }, file) + } +} + +const lifecycle = await load('config/chrome-partdesign-lifecycle-verification.json') +if (lifecycle.status === 'pass' && lifecycle.initial && lifecycle.edited && lifecycle.undone && lifecycle.reopened) { + for (const familyId of ['PartDesign::Pad', 'PartDesign::Pocket']) addRecord(familyId, 'editRecovery', { transaction: 'pad-length-edit', before: lifecycle.initial, edited: lifecycle.edited, restored: lifecycle.undone, reopened: lifecycle.reopened }, 'config/chrome-partdesign-lifecycle-verification.json') +} +const loft = await load('config/chrome-partdesign-loft-verification.json') +if (loft.status === 'pass') for (const [operation, recovery] of Object.entries(loft.failureRecovery || {})) { + for (const familyId of operation === 'loft' ? ['PartDesign::AdditiveLoft', 'PartDesign::SubtractiveLoft'] : ['PartDesign::AdditivePipe', 'PartDesign::SubtractivePipe']) addRecord(familyId, 'editRecovery', { transaction: `${operation}-failure-recovery`, recovery }, 'config/chrome-partdesign-loft-verification.json') +} + +const omitRuntimeFields = (value) => { + if (!value || typeof value !== 'object' || Array.isArray(value)) return value + const ignored = new Set(['objectId', 'tip', 'shapeId', 'volume', 'area', 'shapeCount', 'kernelReferenceCount', 'recompute', 'status', 'solids', 'faces', 'edges', 'vertices', 'structuralValid', 'base']) + return Object.fromEntries(Object.entries(value).filter(([key]) => !ignored.has(key))) +} +const visitBrowserEvidence = (value, source) => { + if (!value || typeof value !== 'object') return + if (typeof value.command === 'string') { + const familyId = familyByType.get(value.command) + if (familyId) addVariant(familyId, omitRuntimeFields(value), source) + } + for (const child of Object.values(value)) visitBrowserEvidence(child, source) +} +for (const file of ['config/chrome-part-primitives-verification.json', 'config/chrome-partdesign-transform-verification.json', 'config/chrome-partdesign-loft-verification.json', 'config/chrome-partdesign-lifecycle-verification.json']) { + visitBrowserEvidence(await load(file), file) +} +if (lifecycle.initial?.length !== undefined && lifecycle.edited?.length !== undefined && lifecycle.undone?.length !== undefined) { + addVariant('PartDesign::Pad', { length: lifecycle.initial.length }, 'config/chrome-partdesign-lifecycle-verification.json#initial') + addVariant('PartDesign::Pad', { length: lifecycle.edited.length }, 'config/chrome-partdesign-lifecycle-verification.json#edited') + addVariant('PartDesign::Pad', { length: lifecycle.undone.length }, 'config/chrome-partdesign-lifecycle-verification.json#restored') +} + +for (const family of coverage.families) { + const bucket = records.get(family.id) + const roundtrip = await load(coverage.fcstdRoundtrip) + const requiredIds = new Set(family.roundtripIds) + bucket.roundtrip.passed = roundtrip.scenarios.filter((scenario) => requiredIds.has(scenario.id) && scenario.status === 'pass' && (scenario.differences || []).length === 0).length +} + +const families = coverage.families.map((family) => { + const bucket = records.get(family.id) + const evidence = { + 'nominal-parameter-set': bucket.nominal.length > 0, + 'invalid-boundary': bucket.invalid.length > 0, + 'parameter-variant': bucket.parameterVariants.size >= 2, + 'edit-recompute-recovery': bucket.editRecovery.length > 0, + 'fcstd-roundtrip': bucket.roundtrip.required === 0 || bucket.roundtrip.passed === bucket.roundtrip.required, + } + const missing = Object.entries(evidence).filter(([, present]) => !present).map(([dimension]) => dimension) + return { + id: family.id, + operationTypes: family.operationTypes, + evidence, + counts: { + nominal: bucket.nominal.length, + invalid: bucket.invalid.length, + parameterVariants: bucket.parameterVariants.size, + editRecovery: bucket.editRecovery.length, + roundtripRequired: bucket.roundtrip.required, + roundtripPassed: bucket.roundtrip.passed, + }, + parameterVariantSources: [...bucket.parameterVariants.values()].slice(0, 12), + editRecoverySources: bucket.editRecovery.map((entry) => entry.transaction), + sources: [...bucket.sources].sort(), + complete: missing.length === 0, + missing, + } +}) +const complete = families.filter((family) => family.complete).length +const missingDimensions = Object.fromEntries([...new Set(families.flatMap((family) => family.missing))].sort().map((dimension) => [dimension, families.filter((family) => family.missing.includes(dimension)).length])) +const report = { + schemaVersion: 1, + baselineId: plan.baselineId, + sourceCommit: plan.sourceCommit, + status: complete === families.length ? 'pass' : 'fail-closed', + exactPromotionReady: false, + dimensions: plan.dimensions, + summary: { + families: families.length, + completeFamilies: complete, + incompleteFamilies: families.length - complete, + nominalFamilies: families.filter((family) => family.evidence['nominal-parameter-set']).length, + invalidBoundaryFamilies: families.filter((family) => family.evidence['invalid-boundary']).length, + parameterVariantFamilies: families.filter((family) => family.evidence['parameter-variant']).length, + editRecoveryFamilies: families.filter((family) => family.evidence['edit-recompute-recovery']).length, + roundtripFamilies: families.filter((family) => family.evidence['fcstd-roundtrip']).length, + }, + blockers: [ + `${missingDimensions['parameter-variant'] || 0} families lack two distinct parameter snapshots.`, + `${missingDimensions['edit-recompute-recovery'] || 0} families lack a real edited/recomputed/restored transaction.`, + ].filter((message) => !message.startsWith('0 ')), + missingDimensions, + families, +} +const outputPath = resolve(root, 'config/freecad-parameter-mutation-report.json') +const serialized = `${JSON.stringify(report, null, 2)}\n` +if (process.argv.includes('--check')) { + const existing = await readFile(outputPath, 'utf8') + if (existing !== serialized) fail('config/freecad-parameter-mutation-report.json is stale; run npm run generate:freecad-parameter-mutations.') + console.log(JSON.stringify({ status: report.status === 'pass' ? 'freecad-parameter-mutation-pass' : 'freecad-parameter-mutation-fail-closed', ...report.summary, missingDimensions: report.missingDimensions, blockers: report.blockers, exactPromotionReady: false }, null, 2)) +} else { + await writeFile(outputPath, serialized) + console.log(JSON.stringify({ status: 'freecad-parameter-mutation-report-generated', ...report.summary, blockers: report.blockers }, null, 2)) +} diff --git a/scripts/generate-freecad-source-inventory.mjs b/scripts/generate-freecad-source-inventory.mjs new file mode 100644 index 0000000..99d7725 --- /dev/null +++ b/scripts/generate-freecad-source-inventory.mjs @@ -0,0 +1,74 @@ +import { readFile, readdir, writeFile, access } from 'node:fs/promises' +import { join, resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const sourceRoot = resolve(process.env.FREECAD_SOURCE_DIR || join(root, '.cache/freecad/FreeCAD')) +const outputPath = resolve(process.env.FREECAD_INVENTORY_FILE || join(root, 'config/freecad-source-inventory.json')) +const baselineCommit = '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' +const cmakeAliases = { + AddonManager: 'ADDONMGR', + JtReader: 'JTREADER', + MeshPart: 'MESH_PART', + PartDesign: 'PART_DESIGN', + TechDraw: 'TECHDRAW', + ReverseEngineering: 'REVERSEENGINEERING', + OpenSCAD: 'OPENSCAD', +} +const read = async (path) => readFile(path, 'utf8') +const exists = async (path) => access(path).then(() => true).catch(() => false) +const moduleRoot = join(sourceRoot, 'src/Mod') +if (!(await exists(moduleRoot))) throw new Error(`FreeCAD source directory is unavailable: ${moduleRoot}`) + +const buildOptions = await read(join(sourceRoot, 'cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake')) +const optionDefaults = new Map([...buildOptions.matchAll(/option\(BUILD_([A-Z0-9_]+)[^\n]*?\s(ON|OFF)\)/g)].map((match) => [match[1], match[2] === 'ON'])) +const moduleNames = (await readdir(moduleRoot, { withFileTypes: true })).filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort() +const commandPattern = /(?:addCommand|addCommand\s*\(|registerCommand)\s*\(\s*["']([^"']+)["']/g +const commandIds = (text) => [...text.matchAll(commandPattern)].map((match) => match[1]).filter((value, index, values) => values.indexOf(value) === index).sort() + +const modules = [] +for (const name of moduleNames) { + const modulePath = join(moduleRoot, name) + const option = cmakeAliases[name] || name.toUpperCase() + const cmakePath = join(modulePath, 'CMakeLists.txt') + const appPath = join(modulePath, 'App') + const guiPath = join(modulePath, 'Gui') + const cmake = await exists(cmakePath) ? await read(cmakePath) : '' + const pythonFiles = [] + const collectPython = async (directory) => { + if (!(await exists(directory))) return + for (const entry of await readdir(directory, { withFileTypes: true })) { + const path = join(directory, entry.name) + if (entry.isDirectory()) await collectPython(path) + else if (entry.name.endsWith('.py')) pythonFiles.push(path) + } + } + await collectPython(modulePath) + const commandNames = [] + for (const path of pythonFiles) { + const text = await read(path) + commandNames.push(...commandIds(text)) + } + modules.push({ + name, + sourcePath: `src/Mod/${name}`, + cmakeOption: `BUILD_${option}`, + cmakeDefault: optionDefaults.has(option) ? optionDefaults.get(option) : null, + hasCMake: Boolean(cmake), + hasApp: await exists(appPath), + hasGui: await exists(guiPath), + pythonFileCount: pythonFiles.length, + commandIds: [...new Set(commandNames)].sort(), + runtimeStatus: 'requires-freecad-reference-probe', + }) +} + +const inventory = { + schemaVersion: 1, + baseline: { freecadVersion: '1.1.1', commit: baselineCommit, sourcePath: '.cache/freecad/FreeCAD' }, + generatedBy: 'scripts/generate-freecad-source-inventory.mjs', + moduleCount: modules.length, + modules, +} +if (modules.length !== 34) throw new Error(`Expected 34 FreeCAD modules, found ${modules.length}.`) +await writeFile(outputPath, `${JSON.stringify(inventory, null, 2)}\n`, 'utf8') +console.log(JSON.stringify({ status: 'source-inventory-generated', output: outputPath, moduleCount: modules.length, commandCount: modules.reduce((total, module) => total + module.commandIds.length, 0) }, null, 2)) diff --git a/scripts/generate-freecad-type-property-inventory.mjs b/scripts/generate-freecad-type-property-inventory.mjs new file mode 100644 index 0000000..8035d21 --- /dev/null +++ b/scripts/generate-freecad-type-property-inventory.mjs @@ -0,0 +1,90 @@ +import { access, readdir, readFile, writeFile } from 'node:fs/promises' +import { join, relative, resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const sourceRoot = process.env.FREECAD_SOURCE_DIR + ? resolve(process.env.FREECAD_SOURCE_DIR) + : join(root, '.cache/freecad/FreeCAD') +const outputPath = resolve(process.env.FREECAD_TYPE_PROPERTY_INVENTORY_FILE || join(root, 'config/freecad-type-property-inventory.json')) +const baselineCommit = '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' +const sourceMod = join(sourceRoot, 'src/Mod') +const exists = async (path) => access(path).then(() => true).catch(() => false) +if (!(await exists(sourceMod))) throw new Error(`FreeCAD source directory is unavailable: ${sourceMod}`) + +const sourceFiles = async (directory) => { + const files = [] + for (const entry of await readdir(directory, { withFileTypes: true })) { + const path = join(directory, entry.name) + if (entry.isDirectory()) files.push(...await sourceFiles(path)) + else if (/\.(?:cpp|h|hpp|hxx|py)$/.test(entry.name)) files.push(path) + } + return files +} + +const classPattern = /\b(?:class|struct)\s+(?:[A-Z_][A-Za-z0-9_]*::)?([A-Za-z_][A-Za-z0-9_]*)\s*(?::|\{)/g +const propertyRegistrationPattern = /\bADD_PROPERTY(?:_TYPE)?\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)/g +const propertyMemberPattern = /\bApp::(Property[A-Za-z0-9_]+)\s+([A-Za-z_][A-Za-z0-9_]*)\s*(?:;|,)/g +const pythonPropertyPattern = /\.addProperty\(\s*([^,\n]+),\s*["']([^"']+)["']/g +const typeIdPattern = /\b([A-Za-z_][A-Za-z0-9_]*)::(?:getClassTypeId|getTypeId)\s*\(/g +const unique = (values) => [...new Set(values)].sort() + +const moduleEntries = (await readdir(sourceMod, { withFileTypes: true })).filter((entry) => entry.isDirectory()).sort((a, b) => a.name.localeCompare(b.name)) +const modules = [] +for (const entry of moduleEntries) { + const modulePath = join(sourceMod, entry.name) + const files = await sourceFiles(modulePath) + const objects = [] + let propertyRegistrationCount = 0 + let propertyMemberCount = 0 + let pythonPropertyCount = 0 + for (const file of files) { + const text = await readFile(file, 'utf8') + const classes = unique([...text.matchAll(classPattern)].map((match) => match[1])) + const registrations = unique([...text.matchAll(propertyRegistrationPattern)].map((match) => match[1])) + const members = unique([...text.matchAll(propertyMemberPattern)].map((match) => ({ type: match[1], name: match[2] }))) + const pythonProperties = [...text.matchAll(pythonPropertyPattern)].map((match) => ({ typeExpression: match[1].trim(), name: match[2] })) + const typeIds = unique([...text.matchAll(typeIdPattern)].map((match) => match[1])) + propertyRegistrationCount += registrations.length + propertyMemberCount += members.length + pythonPropertyCount += pythonProperties.length + if (classes.length || registrations.length || members.length || pythonProperties.length || typeIds.length) { + objects.push({ + sourceFile: relative(sourceRoot, file), + classes, + typeIdSymbols: typeIds, + propertyRegistrations: registrations, + propertyMembers: members, + pythonProperties, + }) + } + } + modules.push({ + name: entry.name, + sourcePath: `src/Mod/${entry.name}`, + sourceFileCount: files.length, + objectSourceCount: objects.length, + propertyRegistrationCount, + propertyMemberCount, + pythonPropertyCount, + objects, + runtimeStatus: 'requires-freecad-reference-probe', + }) +} + +const inventory = { + schemaVersion: 1, + baseline: { freecadVersion: '1.1.1', commit: baselineCommit, sourcePath: '.cache/freecad/FreeCAD' }, + generatedBy: 'scripts/generate-freecad-type-property-inventory.mjs', + moduleCount: modules.length, + totals: { + sourceFileCount: modules.reduce((sum, module) => sum + module.sourceFileCount, 0), + objectSourceCount: modules.reduce((sum, module) => sum + module.objectSourceCount, 0), + propertyRegistrationCount: modules.reduce((sum, module) => sum + module.propertyRegistrationCount, 0), + propertyMemberCount: modules.reduce((sum, module) => sum + module.propertyMemberCount, 0), + pythonPropertyCount: modules.reduce((sum, module) => sum + module.pythonPropertyCount, 0), + }, + modules, +} +if (modules.length !== 34) throw new Error(`Expected 34 FreeCAD modules, found ${modules.length}.`) +await writeFile(outputPath, `${JSON.stringify(inventory, null, 2)}\n`, 'utf8') +console.log(JSON.stringify({ status: 'type-property-inventory-generated', output: outputPath, moduleCount: modules.length, totals: inventory.totals }, null, 2)) diff --git a/scripts/generate-release-artifacts.mjs b/scripts/generate-release-artifacts.mjs new file mode 100644 index 0000000..553dcdf --- /dev/null +++ b/scripts/generate-release-artifacts.mjs @@ -0,0 +1,71 @@ +import { createHash } from 'node:crypto' +import { lstat, readFile, readdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { signManifest, verifyManifestSignature } from './release-signature.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const distRoot = resolve(root, 'dist') +const sbomPath = resolve(root, 'config/sbom.cdx.json') +const outputPath = resolve(root, 'config/release-artifacts.json') +const publicKeyPath = resolve(root, 'config/release-signing-public.pem') +const checkOnly = process.argv.includes('--check') + +const hashFile = async (path) => { + const hash = createHash('sha256') + hash.update(await readFile(path)) + return hash.digest('hex') +} +const collectFiles = async (directory, prefix = '') => { + const entries = [] + for (const entry of (await readdir(directory, { withFileTypes: true })).sort((left, right) => left.name.localeCompare(right.name))) { + const relative = prefix ? `${prefix}/${entry.name}` : entry.name + const path = resolve(directory, entry.name) + const stats = await lstat(path) + if (stats.isSymbolicLink()) throw new Error(`Release artifact contains a symlink: dist/${relative}`) + if (entry.isDirectory()) entries.push(...await collectFiles(path, relative)) + else if (entry.isFile()) entries.push({ path: relative, bytes: stats.size, sha256: await hashFile(path) }) + else throw new Error(`Release artifact is not a regular file: dist/${relative}`) + } + return entries +} + +const files = await collectFiles(distRoot) +if (!files.length) throw new Error('Release artifact directory dist is empty; run `npm run build` first.') +const sbomSha256 = await hashFile(sbomPath) +const packageManifest = JSON.parse(await readFile(resolve(root, 'package.json'), 'utf8')) +const unsigned = { + schemaVersion: 1, + package: { name: packageManifest.name, version: packageManifest.version }, + build: { output: 'dist', files }, + sbom: { path: 'config/sbom.cdx.json', sha256: sbomSha256 }, +} +const signingKey = process.env.RELEASE_SIGNING_PRIVATE_KEY +const signingKeyId = process.env.RELEASE_SIGNING_KEY_ID +const signable = JSON.stringify(unsigned) +let document +if (checkOnly) { + try { document = JSON.parse(await readFile(outputPath, 'utf8')) } catch { throw new Error(`Release artifact manifest is missing: ${outputPath}`) } + const actualUnsigned = { schemaVersion: document.schemaVersion, package: document.package, build: document.build, sbom: document.sbom } + if (JSON.stringify(actualUnsigned) !== signable) throw new Error('Release artifact manifest is stale; regenerate with the controlled signing key.') + if (document.signature?.status !== 'signed' || document.signature.algorithm !== 'Ed25519') throw new Error('Release artifact manifest is unsigned; REL-03 requires a signed artifact.') + let publicKey + try { publicKey = await readFile(publicKeyPath, 'utf8') } catch { throw new Error(`Release signing public key is missing: ${publicKeyPath}`) } + if (!verifyManifestSignature(signable, document.signature, publicKey)) throw new Error('Release artifact signature verification failed.') + console.log(JSON.stringify({ status: 'release-artifacts-pass', files: files.length, totalBytes: files.reduce((sum, file) => sum + file.bytes, 0), sbomSha256, signature: document.signature.status, keyId: document.signature.keyId }, null, 2)) +} else { + if (signingKey || signingKeyId) document = { ...unsigned, signature: signManifest(signable, signingKey, signingKeyId) } + else { + try { + const existing = JSON.parse(await readFile(outputPath, 'utf8')) + const existingUnsigned = { schemaVersion: existing.schemaVersion, package: existing.package, build: existing.build, sbom: existing.sbom } + const publicKey = await readFile(publicKeyPath, 'utf8') + if (JSON.stringify(existingUnsigned) !== signable || !verifyManifestSignature(signable, existing.signature, publicKey)) throw new Error('existing signed manifest does not match current build') + document = existing + } catch (error) { + throw new Error(`Release generation requires RELEASE_SIGNING_PRIVATE_KEY/RELEASE_SIGNING_KEY_ID for a new or changed build: ${error instanceof Error ? error.message : String(error)}`) + } + } + const serialized = `${JSON.stringify(document, null, 2)}\n` + await writeFile(outputPath, serialized) + console.log(JSON.stringify({ status: 'release-artifacts-generated', output: outputPath, files: files.length, totalBytes: files.reduce((sum, file) => sum + file.bytes, 0), sbomSha256, signature: document.signature.status }, null, 2)) +} diff --git a/scripts/generate-sbom.mjs b/scripts/generate-sbom.mjs new file mode 100644 index 0000000..5816b74 --- /dev/null +++ b/scripts/generate-sbom.mjs @@ -0,0 +1,149 @@ +import { createHash } from 'node:crypto' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const lockPath = resolve(root, 'package-lock.json') +const packagePath = resolve(root, 'package.json') +const outputPath = resolve(root, 'config/sbom.cdx.json') +const checkOnly = process.argv.includes('--check') + +const readJson = async (path) => JSON.parse(await readFile(path, 'utf8')) +const packageNameFromPath = (packagePathName) => { + const marker = 'node_modules/' + const index = packagePathName.lastIndexOf(marker) + const relative = packagePathName.slice(index + marker.length) + const parts = relative.split('/') + return parts[0].startsWith('@') ? parts.slice(0, 2).join('/') : parts[0] +} +const purlFor = (name, version) => `pkg:npm/${encodeURIComponent(name)}@${version}` +const manifestFor = async (packagePathName) => { + try { + return await readJson(resolve(root, packagePathName, 'package.json')) + } catch { + return undefined + } +} +const licenseEntries = (packageManifest) => { + const declared = packageManifest?.license ?? packageManifest?.licenses + const values = Array.isArray(declared) ? declared : declared ? [declared] : [] + return values.flatMap((value) => { + const text = typeof value === 'string' ? value : value?.type ?? value?.name + if (!text) return [] + return /^[A-Za-z0-9.+-]+$/.test(text) ? [{ license: { id: text } }] : [{ license: { name: text } }] + }) +} + +const lock = await readJson(lockPath) +const manifest = await readJson(packagePath) +if (lock.lockfileVersion !== 3) throw new Error(`SBOM requires npm lockfileVersion 3 (got ${lock.lockfileVersion}).`) +const lockPackages = lock.packages ?? {} +const rootRef = purlFor(manifest.name, manifest.version) +const packageEntries = Object.entries(lockPackages) + .filter(([path, value]) => path.startsWith('node_modules/') && value?.version) + .sort(([left], [right]) => left.localeCompare(right)) + +const components = [] +const packageRefsByPath = new Map() +const metadataByPath = new Map() +for (const [packagePathName, lockEntry] of packageEntries) { + const name = packageNameFromPath(packagePathName) + if (name !== lockEntry.name && lockEntry.name) throw new Error(`SBOM package path/name mismatch: ${packagePathName} -> ${lockEntry.name}`) + const ref = purlFor(name, lockEntry.version) + packageRefsByPath.set(packagePathName, ref) + const packageManifest = await manifestFor(packagePathName) + const installed = Boolean(packageManifest) + if (installed && packageManifest.version !== lockEntry.version) throw new Error(`SBOM installed version mismatch for ${name}: ${packageManifest.version} != ${lockEntry.version}`) + const component = { + type: 'library', + 'bom-ref': ref, + name, + version: lockEntry.version, + scope: lockEntry.optional ? 'optional' : lockEntry.dev ? 'development' : 'required', + purl: ref, + hashes: [{ alg: 'SHA-512', content: lockEntry.integrity.replace(/^sha512-/, '') }], + externalReferences: [{ type: 'distribution', url: lockEntry.resolved }], + } + const licenses = licenseEntries(packageManifest) + if (licenses.length) component.licenses = licenses + component.properties = [ + { name: 'bitbybit:installed', value: String(installed) }, + { name: 'bitbybit:license-status', value: licenses.length ? 'declared' : installed ? 'undisclosed' : 'not-installed-optional' }, + ] + components.push(component) + metadataByPath.set(packagePathName, { lockEntry, ref }) +} + +const resolveDependencyPath = (fromPath, dependencyName) => { + const candidates = [] + let current = fromPath + while (current) { + candidates.push(`${current}/node_modules/${dependencyName}`) + const parent = current.lastIndexOf('/node_modules/') + if (parent < 0) break + current = current.slice(0, parent) + } + candidates.push(`node_modules/${dependencyName}`) + return candidates.find((candidate) => packageRefsByPath.has(candidate)) +} +const dependencyRecords = [{ ref: rootRef, dependsOn: [] }] +for (const [packagePathName, { lockEntry, ref }] of metadataByPath) { + const dependencies = { ...(lockEntry.dependencies ?? {}), ...(lockEntry.optionalDependencies ?? {}) } + const dependsOn = Object.keys(dependencies).sort().flatMap((dependencyName) => { + const resolvedPath = resolveDependencyPath(packagePathName, dependencyName) + return resolvedPath ? [packageRefsByPath.get(resolvedPath)] : [] + }) + dependencyRecords.push({ ref, dependsOn: [...new Set(dependsOn)].sort() }) +} +const directDependencies = [...new Set([ + ...Object.keys(manifest.dependencies ?? {}), + ...Object.keys(manifest.devDependencies ?? {}), +])].sort() +for (const dependencyName of directDependencies) { + const directPath = `node_modules/${dependencyName}` + if (!packageRefsByPath.has(directPath)) throw new Error(`SBOM direct dependency is not locked: ${dependencyName}`) + dependencyRecords[0].dependsOn.push(packageRefsByPath.get(directPath)) +} +dependencyRecords[0].dependsOn = [...new Set(dependencyRecords[0].dependsOn)].sort() + +const lockHash = createHash('sha256').update(await readFile(lockPath)).digest('hex') +const rootComponent = { + type: 'application', + 'bom-ref': rootRef, + name: manifest.name, + version: manifest.version, + purl: rootRef, + properties: [{ name: 'bitbybit:license-status', value: manifest.license ? 'declared' : 'undisclosed' }], +} +const document = { + bomFormat: 'CycloneDX', + specVersion: '1.5', + version: 1, + metadata: { + tools: [{ vendor: 'BitBybit Web CAD', name: 'generate-sbom.mjs', version: '1' }], + component: rootComponent, + properties: [ + { name: 'bitbybit:source', value: 'package-lock.json' }, + { name: 'bitbybit:lockfile-sha256', value: lockHash }, + { name: 'bitbybit:package-manager', value: 'npm lockfileVersion 3' }, + ], + }, + components, + dependencies: dependencyRecords.sort((left, right) => left.ref.localeCompare(right.ref)), +} +const serialized = `${JSON.stringify(document, null, 2)}\n` +if (checkOnly) { + let existing + try { + existing = await readFile(outputPath, 'utf8') + } catch { + throw new Error(`SBOM artifact is missing: ${outputPath}`) + } + if (existing !== serialized) throw new Error('SBOM artifact is stale; run `npm run generate:sbom` and review the result.') + const undisclosed = components.filter((component) => component.properties?.some((property) => property.name === 'bitbybit:license-status' && property.value === 'undisclosed')) + if (undisclosed.length) throw new Error(`SBOM has ${undisclosed.length} installed packages without declared licenses.`) + console.log(JSON.stringify({ status: 'sbom-pass', components: components.length, optionalNotInstalled: components.filter((component) => component.properties?.some((property) => property.value === 'not-installed-optional')).length, lockfileSha256: lockHash }, null, 2)) +} else { + await writeFile(outputPath, serialized) + console.log(JSON.stringify({ status: 'sbom-generated', output: outputPath, components: components.length, lockfileSha256: lockHash }, null, 2)) +} diff --git a/scripts/release-signature.mjs b/scripts/release-signature.mjs new file mode 100644 index 0000000..7015010 --- /dev/null +++ b/scripts/release-signature.mjs @@ -0,0 +1,5 @@ +import { createHash, sign, verify } from 'node:crypto' + +export const payloadDigest = (payload) => createHash('sha256').update(payload).digest('hex') +export const signManifest = (payload, privateKeyPem, keyId) => { if (!privateKeyPem || !keyId?.trim()) throw new Error('An Ed25519 private key and key id are required.'); const signature = sign(null, Buffer.from(payload), privateKeyPem).toString('base64'); return { status: 'signed', algorithm: 'Ed25519', keyId: keyId.trim(), payloadSha256: payloadDigest(payload), signature } } +export const verifyManifestSignature = (payload, signature, publicKeyPem) => { if (!signature || signature.status !== 'signed' || signature.algorithm !== 'Ed25519' || !/^[0-9a-f]{64}$/.test(signature.payloadSha256 || '') || payloadDigest(payload) !== signature.payloadSha256) return false; try { return verify(null, Buffer.from(payload), publicKeyPem, Buffer.from(signature.signature, 'base64')) } catch { return false } } diff --git a/scripts/release-signature.test.mjs b/scripts/release-signature.test.mjs new file mode 100644 index 0000000..9b0da0f --- /dev/null +++ b/scripts/release-signature.test.mjs @@ -0,0 +1,6 @@ +import test from 'node:test' +import assert from 'node:assert/strict' +import { generateKeyPairSync } from 'node:crypto' +import { signManifest, verifyManifestSignature } from './release-signature.mjs' + +test('release signature signs and verifies an Ed25519 manifest payload', () => { const { privateKey, publicKey } = generateKeyPairSync('ed25519'); const privatePem = privateKey.export({ format: 'pem', type: 'pkcs8' }); const publicPem = publicKey.export({ format: 'pem', type: 'spki' }); const payload = '{"release":"fixture"}'; const signature = signManifest(payload, privatePem, 'fixture-key'); assert.equal(signature.status, 'signed'); assert.equal(signature.algorithm, 'Ed25519'); assert.equal(verifyManifestSignature(payload, signature, publicPem), true); assert.equal(verifyManifestSignature(`${payload}x`, signature, publicPem), false) }) diff --git a/scripts/release-signing-key.mjs b/scripts/release-signing-key.mjs new file mode 100644 index 0000000..cb94d33 --- /dev/null +++ b/scripts/release-signing-key.mjs @@ -0,0 +1,36 @@ +import { createHash, createPrivateKey, createPublicKey } from 'node:crypto' +import { readFile, stat } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +export const defaultKeyId = 'bitbybit-local-release-2026' +export const defaultPrivateKeyPath = resolve(root, '.secrets/release-signing-private.pem') +export const publicKeyPath = resolve(root, 'config/release-signing-public.pem') + +const normalizePem = (value) => value.replace(/\r\n/g, '\n').trim() + +export const loadControlledSigningKey = async () => { + const envKey = process.env.RELEASE_SIGNING_PRIVATE_KEY + const envKeyId = process.env.RELEASE_SIGNING_KEY_ID + if (envKey && !envKeyId?.trim()) throw new Error('RELEASE_SIGNING_KEY_ID is required when RELEASE_SIGNING_PRIVATE_KEY is provided.') + const configuredPath = process.env.RELEASE_SIGNING_PRIVATE_KEY_PATH + const keyPath = configuredPath ? resolve(root, configuredPath) : defaultPrivateKeyPath + let privateKeyPem = envKey + let source = 'environment' + if (!privateKeyPem) { + const stats = await stat(keyPath).catch(() => undefined) + if (!stats?.isFile()) throw new Error(`Controlled release signing key is missing: ${keyPath}`) + if ((stats.mode & 0o077) !== 0) throw new Error(`Controlled release signing key must be mode 600: ${keyPath}`) + privateKeyPem = await readFile(keyPath, 'utf8') + source = keyPath + } + const keyId = (envKeyId || defaultKeyId).trim() + if (!keyId) throw new Error('RELEASE_SIGNING_KEY_ID must be non-empty.') + let privateKey + try { privateKey = createPrivateKey(privateKeyPem) } catch (error) { throw new Error(`Controlled release signing key is invalid: ${error instanceof Error ? error.message : String(error)}`) } + if (privateKey.asymmetricKeyType !== 'ed25519') throw new Error(`Controlled release signing key must be Ed25519 (got ${privateKey.asymmetricKeyType || 'unknown'}).`) + const derivedPublicKeyPem = createPublicKey(privateKey).export({ type: 'spki', format: 'pem' }).toString() + const configuredPublicKeyPem = await readFile(publicKeyPath, 'utf8').catch(() => { throw new Error(`Release signing public key is missing: ${publicKeyPath}`) }) + if (normalizePem(derivedPublicKeyPem) !== normalizePem(configuredPublicKeyPem)) throw new Error(`Controlled private key does not match ${publicKeyPath}. Rotate both keys together.`) + return { privateKeyPem, keyId, source, publicKeyPem: configuredPublicKeyPem, publicKeySha256: createHash('sha256').update(normalizePem(configuredPublicKeyPem)).digest('hex') } +} diff --git a/scripts/run-browser-occt-harness.mjs b/scripts/run-browser-occt-harness.mjs new file mode 100644 index 0000000..1ceaa3d --- /dev/null +++ b/scripts/run-browser-occt-harness.mjs @@ -0,0 +1,99 @@ +import { createServer } from 'node:http' +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import { createReadStream } from 'node:fs' +import { existsSync } from 'node:fs' +import { resolve, extname, join, normalize } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportDir = resolve(root, '.cache/freecad/browser-occt') +await mkdir(reportDir, { recursive: true }) +const contentTypes = { '.html': 'text/html', '.js': 'text/javascript', '.wasm': 'application/wasm', '.json': 'application/json' } +const reportPromises = new Map() +const reportResolvers = new Map() +const waitForReport = (browserId) => { + if (reportPromises.has(browserId)) return reportPromises.get(browserId) + const promise = new Promise((resolveReport, reject) => { reportResolvers.set(browserId, { resolve: resolveReport, reject }) }) + reportPromises.set(browserId, promise) + return promise +} +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url?.startsWith('/__occt-report')) { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { + try { + const report = JSON.parse(body) + const browserId = report.browserId || new URL(request.url, 'http://127.0.0.1').searchParams.get('browser') || 'unknown' + await writeFile(resolve(reportDir, `${browserId}.json`), `${JSON.stringify(report, null, 2)}\n`) + reportResolvers.get(browserId)?.resolve(report) + response.writeHead(204) + response.end() + } catch (error) { + response.writeHead(400) + response.end(String(error)) + } + }) + return + } + const pathname = decodeURIComponent((request.url || '/').split('?')[0]) + const relative = pathname === '/occt-browser-harness.html' ? 'public/occt-browser-harness.html' : pathname.startsWith('/native/') ? `public${pathname}` : null + if (!relative) { response.writeHead(404); response.end('not found'); return } + const file = normalize(join(root, relative)) + if (!file.startsWith(resolve(root, 'public')) || !existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', contentTypes[extname(file)] || 'application/octet-stream') + createReadStream(file).pipe(response) +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port + +const runBrowser = (browserId, executable, args) => new Promise((resolveRun) => { + if (!executable || !existsSync(executable)) { resolveRun({ browserId, status: 'unavailable', executable }); return } + const reportPromise = waitForReport(browserId) + const child = spawn(executable, [...args, `http://127.0.0.1:${port}/occt-browser-harness.html?browser=${browserId}`], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) + let stdout = '' + child.stdout.on('data', (chunk) => { stdout += String(chunk) }) + let stderr = '' + child.stderr.on('data', (chunk) => { stderr += String(chunk) }) + let settled = false + const finish = (result) => { + if (settled) return + settled = true + clearTimeout(timer) + resolveRun({ ...result, stdout: stdout.slice(-4000), stderr: stderr.slice(-2000) }) + } + const timer = setTimeout(() => { child.kill('SIGTERM'); finish({ browserId, status: 'timeout' }) }, 240000) + reportPromise.then((report) => { + if (settled) return + child.kill('SIGTERM') + finish({ browserId, status: report.status || 'pass', report, exitCode: child.exitCode, signal: null }) + }).catch(() => {}) + child.on('close', async (code, signal) => { + if (!settled) { + try { + const report = await Promise.race([reportPromise, new Promise((_, reject) => setTimeout(() => reject(new Error('report timeout')), 5000))]) + finish({ browserId, status: report.status || 'pass', report, exitCode: code, signal }) + } catch { + finish({ browserId, status: 'failed', exitCode: code, signal }) + } + } + }) +}) + +const results = [] +const chromeProfile = await createChromeProfile('occt') +try { + results.push(await runBrowser('chrome', process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome', ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--enable-logging=stderr', '--v=1', `--user-data-dir=${chromeProfile}`])) +} finally { + await removeChromeProfile(chromeProfile) +} +await new Promise((resolveServer) => server.close(resolveServer)) +const verification = { schemaVersion: 1, generatedAt: new Date().toISOString(), headers: { coop: 'same-origin', coep: 'require-corp' }, browsers: results, status: results.every((result) => result.status === 'pass') ? 'pass' : 'partial' } +await writeFile(resolve(root, 'config/occt-browser-verification.json'), `${JSON.stringify(verification, null, 2)}\n`) +console.log(JSON.stringify(verification, null, 2)) +if (results.some((result) => result.status !== 'pass')) process.exit(1) diff --git a/scripts/run-camotics-native-verification.mjs b/scripts/run-camotics-native-verification.mjs new file mode 100644 index 0000000..6c4e70b --- /dev/null +++ b/scripts/run-camotics-native-verification.mjs @@ -0,0 +1,142 @@ +import { createHash } from 'node:crypto' +import { execFileSync, spawnSync } from 'node:child_process' +import { mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join, resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const sha256 = (value) => createHash('sha256').update(value).digest('hex') +const run = (command, args, options = {}) => { + const result = spawnSync(command, args, { encoding: 'utf8', ...options }) + if (result.error || result.status !== 0) throw new Error(`${command} failed: ${result.error?.message || result.stderr || result.stdout}`) + return result +} +const artifactInfo = async (path) => { + const bytes = await readFile(resolve(root, path)) + const metadata = await stat(resolve(root, path)) + return { bytes: bytes.byteLength, sha256: sha256(bytes), mode: metadata.mode.toString(8) } +} + +const camoticsRevision = execFileSync('git', ['-C', resolve(root, 'CAMotics'), 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +const cbangRevision = execFileSync('git', ['-C', resolve(root, '.cache/camotics-native/cbang'), 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() +const camoticsVersionProbe = run(resolve(root, 'CAMotics/camotics'), ['--version']) +const tplVersionProbe = run(resolve(root, 'CAMotics/tplang'), ['--version']) +const camoticsVersion = `${camoticsVersionProbe.stdout}${camoticsVersionProbe.stderr}`.trim() +const tplVersion = `${tplVersionProbe.stdout}${tplVersionProbe.stderr}`.trim() +if (camoticsVersion !== tplVersion) throw new Error(`CAMotics/TPL version mismatch: ${camoticsVersion}/${tplVersion}`) + +const tplTests = run(resolve(root, 'CAMotics/tests/testHarness'), ['--no-color'], { cwd: resolve(root, 'CAMotics/tests/tplTests') }) +const passed = Number(tplTests.stdout.match(/^Passed\s+(\d+)/m)?.[1] ?? -1) +const failed = Number(tplTests.stdout.match(/^Failed\s+(\d+)/m)?.[1] ?? -1) +if (passed < 0 || failed < 0) throw new Error('Could not parse CAMotics TPL test output.') + +const tplExample = run(resolve(root, 'CAMotics/tplang'), [resolve(root, 'CAMotics/examples/box/box.tpl')]) +const tplExampleBytes = Buffer.from(tplExample.stdout) +const guiDir = await mkdtemp(join(tmpdir(), 'camotics-native-gui-')) +let guiSmoke +try { + const gui = spawnSync('xvfb-run', ['-a', '-s', '-screen 0 1280x800x24 +extension GLX', 'bash', '-lc', ` + set -u + smoke_dir="$CAMOTICS_SMOKE_DIR" + export XDG_CONFIG_HOME="$smoke_dir/config" XDG_CACHE_HOME="$smoke_dir/cache" XDG_DATA_HOME="$smoke_dir/data" LIBGL_ALWAYS_SOFTWARE=1 + mkdir -p "$XDG_CONFIG_HOME" "$XDG_CACHE_HOME" "$XDG_DATA_HOME" + "$CAMOTICS_BINARY" >"$smoke_dir/stdout" 2>"$smoke_dir/stderr" & + pid=$! + found=0 + for _ in $(seq 1 100); do + if xdotool search --onlyvisible --name "^CAMotics$" >/dev/null 2>&1; then found=1; break; fi + sleep 0.1 + done + if [ "$found" -eq 1 ]; then + wid=$(xdotool search --onlyvisible --name "^CAMotics$" | head -n1) + xwininfo -id "$wid" >"$smoke_dir/xwininfo" + fi + alive=0 + kill -0 "$pid" 2>/dev/null && alive=1 + kill -TERM "$pid" 2>/dev/null || true + wait "$pid" 2>/dev/null || true + printf '%s\n' "$found" >"$smoke_dir/found" + printf '%s\n' "$alive" >"$smoke_dir/alive" + `], { + encoding: 'utf8', + env: { ...process.env, CAMOTICS_SMOKE_DIR: guiDir, CAMOTICS_BINARY: resolve(root, 'CAMotics/camotics') }, + timeout: 30_000, + }) + if (gui.error || gui.status !== 0) throw new Error(`Xvfb GUI smoke failed: ${gui.error?.message || gui.stderr || gui.stdout}`) + const found = (await readFile(join(guiDir, 'found'), 'utf8')).trim() === '1' + const alive = (await readFile(join(guiDir, 'alive'), 'utf8')).trim() === '1' + const startupStdout = await readFile(join(guiDir, 'stdout'), 'utf8') + const startupStderr = await readFile(join(guiDir, 'stderr'), 'utf8') + const xwininfo = found ? await readFile(join(guiDir, 'xwininfo'), 'utf8') : '' + const numberFrom = (label) => Number(xwininfo.match(new RegExp(`^ ${label}:\\s+(\\d+)`, 'm'))?.[1] ?? -1) + const mapState = xwininfo.match(/^ Map State:\s+(.+)$/m)?.[1]?.trim() ?? '' + guiSmoke = { + status: found && alive && mapState === 'IsViewable' && !/Fatal error|FATAL/i.test(startupStderr) ? 'pass' : 'fail', + processAliveBeforeTerminate: alive, + browserRuntime: false, + window: { title: xwininfo.match(/^xwininfo: Window id: \S+ "([^"]+)"$/m)?.[1] ?? '', width: numberFrom('Width'), height: numberFrom('Height'), depth: numberFrom('Depth'), mapState }, + startupBannerSha256: sha256(Buffer.from(startupStdout)), + startupStderrSha256: sha256(Buffer.from(startupStderr)), + } +} finally { + await rm(guiDir, { recursive: true, force: true }) +} +if (guiSmoke.status !== 'pass') throw new Error(`CAMotics GUI smoke did not pass: ${JSON.stringify(guiSmoke)}`) + +const artifacts = {} +for (const path of ['CAMotics/camotics', 'CAMotics/tplang']) artifacts[path] = await artifactInfo(path) +const cliArtifacts = {} +for (const path of ['CAMotics/camsim', 'CAMotics/gcodetool', 'CAMotics/planner', 'CAMotics/build/camotics.so']) cliArtifacts[path] = await artifactInfo(path) +const cliSmoke = {} +for (const path of ['CAMotics/camsim', 'CAMotics/gcodetool', 'CAMotics/planner']) { + const probe = run(resolve(root, path), ['--help']) + cliSmoke[path] = { exitCode: probe.status, containsUsage: `${probe.stdout}${probe.stderr}`.includes('Usage:') } +} +const config = { + schemaVersion: 2, + status: 'pass', + source: { + path: 'CAMotics', + repository: 'https://github.com/CauldronDevelopmentLLC/CAMotics.git', + revision: camoticsRevision, + version: camoticsVersion, + }, + cbang: { + path: '.cache/camotics-native/cbang', + repository: 'https://github.com/CauldronDevelopmentLLC/cbang.git', + revision: cbangRevision, + version: '1.7.2', + v8PointerCompression: false, + }, + build: { + mode: 'release-native-qt5-tpl-cli', + compiler: execFileSync('g++', ['--version'], { encoding: 'utf8' }).split('\n')[0], + sconsVersion: execFileSync('scons', ['--version'], { encoding: 'utf8' }).split('\n')[0], + nodeV8PackageVersion: execFileSync('dpkg-query', ['-W', '-f=${Version}', 'libnode-dev'], { encoding: 'utf8' }).trim(), + qtVersion: execFileSync('qmake', ['-query', 'QT_VERSION'], { encoding: 'utf8' }).trim(), + options: ['strict=0', 'cxxstd=c++17', 'v8_compress_pointers=0'], + withGui: true, + withTpl: true, + browserExecutable: false, + }, + artifacts, + cliArtifacts, + cliSmoke, + tplTests: { command: 'cd CAMotics/tests/tplTests && ../testHarness --no-color', passed, failed, outputSha256: sha256(Buffer.from(tplTests.stdout)) }, + tplExample: { input: 'CAMotics/examples/box/box.tpl', bytes: tplExampleBytes.byteLength, lines: tplExample.stdout.trimEnd().split('\n').length, sha256: sha256(tplExampleBytes) }, + guiSmoke, + pipelineBoundary: { + workspaceNativeGuiAvailable: true, + workspaceNativeTplAvailable: true, + workspaceNativeCliAvailable: true, + browserNativeGuiAvailable: false, + browserNativeTplAvailable: false, + nativeRole: 'host-native-qt5-tpl-cli-sidecar', + generationAuthority: 'camotics-source-stage', + canonicalGcodeParser: 'linuxcnc-wasm', + camoticsParsesCanonicalPipelineGcode: false, + order: ['cad', 'opencamlib-wasm', 'camotics-source-stage', 'gcode', 'linuxcnc-wasm-parse-execute'], + }, +} +await writeFile(resolve(root, 'config/camotics-native-artifact.json'), `${JSON.stringify(config, null, 2)}\n`) +console.log(JSON.stringify(config, null, 2)) diff --git a/scripts/run-chrome-addon.mjs b/scripts/run-chrome-addon.mjs new file mode 100644 index 0000000..c1184fc --- /dev/null +++ b/scripts/run-chrome-addon.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-addon-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Addon harness server did not expose a port.'); const profile = await createChromeProfile('addon'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/public/chrome-addon-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitAddonReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Addon harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-app-e2e.mjs b/scripts/run-chrome-app-e2e.mjs new file mode 100644 index 0000000..25db8aa --- /dev/null +++ b/scripts/run-chrome-app-e2e.mjs @@ -0,0 +1,531 @@ +import { createHash } from 'node:crypto' +import { createReadStream, existsSync } from 'node:fs' +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import { createServer } from 'node:http' +import { extname, normalize, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const dist = resolve(root, 'dist') +const evidenceDir = resolve(root, 'fixtures/chrome-app-e2e') +const reportPath = resolve(root, 'config/chrome-app-e2e-verification.json') +const chromeExecutable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +const contentTypes = { + '.css': 'text/css; charset=utf-8', + '.html': 'text/html; charset=utf-8', + '.js': 'text/javascript; charset=utf-8', + '.json': 'application/json; charset=utf-8', + '.wasm': 'application/wasm', +} + +if (!existsSync(resolve(dist, 'index.html'))) throw new Error('Chrome app E2E requires a production build in dist/. Run npm run build first.') +if (!existsSync(chromeExecutable)) throw new Error(`Chrome executable is unavailable: ${chromeExecutable}`) +await mkdir(evidenceDir, { recursive: true }) + +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + const requestPath = decodeURIComponent((request.url || '/').split('?')[0]) + const requestedFile = requestPath === '/' ? resolve(dist, 'index.html') : normalize(resolve(dist, `.${requestPath}`)) + const file = requestedFile.startsWith(dist) && existsSync(requestedFile) ? requestedFile : resolve(dist, 'index.html') + response.setHeader('Content-Type', contentTypes[extname(file)] || 'application/octet-stream') + createReadStream(file).on('error', (error) => { + response.writeHead(500) + response.end(String(error)) + }).pipe(response) +}) + +await new Promise((resolveServer, rejectServer) => { + server.once('error', rejectServer) + server.listen(0, '127.0.0.1', resolveServer) +}) +const port = server.address().port +const baseUrl = `http://127.0.0.1:${port}` +const chromeProfile = await createChromeProfile('app-e2e') + +const chrome = spawn(chromeExecutable, [ + '--headless=new', + '--no-sandbox', + '--disable-dev-shm-usage', + '--no-first-run', + '--no-default-browser-check', + '--enable-webgl', + '--enable-unsafe-swiftshader', + '--use-angle=swiftshader', + '--remote-debugging-port=0', + `--user-data-dir=${chromeProfile}`, + 'about:blank', +], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) + +let chromeStderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${chromeStderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { + chromeStderr += String(chunk) + const match = chromeStderr.match(/DevTools listening on (ws:\/\/[^\s]+)/) + if (!match) return + clearTimeout(timer) + resolveDebugger(match[1]) + }) + chrome.once('exit', (code, signal) => { + clearTimeout(timer) + rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}. ${chromeStderr.slice(-2000)}`)) + }) +}) + +class CdpClient { + constructor(url) { + this.socket = new WebSocket(url) + this.sequence = 0 + this.pending = new Map() + this.listeners = new Set() + } + + async open() { + await new Promise((resolveOpen, rejectOpen) => { + this.socket.addEventListener('open', resolveOpen, { once: true }) + this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) + }) + this.socket.addEventListener('message', (event) => { + const message = JSON.parse(String(event.data)) + if (message.id) { + const pending = this.pending.get(message.id) + if (!pending) return + this.pending.delete(message.id) + clearTimeout(pending.timer) + if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)) + else pending.resolve(message.result) + return + } + for (const listener of this.listeners) listener(message) + }) + } + + send(method, params = {}, sessionId) { + const id = ++this.sequence + return new Promise((resolveMessage, rejectMessage) => { + const timer = setTimeout(() => { + this.pending.delete(id) + const detail = typeof params.expression === 'string' ? ` expression=${params.expression.slice(0, 180)}` : '' + rejectMessage(new Error(`${method}: Chrome DevTools request timed out.${detail}`)) + }, 20_000) + this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method, timer }) + this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) + }) + } + + close() { + this.socket.close() + } +} + +const client = new CdpClient(debuggerUrl) +let status = 'failed' +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([ + client.send('Page.enable', {}, sessionId), + client.send('Runtime.enable', {}, sessionId), + client.send('Log.enable', {}, sessionId), + ]) + + const pageErrors = [] + client.listeners.add((message) => { + if (message.sessionId !== sessionId) return + if (message.method === 'Runtime.exceptionThrown') pageErrors.push(message.params?.exceptionDetails?.text || 'Uncaught page exception') + if (message.method === 'Runtime.consoleAPICalled' && message.params?.type === 'error') pageErrors.push(message.params.args?.map((entry) => entry.value || entry.description || '').join(' ') || 'console.error') + if (message.method === 'Log.entryAdded' && message.params?.entry?.level === 'error') pageErrors.push(message.params.entry.text || 'Chrome log error') + }) + + const evaluate = async (expression) => { + const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId) + if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.') + return result.result?.value + } + const waitFor = async (expression, label, timeoutMs = 30_000) => { + const deadline = Date.now() + timeoutMs + while (Date.now() < deadline) { + if (await evaluate(expression)) return + await new Promise((resolveWait) => setTimeout(resolveWait, 100)) + } + const snapshot = await evaluate('document.body.innerText.slice(-1200)') + throw new Error(`Chrome E2E timed out waiting for ${label}. Body tail: ${snapshot}`) + } + const setViewport = (width, height, deviceScaleFactor = 1) => client.send('Emulation.setDeviceMetricsOverride', { width, height, deviceScaleFactor, mobile: width <= 480 }, sessionId) + const navigate = async (path) => { + await client.send('Page.navigate', { url: `${baseUrl}${path}` }, sessionId) + await waitFor('document.readyState === "complete" && Boolean(document.querySelector(".app-shell"))', `${path} application shell`) + } + const clickButton = async (label) => { + const clicked = await evaluate(`(() => { const label = ${JSON.stringify(label)}; const button = [...document.querySelectorAll('button')].find((candidate) => !candidate.disabled && [candidate.getAttribute('aria-label'), candidate.getAttribute('title'), candidate.textContent?.trim()].some((value) => value?.includes(label))); if (!button) return false; button.click(); return true })()`) + if (!clicked) throw new Error(`Chrome E2E could not find enabled button containing ${JSON.stringify(label)}.`) + } + const screenshot = async (name) => { + const capture = await client.send('Page.captureScreenshot', { format: 'png', fromSurface: true, captureBeyondViewport: false }, sessionId) + const bytes = Buffer.from(capture.data, 'base64') + if (bytes.byteLength < 20_000) throw new Error(`${name} screenshot is unexpectedly small: ${bytes.byteLength} bytes.`) + const relativePath = `fixtures/chrome-app-e2e/${name}.png` + await writeFile(resolve(root, relativePath), bytes) + return { path: relativePath, byteLength: bytes.byteLength, sha256: createHash('sha256').update(bytes).digest('hex') } + } + + await setViewport(1440, 1000) + await navigate('/start') + await waitFor('document.body.innerText.includes("Start a new design.")', 'start page heading') + const offline = await evaluate(`({ path: location.pathname, shell: document.querySelector('.app-shell') !== null, heading: document.body.innerText.includes('Start a new design.'), mode: 'online-shell' })`) + if (offline.path !== '/start' || offline.shell !== true || offline.heading !== true) throw new Error(`Chrome shell route gate failed: ${JSON.stringify(offline)}`) + await clickButton('New document') + await waitFor('Boolean(document.querySelector(".workspace-page"))', 'workspace page') + await waitFor('Boolean(document.querySelector(".three-viewport-host canvas"))', 'Three.js viewport canvas') + await waitFor('document.querySelector(".three-viewport-host canvas")?.dataset.geometrySource === "bitbybit-occt"', 'Bitbybit geometry preview', 90_000) + const kernelPreviewSource = await evaluate(`document.querySelector('.three-viewport-host canvas')?.dataset.geometrySource || ''`) + + const selectedPartForBoxSelection = await evaluate(`(() => { const select = document.querySelector('select[aria-label="Workbench"]'); if (!select) return false; select.value = 'Part'; select.dispatchEvent(new Event('change', { bubbles: true })); return true })()`) + if (!selectedPartForBoxSelection) throw new Error('Workbench selector could not switch to Part for viewport box selection.') + await waitFor('document.querySelector("select[aria-label=Workbench]")?.value === "Part"', 'Part workbench change') + await clickButton('Create primitives') + await waitFor('Boolean(document.querySelector(".task-body select.field-input"))', 'Box primitive task') + await clickButton('OK') + await waitFor('document.querySelector(".report-line")?.textContent?.includes("Recompute completed") === true && Number(document.querySelector(".three-viewport-host canvas")?.dataset.objectCount || 0) >= 1', 'Box primitive recompute', 90_000) + await clickButton('Create primitives') + await waitFor('Boolean(document.querySelector(".task-body select.field-input"))', 'Cylinder primitive task') + const selectedCylinder = await evaluate(`(() => { const select = document.querySelector('.task-body select.field-input'); if (!select) return false; select.value = 'Cylinder'; select.dispatchEvent(new Event('change', { bubbles: true })); return true })()`) + if (!selectedCylinder) throw new Error('Cylinder primitive type could not be selected.') + await clickButton('OK') + await waitFor('document.querySelector(".report-line")?.textContent?.includes("Recompute completed") === true && Number(document.querySelector(".three-viewport-host canvas")?.dataset.objectCount || 0) >= 2', 'multi-object viewport scene', 90_000) + const boxGesture = await evaluate(`(() => { const bounds = document.querySelector('.three-viewport-host canvas')?.getBoundingClientRect(); return bounds ? { startX: bounds.right - 20, startY: bounds.top + 20, endX: bounds.left + 20, endY: bounds.bottom - 70 } : null })()`) + if (!boxGesture) throw new Error('Viewport canvas bounds are unavailable for box selection.') + await client.send('Input.dispatchMouseEvent', { type: 'mousePressed', x: boxGesture.startX, y: boxGesture.startY, button: 'left', buttons: 1, modifiers: 8, clickCount: 1 }, sessionId) + await client.send('Input.dispatchMouseEvent', { type: 'mouseMoved', x: boxGesture.endX, y: boxGesture.endY, button: 'left', buttons: 1, modifiers: 8 }, sessionId) + await client.send('Input.dispatchMouseEvent', { type: 'mouseReleased', x: boxGesture.endX, y: boxGesture.endY, button: 'left', buttons: 0, modifiers: 8, clickCount: 1 }, sessionId) + const viewportBoxGesture = await evaluate(`(() => { const canvas = document.querySelector('.three-viewport-host canvas'); return { mode: canvas?.dataset.boxSelectionMode || '', objectIds: (canvas?.dataset.boxSelectionObjectIds || '').split(',').filter(Boolean) } })()`) + if (viewportBoxGesture.mode !== 'crossing' || viewportBoxGesture.objectIds.length < 2) throw new Error(`Viewport box gesture did not resolve multiple objects: ${JSON.stringify({ boxGesture, viewportBoxGesture })}`) + const reopenedModelForBox = await evaluate(`(() => { const tab = [...document.querySelectorAll('.panel-tabs button')].find((candidate) => candidate.textContent?.trim() === 'Model'); if (!tab) return false; tab.click(); return true })()`) + if (!reopenedModelForBox) throw new Error('Model tab could not be opened after viewport box selection.') + await waitFor('document.querySelectorAll(".tree-row.is-selected").length >= 2', 'viewport box multi-selection') + const viewportBoxSelection = await evaluate(`(() => { const canvas = document.querySelector('.three-viewport-host canvas'); return { objectCount: Number(canvas?.dataset.objectCount || 0), topologySource: canvas?.dataset.topologySource || '', topologySources: { face: canvas?.dataset.faceTopologySource || '', edge: canvas?.dataset.edgeTopologySource || '', vertex: canvas?.dataset.vertexTopologySource || '' }, edgeCount: Number(canvas?.dataset.subshapeEdgeCount || 0), vertexCount: Number(canvas?.dataset.subshapeVertexCount || 0), selectedCount: document.querySelectorAll('.tree-row.is-selected').length, labels: [...document.querySelectorAll('.tree-row.is-selected')].map((row) => row.textContent?.trim() || ''), gesture: ${JSON.stringify(viewportBoxGesture)} } })()`) + if (viewportBoxSelection.objectCount < 2 || viewportBoxSelection.topologySource !== 'occt-analytic' || viewportBoxSelection.edgeCount < 4 || viewportBoxSelection.vertexCount < 4 || viewportBoxSelection.selectedCount < 2 || !viewportBoxSelection.labels.includes('Box') || !viewportBoxSelection.labels.includes('Cylinder')) throw new Error(`Viewport box selection gate failed: ${JSON.stringify(viewportBoxSelection)}`) + + await clickButton('File') + await waitFor('Boolean(document.querySelector(".menu-popover[role=menu]"))', 'File menu') + const fileMenu = await evaluate(`(() => { const menu = document.querySelector('.menu-popover[role=menu]'); return { items: menu?.querySelectorAll('[role=menuitem]').length || 0, labels: [...(menu?.querySelectorAll('[role=menuitem]') || [])].map((item) => item.textContent?.trim() || ''), expanded: document.querySelector('.top-menu button[aria-expanded=true]')?.textContent || '' } })()`) + if (fileMenu.items < 7 || fileMenu.expanded !== 'File' || !fileMenu.labels.some((label) => label.includes('Save'))) throw new Error(`FreeCAD File menu gate failed: ${JSON.stringify(fileMenu)}`) + await evaluate(`document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }))`) + await waitFor('!document.querySelector(".menu-popover")', 'File menu Escape close') + + await clickButton('Search commands') + await waitFor('Boolean(document.querySelector(".freecad-dialog .command-palette"))', 'command search dialog') + await waitFor('document.activeElement?.getAttribute("aria-label") === "Command search"', 'command search focus') + const commandDialog = await evaluate(`(() => ({ modal: document.querySelector('.freecad-dialog')?.getAttribute('aria-modal') === 'true', results: document.querySelectorAll('.command-palette-list [role=option]').length, title: document.querySelector('#freecad-dialog-title')?.textContent || '', focused: document.activeElement?.getAttribute('aria-label') || '' }))()`) + if (!commandDialog.modal || commandDialog.results < 10 || commandDialog.title !== 'Command search' || commandDialog.focused !== 'Command search') throw new Error(`Command search dialog gate failed: ${JSON.stringify(commandDialog)}`) + await clickButton('Close dialog') + + await clickButton('Edit') + await clickButton('Preferences') + await waitFor('document.querySelector("#freecad-dialog-title")?.textContent === "Preferences"', 'Preferences dialog') + const preferencesDialog = await evaluate(`(() => ({ selects: document.querySelectorAll('.dialog-form select').length, checks: document.querySelectorAll('.dialog-form input[type=checkbox]').length, modal: document.querySelector('.freecad-dialog')?.getAttribute('aria-modal') === 'true' }))()`) + if (!preferencesDialog.modal || preferencesDialog.selects !== 3 || preferencesDialog.checks !== 2) throw new Error(`Preferences dialog gate failed: ${JSON.stringify(preferencesDialog)}`) + await clickButton('Cancel') + + await clickButton('Help') + await clickButton('About BitBybit CAD') + await waitFor('document.querySelector("#freecad-dialog-title")?.textContent.includes("About BitBybit Web FreeCAD")', 'About dialog') + const aboutDialog = await evaluate(`(() => ({ modal: document.querySelector('.freecad-dialog')?.getAttribute('aria-modal') === 'true', baseline: document.body.innerText.includes('FreeCAD 1.1.1 interaction baseline') }))()`) + if (!aboutDialog.modal || !aboutDialog.baseline) throw new Error(`About dialog gate failed: ${JSON.stringify(aboutDialog)}`) + await clickButton('Close') + + const selectedSketcher = await evaluate(`(() => { const select = document.querySelector('select[aria-label="Workbench"]'); if (!select) return false; select.value = 'Sketcher'; select.dispatchEvent(new Event('change', { bubbles: true })); return true })()`) + if (!selectedSketcher) throw new Error('Workbench selector is missing from the workspace.') + await waitFor('document.querySelector("select[aria-label=Workbench]")?.value === "Sketcher" && document.body.innerText.includes("Sketcher workbench loaded")', 'Sketcher workbench change') + await clickButton('Create sketch') + await waitFor('Boolean(document.querySelector(".toast"))', 'Create sketch notice') + const cancelledSketch = await evaluate(`(() => { const button = document.querySelector('.task-actions-top .button-quiet'); if (!button || button.disabled) return false; button.click(); return true })()`) + if (!cancelledSketch) throw new Error('Chrome E2E could not cancel the Create Sketch preview.') + await waitFor('document.querySelector(".toast")?.textContent.includes("Task cancelled")', 'Create sketch task cancellation') + const openedModelTab = await evaluate(`(() => { const tab = [...document.querySelectorAll('.panel-tabs button')].find((candidate) => candidate.textContent?.trim() === 'Model'); if (!tab) return false; tab.click(); return true })()`) + if (!openedModelTab) throw new Error('Chrome E2E could not reopen the model tree tab.') + const selectedProfile = await evaluate(`(() => { const row = [...document.querySelectorAll('.tree-row')].find((candidate) => candidate.textContent?.trim() === 'Sketch'); if (!row) return { ok: false, rows: [...document.querySelectorAll('.tree-row')].map((candidate) => candidate.textContent?.trim() || '') }; row.click(); return { ok: true, rows: [] } })()`) + if (!selectedProfile?.ok) throw new Error(`Chrome E2E could not select the existing Sketch profile. Rows: ${JSON.stringify(selectedProfile?.rows || [])}`) + const openedContextMenu = await evaluate(`(() => { const row = [...document.querySelectorAll('.tree-row')].find((candidate) => candidate.textContent?.trim() === 'Sketch'); if (!row) return false; row.dispatchEvent(new MouseEvent('contextmenu', { bubbles: true, cancelable: true, clientX: 180, clientY: 330 })); return true })()`) + if (!openedContextMenu) throw new Error('Chrome E2E could not open the model tree context menu.') + await waitFor('Boolean(document.querySelector(".tree-context-menu[role=menu]"))', 'model tree context menu') + const contextMenu = await evaluate(`(() => ({ items: [...document.querySelectorAll('.tree-context-menu [role=menuitem]')].map((item) => item.textContent?.trim() || ''), left: document.querySelector('.tree-context-menu')?.getBoundingClientRect().left || -1, top: document.querySelector('.tree-context-menu')?.getBoundingClientRect().top || -1 }))()`) + if (contextMenu.items.length !== 4 || !contextMenu.items.some((label) => label.includes('Toggle visibility')) || !contextMenu.items.some((label) => label.includes('Delete')) || contextMenu.left < 0 || contextMenu.top < 0) throw new Error(`Model tree context menu gate failed: ${JSON.stringify(contextMenu)}`) + await evaluate(`document.body.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true }))`) + await waitFor('!document.querySelector(".tree-context-menu")', 'model tree context menu close') + const stagedMultiSelection = await evaluate(`(() => { const rows = [...document.querySelectorAll('.tree-row')]; const sketch = rows.find((candidate) => candidate.textContent?.trim() === 'Sketch'); const pad = rows.find((candidate) => candidate.textContent?.trim() === 'Pad'); if (!sketch || !pad) return { ok: false, rows: rows.map((candidate) => candidate.textContent?.trim() || '') }; sketch.click(); pad.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, shiftKey: true })); return { ok: true, rows: [] } })()`) + if (!stagedMultiSelection?.ok) throw new Error(`Chrome E2E could not stage model tree multi-selection. Rows: ${JSON.stringify(stagedMultiSelection?.rows || [])}`) + await waitFor('document.querySelectorAll(".tree-row.is-selected").length >= 2', 'model tree multi-selection') + const multiSelection = await evaluate(`(() => ({ count: document.querySelectorAll('.tree-row.is-selected').length, labels: [...document.querySelectorAll('.tree-row.is-selected')].map((row) => row.textContent?.trim() || '') }))()`) + if (!multiSelection.labels.includes('Sketch') || !multiSelection.labels.includes('Pad')) throw new Error(`Model tree multi-selection gate failed: ${JSON.stringify(multiSelection)}`) + await evaluate(`(() => { const sketch = [...document.querySelectorAll('.tree-row')].find((candidate) => candidate.textContent?.trim() === 'Sketch'); sketch?.click(); return Boolean(sketch) })()`) + const selectedPartDesign = await evaluate(`(() => { const select = document.querySelector('select[aria-label="Workbench"]'); if (!select) return false; select.value = 'Part Design'; select.dispatchEvent(new Event('change', { bubbles: true })); return true })()`) + if (!selectedPartDesign) throw new Error('Workbench selector could not switch to Part Design.') + await waitFor('document.querySelector("select[aria-label=Workbench]")?.value === "Part Design"', 'Part Design workbench change') + + await clickButton('Additive loft') + await waitFor('document.querySelectorAll(".task-link-list input[type=checkbox]").length >= 1', 'Loft section task controls') + const loftTask = await evaluate(`(() => { + const list = document.querySelector('.task-link-list') + const panel = document.querySelector('.right-panel') + const checks = [...document.querySelectorAll('.task-link-list input[type=checkbox]')] + return { + sectionCount: checks.length, + checkedSectionCount: checks.filter((input) => input.checked).length, + labels: [...document.querySelectorAll('.task-link-list .check-row span')].map((entry) => entry.textContent?.trim() || ''), + listVerticalOverflow: list ? list.scrollHeight - list.clientHeight : -1, + panelHorizontalOverflow: panel ? panel.scrollWidth - panel.clientWidth : -1, + } + })()`) + if (loftTask.sectionCount < 1 || loftTask.checkedSectionCount !== 1 || !loftTask.labels.includes('Sketch (sketch)') || loftTask.panelHorizontalOverflow > 1) throw new Error(`Loft task UI gate failed: ${JSON.stringify(loftTask)}`) + await clickButton('Collapse bottom panel') + + const desktop = await evaluate(`(async () => { + await new Promise((resolveFrame) => requestAnimationFrame(resolveFrame)) + const canvas = document.querySelector('.three-viewport-host canvas') + const left = document.querySelector('.left-panel')?.getBoundingClientRect() + const viewport = document.querySelector('.viewport-region')?.getBoundingClientRect() + const right = document.querySelector('.right-panel')?.getBoundingClientRect() + const gl = canvas?.getContext('webgl2') || canvas?.getContext('webgl') + let uniqueCanvasColors = 0 + let canvasGlError = -1 + if (canvas && gl && canvas.width > 0 && canvas.height > 0) { + const pixels = new Uint8Array(canvas.width * canvas.height * 4) + gl.readPixels(0, 0, canvas.width, canvas.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels) + canvasGlError = gl.getError() + const colors = new Set() + const stride = Math.max(4, Math.floor(pixels.length / 4096 / 4) * 4) + for (let index = 0; index < pixels.length && colors.size < 64; index += stride) colors.add([pixels[index], pixels[index + 1], pixels[index + 2], pixels[index + 3]].join(',')) + uniqueCanvasColors = colors.size + } + const overflowingControls = [...document.querySelectorAll('button, select, input')].filter((element) => { + const style = getComputedStyle(element) + return style.display !== 'none' && style.visibility !== 'hidden' && element.clientWidth > 0 && element.scrollWidth > element.clientWidth + 2 + }).length + return { + path: location.pathname, + workbench: document.querySelector('select[aria-label="Workbench"]')?.value || '', + persistenceMode: document.querySelector('.app-shell')?.dataset.persistenceMode || '', + bodyHorizontalOverflow: document.documentElement.scrollWidth - innerWidth, + overflowingControls, + canvas: { width: canvas?.width || 0, height: canvas?.height || 0, source: canvas?.dataset.geometrySource || '', uniqueColors: uniqueCanvasColors, glError: canvasGlError }, + panelsSeparated: Boolean(left && viewport && right && left.right <= viewport.left + 1 && viewport.right <= right.left + 1), + commandGroups: document.querySelectorAll('.workbench-commandbar .command-tool-group').length, + comboTabs: [...document.querySelectorAll('.combo-panel > .panel-tabs button')].map((entry) => entry.textContent?.trim() || ''), + selectionView: Boolean(document.querySelector('.selection-panel[aria-label="Selection View"]')), + statusBar: Boolean(document.querySelector('.freecad-statusbar[role=status]')), + } + })()`) + desktop.kernelPreviewSource = kernelPreviewSource + if (desktop.path !== '/workspace/pump-housing' || desktop.workbench !== 'Part Design') throw new Error('Desktop workflow did not retain its workspace route and workbench state.') + if (desktop.bodyHorizontalOverflow > 1 || !desktop.panelsSeparated || desktop.overflowingControls > 0 || desktop.commandGroups < 4 || !desktop.comboTabs.some((label) => label.startsWith('Model')) || !desktop.comboTabs.some((label) => label.startsWith('Tasks')) || !desktop.selectionView || !desktop.statusBar) throw new Error(`Desktop layout gate failed: ${JSON.stringify(desktop)}`) + if (desktop.kernelPreviewSource !== 'bitbybit-occt' || desktop.canvas.width < 100 || desktop.canvas.height < 100 || desktop.canvas.uniqueColors < 4 || desktop.canvas.glError !== 0) throw new Error(`Desktop canvas pixel gate failed: ${JSON.stringify({ kernelPreviewSource: desktop.kernelPreviewSource, canvas: desktop.canvas })}`) + const desktopScreenshot = await screenshot('desktop-workspace') + + await clickButton('Cancel') + await waitFor('document.querySelector(".toast")?.textContent.includes("Task cancelled")', 'task cancellation') + + const selectedCam = await evaluate(`(() => { const select = document.querySelector('select[aria-label="Workbench"]'); if (!select) return false; select.value = 'CAM'; select.dispatchEvent(new Event('change', { bubbles: true })); return true })()`) + if (!selectedCam) throw new Error('Workbench selector could not switch to CAM.') + await waitFor('document.querySelector("select[aria-label=Workbench]")?.value === "CAM" && Boolean([...document.querySelectorAll(".top-menu > .menu-wrapper > button")].find((button) => button.textContent?.trim() === "CAM"))', 'CAM workbench chrome') + await clickButton('CAM') + await waitFor('Boolean(document.querySelector(".menu-popover-cam[role=menu]"))', 'CAM workbench menu') + const camMenu = await evaluate(`(() => ({ items: document.querySelectorAll('.menu-popover-cam [role=menuitem]').length, groups: [...document.querySelectorAll('.menu-popover-cam .menu-section-label')].map((entry) => entry.textContent?.trim() || ''), labels: [...document.querySelectorAll('.menu-popover-cam [role=menuitem]')].map((entry) => entry.textContent?.trim() || '') }))()`) + if (camMenu.items !== 60 || JSON.stringify(camMenu.groups) !== JSON.stringify(['Project Setup', 'Simulation and Tools', '2D Operations', 'Machining Operations', 'Path Modification']) || !camMenu.labels.some((label) => label.includes('Post Process')) || !camMenu.labels.some((label) => label.includes('Drag Knife Dress-up'))) throw new Error(`CAM menu gate failed: ${JSON.stringify(camMenu)}`) + await evaluate(`document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }))`) + await waitFor('!document.querySelector(".menu-popover-cam")', 'CAM menu close') + + await clickButton('Create Job') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Create Job"', 'CAM Job task') + const camJobTask = await evaluate(`(() => ({ stockModes: document.querySelector('[data-testid=cam-task-panel] select')?.options.length || 0, fields: document.querySelectorAll('[data-testid=cam-task-panel] input').length, actions: [...document.querySelectorAll('[data-testid=cam-task-panel] .task-actions-top button')].map((button) => button.textContent?.trim() || '') }))()`) + if (camJobTask.stockModes !== 4 || camJobTask.fields < 5 || JSON.stringify(camJobTask.actions) !== JSON.stringify(['OK', 'Apply', 'Cancel'])) throw new Error(`CAM Job task gate failed: ${JSON.stringify(camJobTask)}`) + await clickButton('OK') + await waitFor('document.querySelector(".toast")?.textContent.includes("CAM Job and SetupSheet updated")', 'CAM Job task commit') + await clickButton('Fixture') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Fixture"', 'CAM Fixture task') + const camFixtureTask = await evaluate(`(() => ({ inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length, section: [...document.querySelectorAll('[data-testid=cam-task-panel] .cam-task-section')].some((entry) => entry.textContent?.trim() === 'Fixture Bounds'), labels: [...document.querySelectorAll('[data-testid=cam-task-panel] .field-label')].map((label) => label.textContent?.trim() || '') }))()`) + if (camFixtureTask.inputs !== 7 || !camFixtureTask.section || !camFixtureTask.labels.some((label) => label.includes('Fixture ID')) || !camFixtureTask.labels.some((label) => label.includes('Max Z'))) throw new Error(`CAM Fixture task gate failed: ${JSON.stringify(camFixtureTask)}`) + await clickButton('Cancel') + await waitFor('!document.querySelector("[data-testid=cam-task-panel] .task-actions-top")', 'CAM Fixture cancellation') + await clickButton('Add Tool Controller') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Tool Controller"', 'CAM Tool Controller task') + const camToolTask = await evaluate(`(() => ({ selects: document.querySelectorAll('[data-testid=cam-task-panel] select').length, inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length }))()`) + if (camToolTask.selects < 2 || camToolTask.inputs !== 13) throw new Error(`CAM Tool Controller task gate failed: ${JSON.stringify(camToolTask)}`) + await clickButton('OK') + await waitFor('document.querySelector(".toast")?.textContent.includes("ToolBit and Tool Controller")', 'CAM Tool Controller commit') + await clickButton('Profile') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Profile"', 'CAM Profile task') + const camOperationTask = await evaluate(`(() => ({ inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length, selects: document.querySelectorAll('[data-testid=cam-task-panel] select').length }))()`) + if (camOperationTask.inputs < 5 || camOperationTask.selects < 2) throw new Error(`CAM Profile task gate failed: ${JSON.stringify(camOperationTask)}`) + await clickButton('OK') + await waitFor('document.querySelector(".toast")?.textContent.includes("path points")', 'CAM Profile generation') + await clickButton('Undo') + await waitFor('Number(document.querySelector(".three-viewport-host canvas")?.dataset.toolpathPoints || 0) === 0', 'CAM toolpath undo') + const camUndoUi = await evaluate(`({ pathPoints: Number(document.querySelector('.three-viewport-host canvas')?.dataset.toolpathPoints || 0), redoEnabled: document.querySelector('button[aria-label="Redo"]')?.disabled === false })`) + if (camUndoUi.pathPoints !== 0 || !camUndoUi.redoEnabled) throw new Error(`CAM Undo UI gate failed: ${JSON.stringify(camUndoUi)}`) + await clickButton('Redo') + await waitFor('Number(document.querySelector(".three-viewport-host canvas")?.dataset.toolpathPoints || 0) >= 5', 'CAM toolpath redo') + const camRedoUi = await evaluate(`({ pathPoints: Number(document.querySelector('.three-viewport-host canvas')?.dataset.toolpathPoints || 0), undoEnabled: document.querySelector('button[aria-label="Undo"]')?.disabled === false })`) + if (camRedoUi.pathPoints < 5 || !camRedoUi.undoEnabled) throw new Error(`CAM Redo UI gate failed: ${JSON.stringify(camRedoUi)}`) + await clickButton('Load ToolBit') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Load ToolBit"', 'CAM ToolBit Load task') + const camToolBitLoadTask = await evaluate(`(() => ({ inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length, textareas: document.querySelectorAll('[data-testid=cam-task-panel] textarea').length, schemaVersion: document.querySelector('[data-testid=cam-task-panel] textarea')?.value.includes('"schemaVersion": 1') === true }))()`) + if (camToolBitLoadTask.inputs !== 1 || camToolBitLoadTask.textareas !== 1 || !camToolBitLoadTask.schemaVersion) throw new Error(`CAM ToolBit Load task gate failed: ${JSON.stringify(camToolBitLoadTask)}`) + await clickButton('Cancel') + await waitFor('!document.querySelector("[data-testid=cam-task-panel] .task-actions-top")', 'CAM ToolBit Load cancellation') + await clickButton('Drilling') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Drilling"', 'CAM Drilling task') + const camDrillingTask = await evaluate(`(() => ({ inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length, selects: document.querySelectorAll('[data-testid=cam-task-panel] select').length, labels: [...document.querySelectorAll('[data-testid=cam-task-panel] .field-label')].map((label) => label.textContent?.trim() || '') }))()`) + if (camDrillingTask.inputs !== 5 || camDrillingTask.selects !== 2 || !camDrillingTask.labels.some((label) => label.includes('Final Depth'))) throw new Error(`CAM Drilling task gate failed: ${JSON.stringify(camDrillingTask)}`) + await clickButton('Cancel') + await waitFor('!document.querySelector("[data-testid=cam-task-panel] .task-actions-top")', 'CAM Drilling cancellation') + await clickButton('Drag Knife Dress-up') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Drag Knife Dress-up"', 'CAM Drag Knife task') + const camDragKnifeTask = await evaluate(`(() => ({ inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length, selects: document.querySelectorAll('[data-testid=cam-task-panel] select').length, knifeOffset: [...document.querySelectorAll('[data-testid=cam-task-panel] .field-label')].some((label) => label.textContent?.includes('Knife Offset')) }))()`) + if (camDragKnifeTask.inputs !== 1 || camDragKnifeTask.selects !== 1 || !camDragKnifeTask.knifeOffset) throw new Error(`CAM Drag Knife task gate failed: ${JSON.stringify(camDragKnifeTask)}`) + await clickButton('Cancel') + await waitFor('!document.querySelector("[data-testid=cam-task-panel] .task-actions-top")', 'CAM Drag Knife cancellation') + await clickButton('Post Process') + await waitFor('document.querySelector("[data-testid=cam-task-panel] .task-header h2")?.textContent === "Post Process"', 'CAM Post Process task') + const selectedFiveAxis = await evaluate(`(() => { const label = [...document.querySelectorAll('[data-testid=cam-task-panel] .field-label')].find((entry) => entry.textContent?.includes('Axis Configuration')); const select = label?.querySelector('select'); if (!select) return false; select.value = '5-axis'; select.dispatchEvent(new Event('change', { bubbles: true })); return true })()`) + if (!selectedFiveAxis) throw new Error('CAM Post Process task could not select 5-axis mode.') + await waitFor('document.querySelectorAll("[data-testid=cam-task-panel] select").length === 4 && document.querySelectorAll("[data-testid=cam-task-panel] input").length === 4', 'CAM 5-axis post controls') + const camPostTask = await evaluate(`(() => ({ inputs: document.querySelectorAll('[data-testid=cam-task-panel] input').length, selects: document.querySelectorAll('[data-testid=cam-task-panel] select').length, labels: [...document.querySelectorAll('[data-testid=cam-task-panel] .field-label')].map((label) => label.textContent?.trim() || ''), note: document.querySelector('[data-testid=cam-task-panel] .task-note')?.textContent?.trim() || '' }))()`) + if (camPostTask.inputs !== 4 || camPostTask.selects !== 4 || !camPostTask.labels.some((label) => label.includes('Rotary End')) || !camPostTask.labels.some((label) => label.includes('Tilt End')) || !camPostTask.note.includes('rotary limit checks')) throw new Error(`CAM 5-axis Post task gate failed: ${JSON.stringify(camPostTask)}`) + await clickButton('Cancel') + await waitFor('!document.querySelector("[data-testid=cam-task-panel] .task-actions-top")', 'CAM Post Process cancellation') + const camModelTab = await evaluate(`(() => { const tab = [...document.querySelectorAll('.combo-panel > .panel-tabs button')].find((button) => button.textContent?.trim() === 'Model'); if (!tab) return false; tab.click(); return true })()`) + if (!camModelTab) throw new Error('CAM workflow could not open the Model tab.') + await waitFor('Boolean(document.querySelector("[data-testid=cam-job-tree]")) && document.querySelectorAll("[data-testid=cam-job-tree] .cam-tree-row").length >= 7', 'CAM Job tree') + await clickButton('Simulators') + await waitFor('document.querySelector(".toast")?.textContent.includes("CAM simulation passed")', 'CAM simulation') + const reopenedCamModelTab = await evaluate(`(() => { const tab = [...document.querySelectorAll('.combo-panel > .panel-tabs button')].find((button) => button.textContent?.trim() === 'Model'); if (!tab) return false; tab.click(); return true })()`) + if (!reopenedCamModelTab) throw new Error('CAM workflow could not reopen the Model tab after simulation.') + await waitFor('Boolean(document.querySelector("[data-testid=cam-job-tree]"))', 'CAM Job tree after simulation') + const camUi = await evaluate(`(() => { const canvas = document.querySelector('.three-viewport-host canvas'); return { workbench: document.querySelector('select[aria-label=Workbench]')?.value || '', commandGroups: document.querySelectorAll('.workbench-commandbar .command-tool-group').length, toolbarCommands: document.querySelectorAll('.workbench-commandbar .command-tool-buttons button').length, jobTree: Boolean(document.querySelector('[data-testid=cam-job-tree]')), treeRows: document.querySelectorAll('[data-testid=cam-job-tree] .cam-tree-row').length, operations: [...document.querySelectorAll('[data-testid=cam-job-tree] .cam-tree-row')].filter((row) => row.textContent?.includes('profile')).length, generated: [...document.querySelectorAll('[data-testid=cam-job-tree] .cam-state')].some((state) => state.textContent?.trim() === 'generated'), toolpathPoints: Number(canvas?.dataset.toolpathPoints || 0), toolpathOperations: Number(canvas?.dataset.toolpathOperations || 0), toolpathLegend: document.body.innerText.includes('Toolpath'), horizontalOverflow: document.documentElement.scrollWidth - innerWidth } })()`) + if (camUi.workbench !== 'CAM' || camUi.commandGroups !== 4 || camUi.toolbarCommands !== 60 || !camUi.jobTree || camUi.treeRows < 7 || camUi.operations !== 1 || !camUi.generated || camUi.toolpathPoints < 5 || camUi.toolpathOperations !== 1 || !camUi.toolpathLegend || camUi.horizontalOverflow > 1) throw new Error(`CAM workbench UI gate failed: ${JSON.stringify(camUi)}`) + const camScreenshot = await screenshot('cam-workbench') + + await clickButton('Save project') + await waitFor('document.querySelector(".toast")?.textContent.includes("Saved to local workspace")', 'OPFS save completion') + await clickButton('Open project') + await waitFor('location.pathname === "/projects" && document.body.innerText.includes("Your projects.")', 'Project Manager') + await waitFor('[...document.querySelectorAll(".project-list-row .list-main strong")].some((entry) => entry.textContent?.trim() === "Pump Housing")', 'saved OPFS project row') + const openedSavedProject = await evaluate(`(() => { const label = [...document.querySelectorAll('.project-list-row .list-main strong')].find((entry) => entry.textContent?.trim() === 'Pump Housing'); const row = label?.closest('button'); if (!row) return false; row.click(); return true })()`) + if (!openedSavedProject) throw new Error('Saved project row could not be reopened.') + await waitFor('location.pathname === "/workspace/pump-housing" && document.querySelector(".toast")?.textContent.includes("Loaded Pump Housing")', 'saved OPFS project reopen') + const persistenceRoundTrip = await evaluate(`({ path: location.pathname, documentLabel: document.querySelector('.context-document')?.textContent?.trim() || '', persistenceMode: document.querySelector('.app-shell')?.dataset.persistenceMode || '' })`) + if (!persistenceRoundTrip.documentLabel.includes('Pump Housing') || persistenceRoundTrip.persistenceMode !== 'sqlite-opfs') throw new Error(`OPFS project reopen gate failed: ${JSON.stringify(persistenceRoundTrip)}`) + + await clickButton('Open project') + await waitFor('location.pathname === "/projects" && document.body.innerText.includes("Your projects.")', 'project manager for import') + await clickButton('Import') + await waitFor('location.pathname === "/import" && document.body.innerText.includes("Select a CAD file")', 'import page') + const importFlow = await evaluate(`(() => ({ path: location.pathname, accept: document.querySelector('input[type="file"]')?.getAttribute('accept') || '', exchangeHint: document.body.innerText.includes('STEP · IGES · BREP · FCStd') }))()`) + if (importFlow.accept !== '.FCStd,.fcstd,.step,.stp,.iges,.igs,.brep,.brp' || importFlow.exchangeHint !== true) throw new Error(`Import format state gate failed: ${JSON.stringify(importFlow)}`) + await navigate('/workspace/pump-housing') + + await clickButton('File') + await clickButton('Export...') + await waitFor('location.pathname === "/export" && document.body.innerText.includes("Export a clean deliverable.")', 'export page') + const exportFlow = await evaluate(`(() => { + const formats = Object.fromEntries([...document.querySelectorAll('.format-card')].map((button) => [button.querySelector('strong')?.textContent || '', { disabled: button.disabled, selected: button.classList.contains('is-selected') }])) + return { path: location.pathname, formats } + })()`) + if (exportFlow.formats?.STEP?.selected !== true || exportFlow.formats?.STEP?.disabled !== false || exportFlow.formats?.STL?.disabled !== false || exportFlow.formats?.IGES?.disabled !== false) throw new Error(`Export format state gate failed: ${JSON.stringify(exportFlow)}`) + await clickButton('STL') + await waitFor('document.querySelector(".toast")?.textContent.includes("STL selected")', 'STL format selection') + exportFlow.selectedAfterInteraction = await evaluate(`document.querySelector('.format-card.is-selected strong')?.textContent || ''`) + if (exportFlow.selectedAfterInteraction !== 'STL') throw new Error('STL export selection did not update the UI state.') + + await setViewport(390, 844, 2) + await navigate('/start') + await waitFor('document.body.innerText.includes("Start a new design.")', 'mobile start page') + const mobile = await evaluate(`(() => { + const topbar = document.querySelector('.topbar')?.getBoundingClientRect() + const heading = document.querySelector('.page-heading h1')?.getBoundingClientRect() + const actions = document.querySelector('.page-actions')?.getBoundingClientRect() + return { + path: location.pathname, + viewport: { width: innerWidth, height: innerHeight, devicePixelRatio }, + bodyHorizontalOverflow: document.documentElement.scrollWidth - innerWidth, + visibleHeading: Boolean(heading && heading.width > 0 && heading.top >= (topbar?.bottom || 0) && heading.bottom < innerHeight), + visibleActions: Boolean(actions && actions.width > 0 && actions.top >= (heading?.bottom || 0) && actions.bottom < innerHeight), + } + })()`) + if (mobile.path !== '/start' || mobile.viewport.width !== 390 || mobile.bodyHorizontalOverflow > 1 || !mobile.visibleHeading || !mobile.visibleActions) throw new Error(`Mobile layout gate failed: ${JSON.stringify(mobile)}`) + const pwa = await evaluate(`(async () => { const link = document.querySelector('link[rel="manifest"]'); const response = await fetch(link?.getAttribute('href') || ''); const manifest = response.ok ? await response.json() : null; return { manifestLinked: Boolean(link), manifestStatus: response.status, name: manifest?.name || '', startUrl: manifest?.start_url || '', scope: manifest?.scope || '', display: manifest?.display || '' } })()`) + if (pwa.manifestLinked !== true || pwa.manifestStatus !== 200 || pwa.name !== 'BitBybit CAD Studio' || pwa.startUrl !== '/start' || pwa.scope !== '/' || pwa.display !== 'standalone') throw new Error(`PWA manifest gate failed: ${JSON.stringify(pwa)}`) + const accessibility = await evaluate(`(() => { + const visible = (element) => { const style = getComputedStyle(element); return style.display !== 'none' && style.visibility !== 'hidden' && element.getClientRects().length > 0 } + const name = (element) => element.getAttribute('aria-label') || element.getAttribute('title') || element.textContent?.trim() || element.getAttribute('placeholder') || '' + const controls = [...document.querySelectorAll('button, input, select, textarea')].filter(visible) + const missing = controls.filter((element) => !name(element)).map((element) => element.tagName.toLowerCase() + '.' + (element.className || '')) + return { checked: controls.length, missing } + })()`) + if (accessibility.missing.length > 0) throw new Error(`Chrome accessibility naming gate failed: ${JSON.stringify(accessibility)}`) + const accessibilityTree = await client.send('Accessibility.getFullAXTree', {}, sessionId) + const accessibilityRoles = new Set(['button', 'checkbox', 'combobox', 'link', 'menuitem', 'radio', 'searchbox', 'slider', 'spinbutton', 'switch', 'tab', 'textbox']) + const accessibilityNodes = (accessibilityTree.nodes || []).filter((node) => node.ignored !== true) + const accessibilityControls = accessibilityNodes.filter((node) => accessibilityRoles.has(node.role?.value || '')) + const screenReader = { + nodes: accessibilityNodes.length, + controls: accessibilityControls.length, + namedControls: accessibilityControls.filter((node) => Boolean(node.name?.value?.trim())).length, + unnamedControls: accessibilityControls.filter((node) => !node.name?.value?.trim()).length, + landmarks: accessibilityNodes.filter((node) => ['main', 'navigation', 'region'].includes(node.role?.value || '')).length, + } + if (screenReader.nodes < 10 || screenReader.controls < 8 || screenReader.namedControls !== screenReader.controls || screenReader.unnamedControls !== 0) throw new Error(`Chrome accessibility tree gate failed: ${JSON.stringify(screenReader)}`) + const focusSequence = [] + for (let index = 0; index < 8; index += 1) { + await client.send('Input.dispatchKeyEvent', { type: 'keyDown', key: 'Tab', code: 'Tab', windowsVirtualKeyCode: 9, nativeVirtualKeyCode: 9 }, sessionId) + await client.send('Input.dispatchKeyEvent', { type: 'keyUp', key: 'Tab', code: 'Tab', windowsVirtualKeyCode: 9, nativeVirtualKeyCode: 9 }, sessionId) + focusSequence.push(await evaluate(`(() => { const element = document.activeElement; return { tag: element?.tagName || '', name: element?.getAttribute('aria-label') || element?.getAttribute('title') || element?.textContent?.trim() || element?.getAttribute('placeholder') || '', visible: Boolean(element && element.getClientRects().length) } })()`)) + } + const keyboard = { steps: focusSequence.length, named: focusSequence.filter((entry) => entry.visible && entry.name).length, unnamedVisible: focusSequence.filter((entry) => entry.visible && !entry.name).length, sequence: focusSequence } + if (keyboard.steps !== 8 || keyboard.named !== keyboard.steps || keyboard.unnamedVisible !== 0) throw new Error(`Chrome keyboard focus gate failed: ${JSON.stringify(keyboard)}`) + const mobileScreenshot = await screenshot('mobile-start') + + if (pageErrors.length > 0) throw new Error(`Chrome application emitted page errors: ${pageErrors.join(' | ')}`) + status = 'pass' + const report = { + schemaVersion: 1, + generatedAt: new Date().toISOString(), + browserId: 'chrome', + status, + browser: { product: version.product, protocolVersion: version.protocolVersion, userAgent: version.userAgent }, + headers: { coop: 'same-origin', coep: 'require-corp' }, + workflows: ['start-to-workspace', 'viewport-multi-object-box-selection', 'freecad-menus', 'command-search-dialog', 'preferences-about-dialogs', 'model-tree-context-menu', 'workbench-change', 'create-sketch-command', 'loft-section-task', 'drawer-collapse', 'cam-workbench-job-flow', 'opfs-save-reopen', 'import-format-selection', 'export-format-selection'], + uiParity: { fileMenu, commandDialog, preferencesDialog, aboutDialog, contextMenu, multiSelection, viewportBoxSelection, camMenu }, + desktop, + loftTask, + cam: { jobTask: camJobTask, toolTask: camToolTask, operationTask: camOperationTask, undoRedo: { undo: camUndoUi, redo: camRedoUi }, extendedTasks: { fixture: camFixtureTask, toolBitLoad: camToolBitLoadTask, drilling: camDrillingTask, dragKnife: camDragKnifeTask, post: camPostTask }, ui: camUi }, + persistenceRoundTrip, + importFlow, + exportFlow, + mobile, + accessibility, + screenReader, + keyboard, + pwa, + offline, + screenshots: { desktop: desktopScreenshot, cam: camScreenshot, mobile: mobileScreenshot }, + pageErrors, + } + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) +} finally { + client.close() + chrome.kill('SIGTERM') + await new Promise((resolveServer) => server.close(resolveServer)) + await removeChromeProfile(chromeProfile) + if (status !== 'pass') console.error(chromeStderr.slice(-3000)) +} diff --git a/scripts/run-chrome-assembly.mjs b/scripts/run-chrome-assembly.mjs new file mode 100644 index 0000000..151ed42 --- /dev/null +++ b/scripts/run-chrome-assembly.mjs @@ -0,0 +1,23 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-assembly-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Assembly harness server did not expose a port.') +const profile = await createChromeProfile('assembly') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl) +let report +try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-assembly-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitAssemblyReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Assembly harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-bim.mjs b/scripts/run-chrome-bim.mjs new file mode 100644 index 0000000..25da608 --- /dev/null +++ b/scripts/run-chrome-bim.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-bim-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('BIM harness server did not expose a port.'); const profile = await createChromeProfile('bim'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-bim-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitBimReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome BIM harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-cam-linuxcnc-machine.mjs b/scripts/run-chrome-cam-linuxcnc-machine.mjs new file mode 100644 index 0000000..726433d --- /dev/null +++ b/scripts/run-chrome-cam-linuxcnc-machine.mjs @@ -0,0 +1,53 @@ +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { chromium } from '../cnc_wams_gpt6/linuxcnc-master/web/node_modules/playwright/index.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-cam-linuxcnc-machine-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) + +const vite = await createViteServer({ + configFile: false, + root, + server: { + host: '127.0.0.1', + port: 5201, + strictPort: false, + watch: null, + proxy: { + '/linuxcnc-machine': { + target: process.env.LINUXCNC_WASM_URL || 'https://localhost:5190', + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/linuxcnc-machine/, ''), + }, + }, + }, +}) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('CAM machine harness server did not expose a port.') +const browser = await chromium.launch({ headless: true, executablePath: executable, args: ['--no-sandbox', '--disable-dev-shm-usage', '--enable-unsafe-swiftshader'] }) +let report +try { + const context = await browser.newContext({ ignoreHTTPSErrors: true }) + const page = await context.newPage() + await page.goto(`http://127.0.0.1:${address.port}/chrome-cam-linuxcnc-machine-harness.html`, { waitUntil: 'domcontentloaded' }) + await page.waitForFunction(() => Boolean(window.__bitbybitCamLinuxcncMachineReport), null, { timeout: 240_000 }) + report = await page.evaluate(() => window.__bitbybitCamLinuxcncMachineReport) + report = { ...report, browserId: 'chrome', browser: { product: await browser.version(), userAgent: await page.evaluate(() => navigator.userAgent) } } + await context.close() + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + process.exitCode = 1 +} finally { + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + await browser.close() + await vite.close() +} diff --git a/scripts/run-chrome-cam-native-simulation.mjs b/scripts/run-chrome-cam-native-simulation.mjs new file mode 100644 index 0000000..2c179c7 --- /dev/null +++ b/scripts/run-chrome-cam-native-simulation.mjs @@ -0,0 +1,118 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { createRequire } from 'node:module' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const WebSocket = createRequire(import.meta.url)('ws') + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-cam-native-simulation-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ + root, + server: { + host: '127.0.0.1', port: 0, strictPort: false, + watch: { ignored: ['**/cnc_wams_gpt6/**', '**/OpenCAMLib/**', '**/working_ocl/**', '**/.cache/**'] }, + headers: { + 'Cross-Origin-Opener-Policy': 'same-origin', + 'Cross-Origin-Embedder-Policy': 'require-corp', + 'Cross-Origin-Resource-Policy': 'same-origin', + }, + }, + optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] }, +}) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Native CAM harness server did not expose a port.') +const profile = await createChromeProfile('cam-native-simulation') +const chrome = spawn(executable, [ + '--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', + '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', + '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank', +], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { + stderr += String(chunk) + const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/) + if (match) { clearTimeout(timer); resolveDebugger(match[1]) } + }) + chrome.once('exit', (code, signal) => { + clearTimeout(timer) + rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) + }) +}) + +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { + await new Promise((resolveOpen, rejectOpen) => { + this.socket.addEventListener('open', resolveOpen, { once: true }) + this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) + }) + this.socket.addEventListener('message', (event) => { + const message = JSON.parse(String(event.data)) + if (!message.id) return + const pending = this.pending.get(message.id) + if (!pending) return + this.pending.delete(message.id) + if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)) + else pending.resolve(message.result) + }) + } + send(method, params = {}, sessionId) { + const id = ++this.sequence + return new Promise((resolveMessage, rejectMessage) => { + this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }) + this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) + }) + } + close() { this.socket.close() } +} + +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { + const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId) + if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.') + return result.result?.value + } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-cam-native-simulation-harness.html` }, sessionId) + const deadline = Date.now() + 120_000 + while (Date.now() < deadline) { + report = await evaluate('window.__bitbybitCamNativeSimulationReport || null') + if (report) break + await new Promise((resolveWait) => setTimeout(resolveWait, 250)) + } + if (!report) throw new Error('Chrome native CAM simulation harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.error(JSON.stringify(report, null, 2)) + process.exitCode = 1 +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(profile) +} diff --git a/scripts/run-chrome-cam.mjs b/scripts/run-chrome-cam.mjs new file mode 100644 index 0000000..d641587 --- /dev/null +++ b/scripts/run-chrome-cam.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-cam-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('CAM harness server did not expose a port.'); const profile = await createChromeProfile('cam'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-cam-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitCamReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome CAM harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-camotics-wasm.mjs b/scripts/run-chrome-camotics-wasm.mjs new file mode 100644 index 0000000..62adbfc --- /dev/null +++ b/scripts/run-chrome-camotics-wasm.mjs @@ -0,0 +1,116 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { createRequire } from 'node:module' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const WebSocket = createRequire(import.meta.url)('ws') +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-camotics-wasm-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) + +const vite = await createViteServer({ + root, + server: { + host: '127.0.0.1', port: 0, strictPort: false, + watch: { ignored: ['**/cnc_wams_gpt6/**', '**/OpenCAMLib/**', '**/CAMotics/**', '**/.cache/**'] }, + headers: { + 'Cross-Origin-Opener-Policy': 'same-origin', + 'Cross-Origin-Embedder-Policy': 'require-corp', + 'Cross-Origin-Resource-Policy': 'same-origin', + }, + }, +}) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('CAMotics WASM harness server did not expose a port.') + +const profile = await createChromeProfile('camotics-wasm') +const chrome = spawn(executable, [ + '--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', + '--no-default-browser-check', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank', +], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { + stderr += String(chunk) + const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/) + if (match) { clearTimeout(timer); resolveDebugger(match[1]) } + }) + chrome.once('exit', (code, signal) => { + clearTimeout(timer) + rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) + }) +}) + +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { + await new Promise((resolveOpen, rejectOpen) => { + this.socket.addEventListener('open', resolveOpen, { once: true }) + this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) + }) + this.socket.addEventListener('message', (event) => { + const message = JSON.parse(String(event.data)) + if (!message.id) return + const pending = this.pending.get(message.id) + if (!pending) return + this.pending.delete(message.id) + if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)) + else pending.resolve(message.result) + }) + } + send(method, params = {}, sessionId) { + const id = ++this.sequence + return new Promise((resolveMessage, rejectMessage) => { + this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }) + this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) + }) + } + close() { this.socket.close() } +} + +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { + const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId) + if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.') + return result.result?.value + } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-camotics-wasm-harness.html` }, sessionId) + const deadline = Date.now() + 60_000 + while (Date.now() < deadline) { + report = await evaluate('window.__bitbybitCamoticsWasmReport || null') + if (report) break + await new Promise((resolveWait) => setTimeout(resolveWait, 200)) + } + if (!report) throw new Error('Chrome CAMotics WASM harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.error(JSON.stringify(report, null, 2)) + process.exitCode = 1 +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(profile) +} diff --git a/scripts/run-chrome-data.mjs b/scripts/run-chrome-data.mjs new file mode 100644 index 0000000..293df08 --- /dev/null +++ b/scripts/run-chrome-data.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-data-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Data harness server did not expose a port.'); const profile = await createChromeProfile('data'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-data-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitDataReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Data harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-draft.mjs b/scripts/run-chrome-draft.mjs new file mode 100644 index 0000000..a831531 --- /dev/null +++ b/scripts/run-chrome-draft.mjs @@ -0,0 +1,38 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-draft-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Draft harness server did not expose a port.') +const profile = await createChromeProfile('draft') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-draft-harness.html` }, sessionId) + const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitDraftReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Draft harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 +} finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-engineering.mjs b/scripts/run-chrome-engineering.mjs new file mode 100644 index 0000000..45a2490 --- /dev/null +++ b/scripts/run-chrome-engineering.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-engineering-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Engineering harness server did not expose a port.'); const profile = await createChromeProfile('engineering'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-engineering-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitEngineeringReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Engineering harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-fault-injection.mjs b/scripts/run-chrome-fault-injection.mjs new file mode 100644 index 0000000..12b0594 --- /dev/null +++ b/scripts/run-chrome-fault-injection.mjs @@ -0,0 +1,70 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-fault-injection-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__chrome-fault-injection-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-fault-injection-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-fault-injection-harness.html'))); return } + if (request.url?.startsWith('/native/planegcs/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['freecad-planegcs.js', 'freecad-planegcs.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'public/native/planegcs', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + response.end(await readFile(file)) + return + } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'public/native/occt-history', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + response.end(await readFile(file)) + return + } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const profile = await createChromeProfile('fault-injection') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${profile}`, `http://127.0.0.1:${port}/chrome-fault-injection-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(profile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-fcstd-golden.mjs b/scripts/run-chrome-fcstd-golden.mjs new file mode 100644 index 0000000..fbb5f4f --- /dev/null +++ b/scripts/run-chrome-fcstd-golden.mjs @@ -0,0 +1,74 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-fcstd-golden-verification.json') +const chromeExecutable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(chromeExecutable)) throw new Error(`Chrome executable is unavailable: ${chromeExecutable}`) + +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Vite FCStd golden harness server did not expose a port.') +const url = `http://127.0.0.1:${address.port}/chrome-fcstd-golden-harness.html` +const chromeProfile = await createChromeProfile('fcstd-golden') + +const chrome = spawn(chromeExecutable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${chromeProfile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { + stderr += String(chunk) + const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/) + if (!match) return + clearTimeout(timer) + resolveDebugger(match[1]) + }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) + +class CdpClient { + constructor(debuggerSocket) { this.socket = new WebSocket(debuggerSocket); this.sequence = 0; this.pending = new Map(); this.listeners = new Set() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (message.id) { const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result); return } for (const listener of this.listeners) listener(message) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} + +const client = new CdpClient(debuggerUrl) +let report +const pageErrors = [] +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId), client.send('Log.enable', {}, sessionId)]) + client.listeners.add((message) => { if (message.sessionId !== sessionId) return; if (message.method === 'Runtime.exceptionThrown') pageErrors.push(message.params?.exceptionDetails?.text || 'Uncaught exception'); if (message.method === 'Runtime.consoleAPICalled' && message.params?.type === 'error') pageErrors.push('console.error'); if (message.method === 'Log.entryAdded' && message.params?.entry?.level === 'error') pageErrors.push(message.params.entry.text || 'Chrome log error') }) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url }, sessionId) + const deadline = Date.now() + 600_000 + while (Date.now() < deadline) { + report = await evaluate('window.__bitbybitFcstdGoldenReport || null') + if (report) break + await new Promise((resolveWait) => setTimeout(resolveWait, 500)) + } + if (!report) throw new Error('Chrome FCStd golden harness timed out.') + if (pageErrors.length > 0) throw new Error(`Chrome FCStd golden page errors: ${pageErrors.join(' | ')}`) + if (report.status !== 'pass') throw new Error(report.error || 'Chrome FCStd golden harness failed.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent }, pageErrors } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify({ status: 'chrome-fcstd-golden-pass', scenarioCount: report.scenarioCount, summary: report.summary, afterRelease: report.afterRelease, browser: version.product }, null, 2)) +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(chromeProfile) +} diff --git a/scripts/run-chrome-fcstd-roundtrip.mjs b/scripts/run-chrome-fcstd-roundtrip.mjs new file mode 100644 index 0000000..4102061 --- /dev/null +++ b/scripts/run-chrome-fcstd-roundtrip.mjs @@ -0,0 +1,32 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-fcstd-roundtrip-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('FCStd round-trip server did not expose a port.') +const profile = await createChromeProfile('fcstd-roundtrip') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-fcstd-roundtrip-harness.html` }, sessionId) + const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitFcstdRoundTripReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome FCStd round-trip harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-fcstd-semantic.mjs b/scripts/run-chrome-fcstd-semantic.mjs new file mode 100644 index 0000000..cb12b72 --- /dev/null +++ b/scripts/run-chrome-fcstd-semantic.mjs @@ -0,0 +1,20 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-fcstd-semantic-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Vite FCStd semantic harness server did not expose a port.') +const url = `http://127.0.0.1:${address.port}/chrome-fcstd-semantic-harness.html`; const chromeProfile = await createChromeProfile('fcstd-semantic') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--remote-debugging-port=0', `--user-data-dir=${chromeProfile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl); let report +try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitFcstdSemanticReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } if (!report) throw new Error('Chrome FCStd semantic harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') throw new Error(report.error || 'Chrome FCStd semantic harness failed.') } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(chromeProfile) } diff --git a/scripts/run-chrome-fem.mjs b/scripts/run-chrome-fem.mjs new file mode 100644 index 0000000..ffbd342 --- /dev/null +++ b/scripts/run-chrome-fem.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-fem-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('FEM harness server did not expose a port.'); const profile = await createChromeProfile('fem'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-fem-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitFemReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome FEM harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-geometry-features.mjs b/scripts/run-chrome-geometry-features.mjs new file mode 100644 index 0000000..2506b76 --- /dev/null +++ b/scripts/run-chrome-geometry-features.mjs @@ -0,0 +1,70 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-geometry-features-verification.json') +const chromeExecutable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(chromeExecutable)) throw new Error(`Chrome executable is unavailable: ${chromeExecutable}`) + +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Vite geometry harness server did not expose a port.') +const url = `http://127.0.0.1:${address.port}/chrome-geometry-feature-harness.html` +const chromeProfile = await createChromeProfile('geometry-features') + +const chrome = spawn(chromeExecutable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${chromeProfile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { + stderr += String(chunk) + const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/) + if (!match) return + clearTimeout(timer) + resolveDebugger(match[1]) + }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) + +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map(); this.listeners = new Set() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (message.id) { const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result); return } for (const listener of this.listeners) listener(message) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} + +const client = new CdpClient(debuggerUrl) +let report +let pageErrors = [] +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId), client.send('Log.enable', {}, sessionId)]) + client.listeners.add((message) => { if (message.sessionId !== sessionId) return; if (message.method === 'Runtime.exceptionThrown') pageErrors.push(message.params?.exceptionDetails?.text || 'Uncaught exception'); if (message.method === 'Runtime.consoleAPICalled' && message.params?.type === 'error') pageErrors.push('console.error'); if (message.method === 'Log.entryAdded' && message.params?.entry?.level === 'error') pageErrors.push(message.params.entry.text || 'Chrome log error') }) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url }, sessionId) + const deadline = Date.now() + 180_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitGeometryFeatureReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome geometry feature harness timed out.') + if (pageErrors.length > 0) throw new Error(`Chrome geometry feature page errors: ${pageErrors.join(' | ')}`) + if (report.status !== 'pass') throw new Error(report.error || 'Chrome geometry feature harness failed.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent }, pageErrors } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(chromeProfile) +} diff --git a/scripts/run-chrome-inspection.mjs b/scripts/run-chrome-inspection.mjs new file mode 100644 index 0000000..bca0fed --- /dev/null +++ b/scripts/run-chrome-inspection.mjs @@ -0,0 +1,13 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-inspection-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Inspection harness server did not expose a port.') +const profile = await createChromeProfile('inspection'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl); let report +try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-inspection-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitInspectionReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Inspection harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-mesh.mjs b/scripts/run-chrome-mesh.mjs new file mode 100644 index 0000000..783342e --- /dev/null +++ b/scripts/run-chrome-mesh.mjs @@ -0,0 +1,13 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-mesh-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Mesh harness server did not expose a port.') +const profile = await createChromeProfile('mesh'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl); let report +try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-mesh-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitMeshReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Mesh harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-native-chamfer-history.mjs b/scripts/run-chrome-native-chamfer-history.mjs new file mode 100644 index 0000000..a8801fe --- /dev/null +++ b/scripts/run-chrome-native-chamfer-history.mjs @@ -0,0 +1,25 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-chamfer-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort; try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-chamfer-history-report') { let body = ''; request.setEncoding('utf8'); request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-chamfer-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-chamfer-history-harness.html'))); return } + if (request.url?.startsWith('/native/occt-history/')) { const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return }; const file = resolve(root, 'native/occt-history/dist', fileName); if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return }; response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port; const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-chamfer-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-chamfer-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(chromeProfile); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exit(1) diff --git a/scripts/run-chrome-native-draft-history.mjs b/scripts/run-chrome-native-draft-history.mjs new file mode 100644 index 0000000..4700a37 --- /dev/null +++ b/scripts/run-chrome-native-draft-history.mjs @@ -0,0 +1,26 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-draft-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort; try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-draft-history-report') { let body = ''; request.setEncoding('utf8'); request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-draft-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-draft-history-harness.html'))); return } + if (request.url?.startsWith('/native/occt-history/')) { const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return }; const file = resolve(root, 'native/occt-history/dist', fileName); if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return }; response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port; const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-draft-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-draft-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(chromeProfile); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-native-fillet-history.mjs b/scripts/run-chrome-native-fillet-history.mjs new file mode 100644 index 0000000..010bce2 --- /dev/null +++ b/scripts/run-chrome-native-fillet-history.mjs @@ -0,0 +1,58 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-fillet-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-fillet-history-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-native-fillet-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-fillet-history-harness.html'))); return } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'native/occt-history/dist', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.end(await readFile(file)) + return + } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-fillet-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-fillet-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) diff --git a/scripts/run-chrome-native-groove-history.mjs b/scripts/run-chrome-native-groove-history.mjs new file mode 100644 index 0000000..e4f401b --- /dev/null +++ b/scripts/run-chrome-native-groove-history.mjs @@ -0,0 +1,65 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import createOcctHistory from '../native/occt-history/dist/bitbybit-occt-history.js' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-groove-history-verification.json') +const occt = await createOcctHistory() +const baseStep = occt.shapeToStep(occt.makeBoxPlaced(10, 10, 8, -5, 0, -4)) +const profileStep = occt.shapeToStep(occt.makeRectangleFacePlaced(1, 3, 0.5, 2, 0)) +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-groove-history-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-native-groove-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-groove-history-harness.html'))); return } + if (request.url === '/native-groove-base.step') { response.setHeader('content-type', 'application/step'); response.end(baseStep); return } + if (request.url === '/native-groove-profile.step') { response.setHeader('content-type', 'application/step'); response.end(profileStep); return } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'native/occt-history/dist', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.end(await readFile(file)) + return + } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-groove-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-groove-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-native-history.mjs b/scripts/run-chrome-native-history.mjs new file mode 100644 index 0000000..5546988 --- /dev/null +++ b/scripts/run-chrome-native-history.mjs @@ -0,0 +1,60 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-history-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const bytes = await readFile(resolve(root, 'native/occt-history/dist', fileName)) + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + response.writeHead(200) + response.end(bytes) + return + } + if (request.url === '/chrome-native-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-history-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const profile = await createChromeProfile('native-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${profile}`, `http://127.0.0.1:${port}/chrome-native-history-harness.html`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(profile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-native-hole-history.mjs b/scripts/run-chrome-native-hole-history.mjs new file mode 100644 index 0000000..55b1ba7 --- /dev/null +++ b/scripts/run-chrome-native-hole-history.mjs @@ -0,0 +1,12 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-native-hole-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }); let vitePort; try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin'); if (request.method === 'POST' && request.url === '/__native-hole-history-report') { let body = ''; request.setEncoding('utf8'); request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return }; if (request.url === '/chrome-native-hole-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-hole-history-harness.html'))); return }; if (request.url?.startsWith('/native/occt-history/')) { const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return }; const file = resolve(root, 'native/occt-history/dist', fileName); if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return }; response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return }; try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } }) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)); const port = server.address().port; const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`); const chromeProfile = await createChromeProfile('native-hole-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-hole-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }); const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(chromeProfile); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exit(1) diff --git a/scripts/run-chrome-native-linear-pattern-history.mjs b/scripts/run-chrome-native-linear-pattern-history.mjs new file mode 100644 index 0000000..8f32239 --- /dev/null +++ b/scripts/run-chrome-native-linear-pattern-history.mjs @@ -0,0 +1,2 @@ +import {createServer} from 'node:http'; import {existsSync} from 'node:fs'; import {readFile,writeFile} from 'node:fs/promises'; import {basename,resolve} from 'node:path'; import {spawn} from 'node:child_process'; import {createChromeProfile,removeChromeProfile} from './chrome-profile.mjs' +const root=resolve(new URL('..',import.meta.url).pathname), reportPath=resolve(root,'config/chrome-native-linear-pattern-history-verification.json'); const waitForPort=child=>new Promise((ok,no)=>{let out='';const timer=setTimeout(()=>no(new Error(out)),30000);const data=c=>{out+=String(c);const m=out.match(/http:\/\/127\.0\.0\.1:(\d+)/);if(m){clearTimeout(timer);ok(Number(m[1]))}};child.stdout.on('data',data);child.stderr.on('data',data)}); const vite=spawn('./nodew',['node_modules/vite/bin/vite.js','--host','127.0.0.1'],{cwd:root,stdio:['ignore','pipe','pipe']}); const vitePort=await waitForPort(vite); let resolveReport; const reportPromise=new Promise(r=>{resolveReport=r}); const server=createServer(async(req,res)=>{res.setHeader('Cross-Origin-Opener-Policy','same-origin');res.setHeader('Cross-Origin-Embedder-Policy','require-corp');res.setHeader('Cross-Origin-Resource-Policy','same-origin');if(req.method==='POST'&&req.url==='/__native-linear-pattern-history-report'){let body='';req.on('data',c=>body+=String(c));req.on('end',async()=>{const report=JSON.parse(body);await writeFile(reportPath,JSON.stringify(report,null,2)+'\n');resolveReport(report);res.writeHead(204);res.end()});return}if(req.url==='/chrome-native-linear-pattern-history-harness.html'){res.end(await readFile(resolve(root,'public/chrome-native-linear-pattern-history-harness.html')));return}if(req.url?.startsWith('/native/occt-history/')){const name=basename(new URL(req.url,'http://x').pathname),file=resolve(root,'native/occt-history/dist',name);if(!['bitbybit-occt-history.js','bitbybit-occt-history.wasm'].includes(name)||!existsSync(file)){res.writeHead(404);res.end();return}res.setHeader('content-type',name.endsWith('.wasm')?'application/wasm':'text/javascript');res.end(await readFile(file));return}const upstream=await fetch(`http://127.0.0.1:${vitePort}${req.url}`);res.writeHead(upstream.status,Object.fromEntries(upstream.headers.entries()));res.end(Buffer.from(await upstream.arrayBuffer()))}); await new Promise(r=>server.listen(0,'127.0.0.1',r)); const executable=process.env.CHROME_BIN||'/home/mes123456/.local/bin/google-chrome',profile=await createChromeProfile('native-linear-pattern-history'),chrome=spawn(executable,['--headless=new','--no-sandbox','--disable-gpu','--disable-dev-shm-usage',`--user-data-dir=${profile}`,`http://127.0.0.1:${server.address().port}/chrome-native-linear-pattern-history-harness.html`],{stdio:'ignore'}); const report=await Promise.race([reportPromise,new Promise(r=>setTimeout(()=>r({status:'timeout'}),180000))]);chrome.kill('SIGTERM');vite.kill('SIGTERM');server.closeAllConnections?.();server.close();await removeChromeProfile(profile);console.log(JSON.stringify(report,null,2));process.exit(report.status==='pass'?0:1) diff --git a/scripts/run-chrome-native-loft-history.mjs b/scripts/run-chrome-native-loft-history.mjs new file mode 100644 index 0000000..016fe77 --- /dev/null +++ b/scripts/run-chrome-native-loft-history.mjs @@ -0,0 +1,27 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import createOcctHistory from '../native/occt-history/dist/bitbybit-occt-history.js' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-loft-history-verification.json') +const occt = await createOcctHistory() +const firstStep = occt.shapeToStep(occt.makeRectangleFacePlaced(2, 2, 0, 0, 0)) +const secondStep = occt.shapeToStep(occt.makeRectangleFacePlaced(2, 2, 0, 0, 5)) +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(output)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }); const vitePort = await waitForPort(vite) +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-loft-history-report') { let body = ''; request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-loft-history-harness.html') { response.end(await readFile(resolve(root, 'public/chrome-native-loft-history-harness.html'))); return } + if (request.url === '/native-loft-first.step') { response.setHeader('content-type', 'application/step'); response.end(firstStep); return } + if (request.url === '/native-loft-second.step') { response.setHeader('content-type', 'application/step'); response.end(secondStep); return } + if (request.url?.startsWith('/native/occt-history/')) { const name = basename(new URL(request.url, 'http://x').pathname); const file = resolve(root, 'native/occt-history/dist', name); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(name) || !existsSync(file)) { response.writeHead(404); response.end(); return }; response.setHeader('content-type', name.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; const profile = await createChromeProfile('native-loft-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', `--user-data-dir=${profile}`, `http://127.0.0.1:${server.address().port}/chrome-native-loft-history-harness.html`], { stdio: 'ignore' }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(profile); console.log(JSON.stringify(report, null, 2)); process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-native-mirrored-history.mjs b/scripts/run-chrome-native-mirrored-history.mjs new file mode 100644 index 0000000..d2d20b3 --- /dev/null +++ b/scripts/run-chrome-native-mirrored-history.mjs @@ -0,0 +1,22 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-mirrored-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(output)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +const vitePort = await waitForPort(vite) +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-mirrored-history-report') { let body = ''; request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-mirrored-history-harness.html') { response.end(await readFile(resolve(root, 'public/chrome-native-mirrored-history-harness.html'))); return } + if (request.url?.startsWith('/native/occt-history/')) { const name = basename(new URL(request.url, 'http://x').pathname); const file = resolve(root, 'native/occt-history/dist', name); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(name) || !existsSync(file)) { response.writeHead(404); response.end(); return }; response.setHeader('content-type', name.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; const profile = await createChromeProfile('native-mirrored-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', `--user-data-dir=${profile}`, `http://127.0.0.1:${server.address().port}/chrome-native-mirrored-history-harness.html`], { stdio: 'ignore' }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(profile); console.log(JSON.stringify(report, null, 2)); process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-native-multi-transform-history.mjs b/scripts/run-chrome-native-multi-transform-history.mjs new file mode 100644 index 0000000..1ca7f77 --- /dev/null +++ b/scripts/run-chrome-native-multi-transform-history.mjs @@ -0,0 +1,22 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-multi-transform-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(output)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +const vitePort = await waitForPort(vite) +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-multi-transform-history-report') { let body = ''; request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-multi-transform-history-harness.html') { response.end(await readFile(resolve(root, 'public/chrome-native-multi-transform-history-harness.html'))); return } + if (request.url?.startsWith('/native/occt-history/')) { const name = basename(new URL(request.url, 'http://x').pathname); const file = resolve(root, 'native/occt-history/dist', name); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(name) || !existsSync(file)) { response.writeHead(404); response.end(); return }; response.setHeader('content-type', name.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; const profile = await createChromeProfile('native-multi-transform-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', `--user-data-dir=${profile}`, `http://127.0.0.1:${server.address().port}/chrome-native-multi-transform-history-harness.html`], { stdio: 'ignore' }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(profile); console.log(JSON.stringify(report, null, 2)); process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-native-pad-history.mjs b/scripts/run-chrome-native-pad-history.mjs new file mode 100644 index 0000000..29dd6af --- /dev/null +++ b/scripts/run-chrome-native-pad-history.mjs @@ -0,0 +1,64 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import createOcctHistory from '../native/occt-history/dist/bitbybit-occt-history.js' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-pad-history-verification.json') +const occt = await createOcctHistory() +const profile = occt.makeRectangleFace(2, 3) +const profileStep = occt.shapeToStep(profile) +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-pad-history-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-native-pad-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-pad-history-harness.html'))); return } + if (request.url === '/native-pad-profile.step') { response.setHeader('content-type', 'application/step'); response.end(profileStep); return } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'native/occt-history/dist', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.end(await readFile(file)) + return + } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-pad-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-pad-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-native-pipe-history.mjs b/scripts/run-chrome-native-pipe-history.mjs new file mode 100644 index 0000000..a404b0f --- /dev/null +++ b/scripts/run-chrome-native-pipe-history.mjs @@ -0,0 +1,27 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import createOcctHistory from '../native/occt-history/dist/bitbybit-occt-history.js' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-pipe-history-verification.json') +const occt = await createOcctHistory() +const profileStep = occt.shapeToStep(occt.makeRectangleFace(2, 2)) +const spineStep = occt.shapeToStep(occt.makeLineWire(0, 0, 0, 0, 0, 5)) +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(output)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }); const vitePort = await waitForPort(vite) +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-pipe-history-report') { let body = ''; request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-pipe-history-harness.html') { response.end(await readFile(resolve(root, 'public/chrome-native-pipe-history-harness.html'))); return } + if (request.url === '/native-pipe-profile.step') { response.setHeader('content-type', 'application/step'); response.end(profileStep); return } + if (request.url === '/native-pipe-spine.step') { response.setHeader('content-type', 'application/step'); response.end(spineStep); return } + if (request.url?.startsWith('/native/occt-history/')) { const name = basename(new URL(request.url, 'http://x').pathname); const file = resolve(root, 'native/occt-history/dist', name); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(name) || !existsSync(file)) { response.writeHead(404); response.end(); return }; response.setHeader('content-type', name.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; const profile = await createChromeProfile('native-pipe-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', `--user-data-dir=${profile}`, `http://127.0.0.1:${server.address().port}/chrome-native-pipe-history-harness.html`], { stdio: 'ignore' }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(profile); console.log(JSON.stringify(report, null, 2)); process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-native-pocket-history.mjs b/scripts/run-chrome-native-pocket-history.mjs new file mode 100644 index 0000000..fe28f3e --- /dev/null +++ b/scripts/run-chrome-native-pocket-history.mjs @@ -0,0 +1,65 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import createOcctHistory from '../native/occt-history/dist/bitbybit-occt-history.js' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-pocket-history-verification.json') +const occt = await createOcctHistory() +const baseStep = occt.shapeToStep(occt.makeBox(10, 10, 10)) +const profileStep = occt.shapeToStep(occt.makeRectangleFace(2, 3)) +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-pocket-history-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-native-pocket-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-pocket-history-harness.html'))); return } + if (request.url === '/native-pocket-base.step') { response.setHeader('content-type', 'application/step'); response.end(baseStep); return } + if (request.url === '/native-pocket-profile.step') { response.setHeader('content-type', 'application/step'); response.end(profileStep); return } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'native/occt-history/dist', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.end(await readFile(file)) + return + } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-pocket-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-pocket-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-native-polar-pattern-history.mjs b/scripts/run-chrome-native-polar-pattern-history.mjs new file mode 100644 index 0000000..3d49c7e --- /dev/null +++ b/scripts/run-chrome-native-polar-pattern-history.mjs @@ -0,0 +1,22 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-polar-pattern-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(output)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +const vitePort = await waitForPort(vite) +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-polar-pattern-history-report') { let body = ''; request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } + if (request.url === '/chrome-native-polar-pattern-history-harness.html') { response.end(await readFile(resolve(root, 'public/chrome-native-polar-pattern-history-harness.html'))); return } + if (request.url?.startsWith('/native/occt-history/')) { const name = basename(new URL(request.url, 'http://x').pathname); const file = resolve(root, 'native/occt-history/dist', name); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(name) || !existsSync(file)) { response.writeHead(404); response.end(); return }; response.setHeader('content-type', name.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; const profile = await createChromeProfile('native-polar-pattern-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', `--user-data-dir=${profile}`, `http://127.0.0.1:${server.address().port}/chrome-native-polar-pattern-history-harness.html`], { stdio: 'ignore' }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(profile); console.log(JSON.stringify(report, null, 2)); process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-native-revolution-history.mjs b/scripts/run-chrome-native-revolution-history.mjs new file mode 100644 index 0000000..aa574b6 --- /dev/null +++ b/scripts/run-chrome-native-revolution-history.mjs @@ -0,0 +1,63 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { basename, resolve } from 'node:path' +import { spawn } from 'node:child_process' +import createOcctHistory from '../native/occt-history/dist/bitbybit-occt-history.js' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-native-revolution-history-verification.json') +const occt = await createOcctHistory() +const profileStep = occt.shapeToStep(occt.makeRectangleFace(2, 3)) +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__native-revolution-history-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-native-revolution-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-revolution-history-harness.html'))); return } + if (request.url === '/native-revolution-profile.step') { response.setHeader('content-type', 'application/step'); response.end(profileStep); return } + if (request.url?.startsWith('/native/occt-history/')) { + const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname) + if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName)) { response.writeHead(404); response.end('not found'); return } + const file = resolve(root, 'native/occt-history/dist', fileName) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.end(await readFile(file)) + return + } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('native-revolution-history') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-native-revolution-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-native-thickness-history.mjs b/scripts/run-chrome-native-thickness-history.mjs new file mode 100644 index 0000000..9ff29aa --- /dev/null +++ b/scripts/run-chrome-native-thickness-history.mjs @@ -0,0 +1,6 @@ +import { createServer } from 'node:http'; import { existsSync } from 'node:fs'; import { readFile, writeFile } from 'node:fs/promises'; import { basename, resolve } from 'node:path'; import { spawn } from 'node:child_process'; import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-native-thickness-history-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { let output = ''; const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000); const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } }; child.stdout.on('data', onData); child.stderr.on('data', onData) }) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }); let vitePort; try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport; const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }); const server = createServer(async (request, response) => { response.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); response.setHeader('Cross-Origin-Resource-Policy', 'same-origin'); if (request.method === 'POST' && request.url === '/__native-thickness-history-report') { let body = ''; request.setEncoding('utf8'); request.on('data', (chunk) => { body += String(chunk) }); request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }); return } if (request.url === '/chrome-native-thickness-history-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-native-thickness-history-harness.html'))); return } if (request.url?.startsWith('/native/occt-history/')) { const fileName = basename(new URL(request.url, 'http://127.0.0.1').pathname); const file = resolve(root, 'native/occt-history/dist', fileName); if (!['bitbybit-occt-history.js', 'bitbybit-occt-history.wasm'].includes(fileName) || !existsSync(file)) { response.writeHead(404); response.end('not found'); return } response.setHeader('content-type', fileName.endsWith('.wasm') ? 'application/wasm' : 'text/javascript'); response.end(await readFile(file)); return } try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } }) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)); const port = server.address().port; const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`); const profile = await createChromeProfile('native-thickness-history'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${profile}`, `http://127.0.0.1:${port}/chrome-native-thickness-history-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }); const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]); chrome.kill('SIGTERM'); vite.kill('SIGTERM'); server.closeAllConnections?.(); server.close(); await removeChromeProfile(profile); console.log(JSON.stringify(report, null, 2)); process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-offline.mjs b/scripts/run-chrome-offline.mjs new file mode 100644 index 0000000..a45fc68 --- /dev/null +++ b/scripts/run-chrome-offline.mjs @@ -0,0 +1,41 @@ +import { mkdir, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-offline-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +let offline = false +const offlinePlugin = { name: 'rel01-offline-test-control', configureServer(server) { server.middlewares.use((request, response, next) => { if (request.url === '/__offline-toggle' && request.method === 'POST') { offline = true; response.statusCode = 204; response.end(); return } if (offline && request.url === '/offline-probe.txt') { request.socket.destroy(); return } next() }) } } +const vite = await createViteServer({ root, plugins: [offlinePlugin], server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Offline harness server did not expose a port.') +const profile = await createChromeProfile('offline') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-offline-harness.html` }, sessionId) + const deadline = Date.now() + 120_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitOfflineReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome offline harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-opfs-migration.mjs b/scripts/run-chrome-opfs-migration.mjs new file mode 100644 index 0000000..5761d05 --- /dev/null +++ b/scripts/run-chrome-opfs-migration.mjs @@ -0,0 +1,50 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-opfs-migration-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__opfs-migration-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-opfs-migration-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-opfs-migration-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const profile = await createChromeProfile('opfs-migration') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${profile}`, `http://127.0.0.1:${port}/chrome-opfs-migration-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(profile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-part-primitives.mjs b/scripts/run-chrome-part-primitives.mjs new file mode 100644 index 0000000..46d077a --- /dev/null +++ b/scripts/run-chrome-part-primitives.mjs @@ -0,0 +1,54 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-part-primitives-verification.json') +const chromeExecutable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(chromeExecutable)) throw new Error(`Chrome executable is unavailable: ${chromeExecutable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Vite Part primitive harness server did not expose a port.') +const url = `http://127.0.0.1:${address.port}/chrome-part-primitives-harness.html` +const chromeProfile = await createChromeProfile('part-primitives') +const chrome = spawn(chromeExecutable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${chromeProfile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map(); this.listeners = new Set() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (message.id) { const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result); return } for (const listener of this.listeners) listener(message) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url }, sessionId) + const deadline = Date.now() + 120_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitPartPrimitiveReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome Part primitive harness timed out.') + if (report.status !== 'pass') throw new Error(report.error || 'Chrome Part primitive harness failed.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) +} finally { + client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(chromeProfile) +} diff --git a/scripts/run-chrome-partdesign-lifecycle.mjs b/scripts/run-chrome-partdesign-lifecycle.mjs new file mode 100644 index 0000000..bf0d771 --- /dev/null +++ b/scripts/run-chrome-partdesign-lifecycle.mjs @@ -0,0 +1,72 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-partdesign-lifecycle-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { + output += String(chunk) + const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/) + if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } + } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) + +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__partdesign-lifecycle-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { + const report = JSON.parse(body) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + resolveReport(report) + response.writeHead(204) + response.end() + }) + return + } + if (request.url?.startsWith('/chrome-partdesign-lifecycle-harness.html')) { + response.setHeader('content-type', 'text/html; charset=utf-8') + response.end(await readFile(resolve(root, 'public/chrome-partdesign-lifecycle-harness.html'))) + return + } + try { + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }) + response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())) + response.end(Buffer.from(await upstream.arrayBuffer())) + } catch (error) { + response.writeHead(502) + response.end(String(error)) + } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const profile = await createChromeProfile('partdesign-lifecycle') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${profile}`, `http://127.0.0.1:${port}/chrome-partdesign-lifecycle-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(profile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) +process.exit(0) diff --git a/scripts/run-chrome-partdesign-loft.mjs b/scripts/run-chrome-partdesign-loft.mjs new file mode 100644 index 0000000..e707da2 --- /dev/null +++ b/scripts/run-chrome-partdesign-loft.mjs @@ -0,0 +1,59 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-partdesign-loft-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('PartDesign loft harness server did not expose a port.') +const profile = await createChromeProfile('partdesign-loft') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-partdesign-loft-harness.html` }, sessionId) + const deadline = Date.now() + 180_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitPartdesignLoftReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome PartDesign loft harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.error(JSON.stringify(report, null, 2)) + process.exitCode = 1 +} finally { + client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) +} diff --git a/scripts/run-chrome-partdesign-transform.mjs b/scripts/run-chrome-partdesign-transform.mjs new file mode 100644 index 0000000..352797e --- /dev/null +++ b/scripts/run-chrome-partdesign-transform.mjs @@ -0,0 +1,65 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-partdesign-transform-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) + +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('PartDesign transform harness server did not expose a port.') +const profile = await createChromeProfile('partdesign-transform') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) + +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} + +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-partdesign-transform-harness.html` }, sessionId) + const deadline = Date.now() + 180_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitPartdesignTransformReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome PartDesign transform harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.error(JSON.stringify(report, null, 2)) + process.exitCode = 1 +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(profile) +} diff --git a/scripts/run-chrome-performance.mjs b/scripts/run-chrome-performance.mjs new file mode 100644 index 0000000..7273dbf --- /dev/null +++ b/scripts/run-chrome-performance.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-performance-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Performance harness server did not expose a port.'); const profile = await createChromeProfile('performance'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-performance-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitPerformanceReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Performance harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-persistence-harness.mjs b/scripts/run-chrome-persistence-harness.mjs new file mode 100644 index 0000000..056658a --- /dev/null +++ b/scripts/run-chrome-persistence-harness.mjs @@ -0,0 +1,53 @@ +import { createServer } from 'node:http' +import { existsSync } from 'node:fs' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-persistence-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__persistence-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-persistence-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-persistence-harness.html'))); return } + try { + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }) + response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())) + response.end(Buffer.from(await upstream.arrayBuffer())) + } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('persistence') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-persistence-harness.html`], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) diff --git a/scripts/run-chrome-planegcs-harness.mjs b/scripts/run-chrome-planegcs-harness.mjs new file mode 100644 index 0000000..ed9dfab --- /dev/null +++ b/scripts/run-chrome-planegcs-harness.mjs @@ -0,0 +1,83 @@ +import { existsSync } from 'node:fs' +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { + output += String(chunk) + const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/) + if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } + } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) + +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +let rejectReport +const reportPromise = new Promise((resolveValue, rejectValue) => { resolveReport = resolveValue; rejectReport = rejectValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__planegcs-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', () => { + try { resolveReport(JSON.parse(body)); response.writeHead(204); response.end() } + catch (error) { rejectReport(error); response.writeHead(400); response.end(String(error)) } + }) + return + } + if (request.url === '/planegcs-browser-harness.html') { + response.setHeader('content-type', 'text/html') + response.end(await readFile(resolve(root, 'public/planegcs-browser-harness.html'))) + return + } + const pathname = decodeURIComponent((request.url || '/').split('?')[0]) + if (pathname === '/native/planegcs/freecad-planegcs.js' || pathname === '/native/planegcs/freecad-planegcs.wasm') { + const file = resolve(root, `public${pathname}`) + if (!existsSync(file)) { response.writeHead(404); response.end('not found'); return } + response.setHeader('content-type', pathname.endsWith('.wasm') ? 'application/wasm' : 'text/javascript') + response.end(await readFile(file)) + return + } + try { + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }) + response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())) + response.end(Buffer.from(await upstream.arrayBuffer())) + } catch (error) { + response.writeHead(502) + response.end(String(error)) + } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable not found: ${executable}`) +const chromeProfile = await createChromeProfile('planegcs') +const child = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/planegcs-browser-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let stderr = '' +child.stderr.on('data', (chunk) => { stderr += String(chunk) }) +const timeout = setTimeout(() => rejectReport(new Error(`Chrome planegcs harness timed out. ${stderr.slice(-2000)}`)), 120_000) +try { + const report = await reportPromise + await writeFile(resolve(root, 'config/chrome-planegcs-verification.json'), `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} finally { + clearTimeout(timeout) + child.kill('SIGTERM') + vite.kill('SIGTERM') + await new Promise((resolveClose) => server.close(resolveClose)) + await removeChromeProfile(chromeProfile) +} diff --git a/scripts/run-chrome-plot.mjs b/scripts/run-chrome-plot.mjs new file mode 100644 index 0000000..f6c2baa --- /dev/null +++ b/scripts/run-chrome-plot.mjs @@ -0,0 +1,62 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-plot-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Plot harness server did not expose a port.') +const profile = await createChromeProfile('plot') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-plot-harness.html` }, sessionId) + const deadline = Date.now() + 120_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitPlotReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome Plot harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.error(JSON.stringify(report, null, 2)) + process.exitCode = 1 +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(profile) +} diff --git a/scripts/run-chrome-production-document.mjs b/scripts/run-chrome-production-document.mjs new file mode 100644 index 0000000..94b397c --- /dev/null +++ b/scripts/run-chrome-production-document.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-production-document-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Production document harness server did not expose a port.'); const profile = await createChromeProfile('production-document'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-production-document-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitProductionReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Production Document harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-profile-validation.mjs b/scripts/run-chrome-profile-validation.mjs new file mode 100644 index 0000000..6d2eda4 --- /dev/null +++ b/scripts/run-chrome-profile-validation.mjs @@ -0,0 +1,49 @@ +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-profile-validation-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__chrome-profile-validation-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-profile-validation-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-profile-validation-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('profile-validation') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-profile-validation-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 120_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-qa08.mjs b/scripts/run-chrome-qa08.mjs new file mode 100644 index 0000000..d4a8547 --- /dev/null +++ b/scripts/run-chrome-qa08.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-qa08-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('QA-08 harness server did not expose a port.'); const profile = await createChromeProfile('qa08'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-qa08-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitQa08Report || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome QA-08 harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-robot.mjs b/scripts/run-chrome-robot.mjs new file mode 100644 index 0000000..d5898ff --- /dev/null +++ b/scripts/run-chrome-robot.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-robot-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Robot harness server did not expose a port.'); const profile = await createChromeProfile('robot'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-robot-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitRobotReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Robot harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-script.mjs b/scripts/run-chrome-script.mjs new file mode 100644 index 0000000..90004f2 --- /dev/null +++ b/scripts/run-chrome-script.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-script-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Script harness server did not expose a port.'); const profile = await createChromeProfile('script'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-script-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitScriptReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Script harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-secondary-formats.mjs b/scripts/run-chrome-secondary-formats.mjs new file mode 100644 index 0000000..c7f9401 --- /dev/null +++ b/scripts/run-chrome-secondary-formats.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-secondary-formats-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Secondary format harness server did not expose a port.'); const profile = await createChromeProfile('secondary-formats'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-secondary-formats-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitSecondaryReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Secondary Formats harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-security.mjs b/scripts/run-chrome-security.mjs new file mode 100644 index 0000000..0df0033 --- /dev/null +++ b/scripts/run-chrome-security.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-security-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Security harness server did not expose a port.'); const profile = await createChromeProfile('security'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-security-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitSecurityReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Security harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-sketcher-bspline.mjs b/scripts/run-chrome-sketcher-bspline.mjs new file mode 100644 index 0000000..2eab654 --- /dev/null +++ b/scripts/run-chrome-sketcher-bspline.mjs @@ -0,0 +1,49 @@ +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-sketcher-bspline-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__chrome-sketcher-bspline-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-sketcher-bspline-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-sketcher-bspline-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('sketcher-bspline') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-sketcher-bspline-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 120_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-sketcher-diagnostics.mjs b/scripts/run-chrome-sketcher-diagnostics.mjs new file mode 100644 index 0000000..0207d90 --- /dev/null +++ b/scripts/run-chrome-sketcher-diagnostics.mjs @@ -0,0 +1,49 @@ +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-sketcher-diagnostics-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__chrome-sketcher-diagnostics-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-sketcher-diagnostics-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-sketcher-diagnostics-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('sketcher-diagnostics') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-sketcher-diagnostics-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 120_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exit(1) diff --git a/scripts/run-chrome-sketcher-editor.mjs b/scripts/run-chrome-sketcher-editor.mjs new file mode 100644 index 0000000..a5d9e16 --- /dev/null +++ b/scripts/run-chrome-sketcher-editor.mjs @@ -0,0 +1,49 @@ +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-sketcher-editor-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__chrome-sketcher-editor-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-sketcher-editor-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-sketcher-editor-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('sketcher-editor') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-sketcher-editor-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 120_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-sketcher-stress.mjs b/scripts/run-chrome-sketcher-stress.mjs new file mode 100644 index 0000000..89a0fe5 --- /dev/null +++ b/scripts/run-chrome-sketcher-stress.mjs @@ -0,0 +1,49 @@ +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-sketcher-stress-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30_000) + const onData = (chunk) => { output += String(chunk); const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/); if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveValue) => { resolveReport = resolveValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__chrome-sketcher-stress-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += String(chunk) }) + request.on('end', async () => { const report = JSON.parse(body); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); resolveReport(report); response.writeHead(204); response.end() }) + return + } + if (request.url === '/chrome-sketcher-stress-harness.html') { response.setHeader('content-type', 'text/html'); response.end(await readFile(resolve(root, 'public/chrome-sketcher-stress-harness.html'))); return } + try { const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }); response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())); response.end(Buffer.from(await upstream.arrayBuffer())) } catch (error) { response.writeHead(502); response.end(String(error)) } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('sketcher-stress') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-sketcher-stress-harness.html?browser=chrome`], { cwd: root, stdio: ['ignore', 'ignore', 'ignore'] }) +const report = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 120_000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(report, null, 2)) +process.exit(report.status === 'pass' ? 0 : 1) diff --git a/scripts/run-chrome-spreadsheet.mjs b/scripts/run-chrome-spreadsheet.mjs new file mode 100644 index 0000000..abd3eb6 --- /dev/null +++ b/scripts/run-chrome-spreadsheet.mjs @@ -0,0 +1,62 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-spreadsheet-verification.json') +const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }) +await vite.listen() +const address = vite.httpServer?.address() +if (!address || typeof address === 'string') throw new Error('Spreadsheet harness server did not expose a port.') +const profile = await createChromeProfile('spreadsheet') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }) +let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { + const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000) + chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }) + chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) +}) +class CdpClient { + constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } + async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } + send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } + close() { this.socket.close() } +} +const client = new CdpClient(debuggerUrl) +let report +try { + await client.open() + const version = await client.send('Browser.getVersion') + if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`) + const { targetInfos } = await client.send('Target.getTargets') + const target = targetInfos.find((candidate) => candidate.type === 'page') + if (!target) throw new Error('Chrome did not expose a page target.') + const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }) + await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]) + const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value } + await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-spreadsheet-harness.html` }, sessionId) + const deadline = Date.now() + 120_000 + while (Date.now() < deadline) { report = await evaluate('window.__bitbybitSpreadsheetReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) } + if (!report) throw new Error('Chrome Spreadsheet harness timed out.') + report = { ...report, browser: { product: version.product, userAgent: version.userAgent } } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.log(JSON.stringify(report, null, 2)) + if (report.status !== 'pass') process.exitCode = 1 +} catch (error) { + report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) } + await mkdir(resolve(root, 'config'), { recursive: true }) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + console.error(JSON.stringify(report, null, 2)) + process.exitCode = 1 +} finally { + client.close() + chrome.kill('SIGTERM') + await vite.close() + await removeChromeProfile(profile) +} diff --git a/scripts/run-chrome-surface.mjs b/scripts/run-chrome-surface.mjs new file mode 100644 index 0000000..caa3866 --- /dev/null +++ b/scripts/run-chrome-surface.mjs @@ -0,0 +1,7 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-surface-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`); const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('Surface harness server did not expose a port.'); const profile = await createChromeProfile('surface'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--enable-webgl', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = ''; const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }); class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } }; const client = new CdpClient(debuggerUrl); let report; try { await client.open(); const version = await client.send('Browser.getVersion'); if (!/Chrome/i.test(version.product || '')) throw new Error(`Unexpected browser product: ${version.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-surface-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitSurfaceReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome Surface harness timed out.'); report = { ...report, browser: { product: version.product, userAgent: version.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-techdraw.mjs b/scripts/run-chrome-techdraw.mjs new file mode 100644 index 0000000..703d65e --- /dev/null +++ b/scripts/run-chrome-techdraw.mjs @@ -0,0 +1,14 @@ +import { spawn } from 'node:child_process' +import { existsSync } from 'node:fs' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { createServer as createViteServer } from 'vite' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname); const reportPath = resolve(root, 'config/chrome-techdraw-verification.json'); const executable = process.env.CHROME_BIN || '/home/mes123456/.local/bin/google-chrome'; if (!existsSync(executable)) throw new Error(`Chrome executable is unavailable: ${executable}`) +const vite = await createViteServer({ root, server: { host: '127.0.0.1', port: 0, strictPort: false, headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Resource-Policy': 'same-origin' } }, optimizeDeps: { exclude: ['@bitbybit-dev/occt', '@bitbybit-dev/occt-worker'] } }); await vite.listen(); const address = vite.httpServer?.address(); if (!address || typeof address === 'string') throw new Error('TechDraw harness server did not expose a port.') +const profile = await createChromeProfile('techdraw'); const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage', '--no-first-run', '--no-default-browser-check', '--remote-debugging-port=0', `--user-data-dir=${profile}`, 'about:blank'], { cwd: root, stdio: ['ignore', 'ignore', 'pipe'] }); let stderr = '' +const debuggerUrl = await new Promise((resolveDebugger, rejectDebugger) => { const timer = setTimeout(() => rejectDebugger(new Error(`Chrome DevTools endpoint timed out. ${stderr.slice(-2000)}`)), 30_000); chrome.stderr.on('data', (chunk) => { stderr += String(chunk); const match = stderr.match(/DevTools listening on (ws:\/\/[^\s]+)/); if (match) { clearTimeout(timer); resolveDebugger(match[1]) } }); chrome.once('exit', (code, signal) => { clearTimeout(timer); rejectDebugger(new Error(`Chrome exited before DevTools was ready: code=${code}, signal=${signal}.`)) }) }) +class CdpClient { constructor(url) { this.socket = new WebSocket(url); this.sequence = 0; this.pending = new Map() } async open() { await new Promise((resolveOpen, rejectOpen) => { this.socket.addEventListener('open', resolveOpen, { once: true }); this.socket.addEventListener('error', () => rejectOpen(new Error('Chrome DevTools WebSocket failed to open.')), { once: true }) }); this.socket.addEventListener('message', (event) => { const message = JSON.parse(String(event.data)); if (!message.id) return; const pending = this.pending.get(message.id); if (!pending) return; this.pending.delete(message.id); if (message.error) pending.reject(new Error(`${pending.method}: ${message.error.message}`)); else pending.resolve(message.result) }) } send(method, params = {}, sessionId) { const id = ++this.sequence; return new Promise((resolveMessage, rejectMessage) => { this.pending.set(id, { resolve: resolveMessage, reject: rejectMessage, method }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })) }) } close() { this.socket.close() } } +const client = new CdpClient(debuggerUrl); let report +try { await client.open(); const browser = await client.send('Browser.getVersion'); if (!/Chrome/i.test(browser.product || '')) throw new Error(`Unexpected browser product: ${browser.product || 'unknown'}`); const { targetInfos } = await client.send('Target.getTargets'); const target = targetInfos.find((candidate) => candidate.type === 'page'); if (!target) throw new Error('Chrome did not expose a page target.'); const { sessionId } = await client.send('Target.attachToTarget', { targetId: target.targetId, flatten: true }); await Promise.all([client.send('Page.enable', {}, sessionId), client.send('Runtime.enable', {}, sessionId)]); const evaluate = async (expression) => { const result = await client.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Chrome evaluation failed.'); return result.result?.value }; await client.send('Page.navigate', { url: `http://127.0.0.1:${address.port}/chrome-techdraw-harness.html` }, sessionId); const deadline = Date.now() + 120_000; while (Date.now() < deadline) { report = await evaluate('window.__bitbybitTechDrawReport || null'); if (report) break; await new Promise((resolveWait) => setTimeout(resolveWait, 250)) }; if (!report) throw new Error('Chrome TechDraw harness timed out.'); report = { ...report, browser: { product: browser.product, userAgent: browser.userAgent } }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify(report, null, 2)); if (report.status !== 'pass') process.exitCode = 1 } catch (error) { report = { schemaVersion: 1, status: 'failed', browserId: 'chrome', error: error instanceof Error ? error.stack || error.message : String(error) }; await mkdir(resolve(root, 'config'), { recursive: true }); await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`); console.error(JSON.stringify(report, null, 2)); process.exitCode = 1 } finally { client.close(); chrome.kill('SIGTERM'); await vite.close(); await removeChromeProfile(profile) } diff --git a/scripts/run-chrome-topology-harness.mjs b/scripts/run-chrome-topology-harness.mjs new file mode 100644 index 0000000..8a4c5fa --- /dev/null +++ b/scripts/run-chrome-topology-harness.mjs @@ -0,0 +1,71 @@ +import { createServer } from 'node:http' +import { readFile, writeFile } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { resolve, join, normalize } from 'node:path' +import { spawn } from 'node:child_process' +import { createChromeProfile, removeChromeProfile } from './chrome-profile.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const reportPath = resolve(root, 'config/chrome-topology-verification.json') +const waitForPort = (child) => new Promise((resolvePort, reject) => { + let output = '' + const timer = setTimeout(() => reject(new Error(`Vite did not announce a port: ${output.slice(-2000)}`)), 30000) + const onData = (chunk) => { + output += String(chunk) + const match = output.match(/http:\/\/127\.0\.0\.1:(\d+)/) + if (match) { clearTimeout(timer); resolvePort(Number(match[1])) } + } + child.stdout.on('data', onData) + child.stderr.on('data', onData) +}) + +const vite = spawn('./nodew', ['node_modules/vite/bin/vite.js', '--host', '127.0.0.1'], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +let vitePort +try { vitePort = await waitForPort(vite) } catch (error) { vite.kill('SIGTERM'); throw error } +let resolveReport +const reportPromise = new Promise((resolveReportValue) => { resolveReport = resolveReportValue }) +const server = createServer(async (request, response) => { + response.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + response.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + response.setHeader('Cross-Origin-Resource-Policy', 'same-origin') + if (request.method === 'POST' && request.url === '/__topology-report') { + let body = '' + request.setEncoding('utf8') + request.on('data', (chunk) => { body += chunk }) + request.on('end', async () => { + const report = JSON.parse(body) + await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) + resolveReport(report) + response.writeHead(204) + response.end() + }) + return + } + if (request.url === '/chrome-topology-harness.html') { + response.setHeader('content-type', 'text/html') + response.end(await readFile(resolve(root, 'public/chrome-topology-harness.html'))) + return + } + try { + const upstream = await fetch(`http://127.0.0.1:${vitePort}${request.url}`, { headers: { ...request.headers } }) + response.writeHead(upstream.status, Object.fromEntries(upstream.headers.entries())) + response.end(Buffer.from(await upstream.arrayBuffer())) + } catch (error) { + response.writeHead(502) + response.end(String(error)) + } +}) +await new Promise((resolveServer) => server.listen(0, '127.0.0.1', resolveServer)) +const port = server.address().port +const executable = process.env.CHROMIUM_BIN || '/home/mes123456/.local/bin/google-chrome' +if (!existsSync(executable)) throw new Error(`Chrome executable is missing: ${executable}`) +const chromeProfile = await createChromeProfile('topology') +const chrome = spawn(executable, ['--headless=new', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--noerrdialogs', '--no-first-run', `--user-data-dir=${chromeProfile}`, `http://127.0.0.1:${port}/chrome-topology-harness.html`], { cwd: root, stdio: ['ignore', 'pipe', 'pipe'] }) +const result = await Promise.race([reportPromise, new Promise((resolveTimeout) => setTimeout(() => resolveTimeout({ status: 'timeout', browserId: 'chrome' }), 180000))]) +chrome.kill('SIGTERM') +vite.kill('SIGTERM') +server.closeAllConnections?.() +server.close() +await removeChromeProfile(chromeProfile) +console.log(JSON.stringify(result, null, 2)) +process.exit(result.status === 'pass' ? 0 : 1) diff --git a/scripts/run-dependency-audit.mjs b/scripts/run-dependency-audit.mjs new file mode 100644 index 0000000..b19741b --- /dev/null +++ b/scripts/run-dependency-audit.mjs @@ -0,0 +1,35 @@ +import { createHash } from 'node:crypto' +import { execFile } from 'node:child_process' +import { readFile, writeFile } from 'node:fs/promises' +import { promisify } from 'node:util' +import { resolve } from 'node:path' + +const run = promisify(execFile) +const root = resolve(new URL('..', import.meta.url).pathname) +const lockPath = resolve(root, 'package-lock.json') +const outputPath = resolve(root, 'config/npm-audit-critical.json') +const lockfileSha256 = createHash('sha256').update(await readFile(lockPath)).digest('hex') +let stdout = '' +let exitCode = 0 +try { + ({ stdout } = await run(resolve(root, 'npmw'), ['audit', '--omit=dev', '--audit-level=critical', '--json'], { cwd: root, maxBuffer: 16 * 1024 * 1024 })) +} catch (error) { + exitCode = error.code ?? 1 + stdout = error.stdout ?? '' +} +if (!stdout.trim()) throw new Error(`npm audit produced no JSON output (exit ${exitCode}).`) +const audit = JSON.parse(stdout) +const vulnerabilities = audit.vulnerabilities ?? {} +const critical = Number(audit.metadata?.vulnerabilities?.critical ?? 0) +const report = { + schemaVersion: 1, + status: critical === 0 ? 'pass' : 'failed', + command: 'npm audit --omit=dev --audit-level=critical --json', + lockfileSha256, + auditReportVersion: audit.auditReportVersion, + metadata: audit.metadata, + vulnerabilities, +} +await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify({ status: report.status === 'pass' ? 'dependency-audit-generated' : 'dependency-audit-failed', output: outputPath, critical, total: audit.metadata?.vulnerabilities?.total ?? null, lockfileSha256 }, null, 2)) +if (critical > 0) process.exit(1) diff --git a/scripts/run-fcstd-fuzz.ts b/scripts/run-fcstd-fuzz.ts new file mode 100644 index 0000000..a40c171 --- /dev/null +++ b/scripts/run-fcstd-fuzz.ts @@ -0,0 +1,83 @@ +import assert from 'node:assert/strict' +import { writeFile } from 'node:fs/promises' +import { performance } from 'node:perf_hooks' +import { strToU8, zipSync } from 'fflate' +import { inspectFcstdArchive } from '../src/facade/fcstd' + +type FuzzCase = { + name: string + archive: Uint8Array + expected: 'accept' | 'reject' + limits?: Parameters[1] +} + +let state = 0x5f3759df +const random = () => { + state ^= state << 13 + state ^= state >>> 17 + state ^= state << 5 + return state >>> 0 +} +const token = () => `Object_${random().toString(16).padStart(8, '0')}` +const archive = (documentXml: string | Uint8Array, guiXml?: string, extra: Record = {}) => zipSync({ + 'Document.xml': typeof documentXml === 'string' ? strToU8(documentXml) : documentXml, + ...(guiXml === undefined ? {} : { 'GuiDocument.xml': strToU8(guiXml) }), + ...extra, +}) + +const createCase = (index: number): FuzzCase => { + const name = token() + switch (index % 13) { + case 0: return { name: 'empty-document', archive: archive(''), expected: 'accept' } + case 1: return { name: 'proxy-object', archive: archive(``), expected: 'accept' } + case 2: return { name: 'malformed-close', archive: archive(''), expected: 'reject' } + case 3: return { name: 'wrong-document-root', archive: archive(''), expected: 'reject' } + case 4: return { name: 'duplicate-object-id', archive: archive(``), expected: 'reject' } + case 5: return { name: 'empty-object-id', archive: archive(''), expected: 'reject' } + case 6: return { name: 'depth-limit', archive: archive(`${''.repeat(12)}${''.repeat(12)}`), expected: 'reject', limits: { maxXmlDepth: 8 } } + case 7: return { name: 'node-limit', archive: archive(`${Array.from({ length: 32 }, (_, item) => ``).join('')}`), expected: 'reject', limits: { maxXmlNodes: 20 } } + case 8: return { name: 'entity-declaration', archive: archive(']>&x;'), expected: 'reject' } + case 9: return { name: 'invalid-utf8', archive: archive(new Uint8Array([0x3c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3e, 0xc3, 0x28, 0x3c, 0x2f, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3e])), expected: 'reject' } + case 10: return { name: 'invalid-gui-root', archive: archive('', ''), expected: 'reject' } + case 11: return { name: 'opaque-resource', archive: archive('', '', { [`Resources/${name}.bin`]: new Uint8Array([random() & 0xff, random() & 0xff]) }), expected: 'accept' } + default: return { name: 'traversal-path', archive: archive('', undefined, { [`../${name}.bin`]: new Uint8Array([1]) }), expected: 'reject' } + } +} + +const durations: number[] = [] +const counts = { accepted: 0, rejected: 0, validCases: 0, invalidCases: 0 } +const categories = new Map() +for (let index = 0; index < 1000; index += 1) { + const fuzzCase = createCase(index) + categories.set(fuzzCase.name, (categories.get(fuzzCase.name) ?? 0) + 1) + const started = performance.now() + let outcome: 'accept' | 'reject' = 'accept' + let caught: unknown + try { + inspectFcstdArchive(fuzzCase.archive, fuzzCase.limits) + } catch (error) { + outcome = 'reject' + caught = error + } + durations.push(performance.now() - started) + if (outcome === 'accept') counts.accepted += 1 + else counts.rejected += 1 + if (fuzzCase.expected === 'accept') counts.validCases += 1 + else counts.invalidCases += 1 + assert.equal(outcome, fuzzCase.expected, `FCStd fuzz category ${fuzzCase.name} produced ${outcome}, expected ${fuzzCase.expected}.`) + if (outcome === 'reject') assert.ok(caught instanceof Error, `FCStd fuzz category ${fuzzCase.name} rejected with a non-Error value.`) +} + +durations.sort((left, right) => left - right) +const p95Ms = durations[Math.floor(durations.length * 0.95)] +assert.ok(p95Ms < 50, `FCStd parser fuzz p95 exceeded 50 ms: ${p95Ms.toFixed(3)} ms.`) +const report = { + status: 'fcstd-parser-fuzz-pass', + seed: '0x5f3759df', + cases: durations.length, + counts, + categories: Object.fromEntries([...categories].sort(([left], [right]) => left.localeCompare(right))), + timing: { p95Ms: Number(p95Ms.toFixed(3)), maxMs: Number(durations.at(-1)?.toFixed(3)) }, +} +await writeFile(new URL('../config/qa04-fcstd-fuzz-verification.json', import.meta.url), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-fcstd-hardening.ts b/scripts/run-fcstd-hardening.ts new file mode 100644 index 0000000..a7f80a2 --- /dev/null +++ b/scripts/run-fcstd-hardening.ts @@ -0,0 +1,57 @@ +import assert from 'node:assert/strict' +import { strToU8, zipSync } from 'fflate' +import { collectGeometryImportText } from '../src/facade/geometryRuntime' +import { inspectFcstdArchive } from '../src/facade/fcstd' +import { createMockFacade } from '../src/facade/mockFacade' + +const documentXml = (body = '') => `${body}` +const oneMiB = new Uint8Array(1024 * 1024) +for (let index = 0; index < oneMiB.length; index += 1) oneMiB[index] = (index * 31 + 17) & 0xff +const withinLimit = zipSync({ 'Document.xml': strToU8(documentXml()), 'Resources/payload.bin': oneMiB }, { level: 0 }) +const accepted = inspectFcstdArchive(withinLimit, { maxArchiveBytes: 2 * 1024 * 1024, maxEntryBytes: 2 * 1024 * 1024, maxTotalUncompressedBytes: 2 * 1024 * 1024 }) +assert.equal(accepted.entries.length, 2) +assert.equal(accepted.entries.find((entry) => entry.path === 'Resources/payload.bin')?.uncompressedBytes, oneMiB.byteLength) + +const rejected: Record = {} +const expectReject = (name: string, action: () => unknown, pattern: RegExp) => { + let caught: unknown + try { action() } catch (error) { caught = error } + assert.ok(caught instanceof Error && pattern.test(caught.message), `${name} did not fail explicitly: ${caught instanceof Error ? caught.message : String(caught)}`) + rejected[name] = caught.message +} +expectReject('archive-bytes', () => inspectFcstdArchive(withinLimit, { maxArchiveBytes: withinLimit.byteLength - 1 }), /archive exceeds/) +expectReject('entry-bytes', () => inspectFcstdArchive(withinLimit, { maxEntryBytes: oneMiB.byteLength - 1 }), /entry .* exceeds/) +expectReject('total-uncompressed', () => inspectFcstdArchive(withinLimit, { maxTotalUncompressedBytes: oneMiB.byteLength }), /archive exceeds .* uncompressed bytes/) +expectReject('entry-count', () => inspectFcstdArchive(withinLimit, { maxEntries: 1 }), /archive exceeds 1 entries/) +const compressed = zipSync({ 'Document.xml': strToU8(documentXml()), 'Resources/compressible.bin': new Uint8Array(256 * 1024) }, { level: 9 }) +expectReject('compression-ratio', () => inspectFcstdArchive(compressed, { maxCompressionRatio: 2 }), /maximum compression ratio/) +expectReject('truncated-zip', () => inspectFcstdArchive(withinLimit.slice(0, -16)), /ZIP archive|central directory|end-of-central-directory/) +const deepXml = zipSync({ 'Document.xml': strToU8(documentXml(`${''.repeat(10)}${''.repeat(10)}`)) }) +expectReject('xml-depth', () => inspectFcstdArchive(deepXml, { maxXmlDepth: 8 }), /nesting depth/) +const wideXml = zipSync({ 'Document.xml': strToU8(documentXml(Array.from({ length: 32 }, (_, index) => ``).join(''))) }) +expectReject('xml-nodes', () => inspectFcstdArchive(wideXml, { maxXmlNodes: 20 }), /XML nodes/) +const malformedXml = zipSync({ 'Document.xml': strToU8('') }) +expectReject('malformed-xml', () => inspectFcstdArchive(malformedXml), /XML|closing tag|Document/i) + +const streamChunks = [new TextEncoder().encode('ISO-10303-21;\n'), new TextEncoder().encode('DATA;\n'), new TextEncoder().encode('ENDSEC;\nEND-ISO-10303-21;')] +async function* successfulStream() { for (const chunk of streamChunks) yield chunk } +const streamed = await collectGeometryImportText(successfulStream(), undefined, 1024) +assert.equal(streamed, 'ISO-10303-21;\nDATA;\nENDSEC;\nEND-ISO-10303-21;') +const controller = new AbortController() +async function* cancelledStream() { yield streamChunks[0]; controller.abort(); yield streamChunks[1] } +await assert.rejects(() => collectGeometryImportText(cancelledStream(), controller.signal, 1024), (error: unknown) => error instanceof DOMException && error.name === 'AbortError') +async function* invalidUtf8() { yield new Uint8Array([0xff]) } +await assert.rejects(() => collectGeometryImportText(invalidUtf8(), undefined, 1024), /UTF-8|encoding|encoded/i) +async function* overLimitStream() { yield new Uint8Array(4); yield new Uint8Array(5) } +await assert.rejects(() => collectGeometryImportText(overLimitStream(), undefined, 8), /exceeds 8 bytes/) + +const facade = createMockFacade() +await facade.project.save() +facade.app.document.setProperty({ objectId: 'pad', propertyName: 'Length', value: 31 }) +await facade.project.save() +const recovery = await facade.project.recovery('doc-pump-housing') +assert.equal(recovery.integrity, 'ok') +assert.equal(recovery.lastSavedVersion, facade.app.document.getActive().version) +assert.ok(recovery.checkpoints.length >= 2) + +console.log(JSON.stringify({ status: 'fcstd-hardening-pass', accepted: { archiveBytes: withinLimit.byteLength, entryCount: accepted.entries.length, payloadBytes: oneMiB.byteLength }, rejected, streaming: { chunks: streamChunks.length, bytes: new TextEncoder().encode(streamed).byteLength, cancellation: 'AbortError', invalidUtf8: 'rejected', overLimit: 'rejected' }, recovery: { integrity: recovery.integrity, lastSavedVersion: recovery.lastSavedVersion, checkpointCount: recovery.checkpoints.length } }, null, 2)) diff --git a/scripts/run-freecad-cam-path-oracle.ts b/scripts/run-freecad-cam-path-oracle.ts new file mode 100644 index 0000000..0a60620 --- /dev/null +++ b/scripts/run-freecad-cam-path-oracle.ts @@ -0,0 +1,223 @@ +import { spawnSync } from 'node:child_process' +import { createHash } from 'node:crypto' +import { mkdir, readFile, writeFile } from 'node:fs/promises' +import { readFileSync } from 'node:fs' +import { dirname, relative, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { decodeFcstdPathProperty, inspectFcstdArchive, rewriteFcstdMetadataArchive, rewriteFcstdPathProperty } from '../src/facade/fcstd' + +const root = resolve(dirname(fileURLToPath(import.meta.url)), '..') +const executable = resolve(root, '.cache/freecad/install-desktop/bin/FreeCAD') +const probe = resolve(root, 'scripts/freecad-cam-path-oracle.py') +const sysroot = resolve(root, '.cache/freecad/sysroot') +const outputDirectory = resolve(root, '.cache/freecad/cam-path-oracle') +const sourcePath = resolve(outputDirectory, 'native-path-source.FCStd') +const mutatedPath = resolve(outputDirectory, 'native-path-mutated.FCStd') +const preservedPath = resolve(outputDirectory, 'web-preserved.FCStd') +const webEditedPath = resolve(outputDirectory, 'web-edited-path.FCStd') +const webEditedPythonPath = resolve(outputDirectory, 'web-edited-python-path.FCStd') +const reportPath = resolve(root, 'config/freecad-cam-path-oracle.json') +const marker = 'FREECAD_CAM_PATH_RESULT=' +let probeCounter = 0 +const fail = (message: string): never => { throw new Error(`FreeCAD CAM Path oracle: ${message}`) } +const sha256 = (bytes: Uint8Array) => createHash('sha256').update(bytes).digest('hex') +const semanticSha256 = (value: unknown) => createHash('sha256').update(JSON.stringify(value)).digest('hex') + +await mkdir(outputDirectory, { recursive: true }) + +const runtimeEnv = { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', +} + +const runProbe = (extraEnv: NodeJS.ProcessEnv) => { + const resultFile = resolve(outputDirectory, `native-probe-result-${probeCounter++}.json`) + const execution = spawnSync('xvfb-run', ['-a', executable, '--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), probe], { + cwd: root, + encoding: 'utf8', + maxBuffer: 32 * 1024 * 1024, + timeout: 120_000, + env: { ...runtimeEnv, ...extraEnv, FREECAD_CAM_PATH_RESULT_FILE: resultFile }, + }) + const output = `${execution.stdout ?? ''}\n${execution.stderr ?? ''}` + const line = output.split(/\r?\n/).find((candidate) => candidate.startsWith(marker)) + const resultFileAvailable = (() => { try { return readFileSync(resultFile, 'utf8') } catch { return '' } })() + const qtTeardownSignal = execution.status !== 0 && /SIGSEGV|Segmentation fault|Shiboken::BindingManager/.test(output) && Boolean(line || resultFileAvailable) + if (execution.error || (execution.status !== 0 && !qtTeardownSignal) || (!line && !resultFileAvailable)) fail(`native probe exited with ${execution.status}: ${execution.error?.message ?? output.trim()}`) + const result = resultFileAvailable + ? JSON.parse(resultFileAvailable) as Record + : JSON.parse(line!.slice(marker.length)) as Record + if (qtTeardownSignal && result.nativeRuntime) result.nativeRuntime.qtTaskPanelTeardown = 'isolated-pyside-wrapper-release-after-complete-marker' + return result +} + +const native = runProbe({ + FREECAD_CAM_PATH_SOURCE: sourcePath, + FREECAD_CAM_PATH_MUTATED: mutatedPath, +}) +if (native.freecadVersion !== '1.1.1' || native.gitCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d') fail('native runtime does not match the locked FreeCAD 1.1.1 oracle') +if (native.nativeRuntime?.guiUp !== true || native.qtDynamicOracle?.activeWorkbench !== 'CAMWorkbench') fail('CAM Qt workbench did not activate in the GUI oracle') +if (native.profileAlgorithm?.pathPropertyType !== 'Path::PropertyPath' || native.profileAlgorithm?.cuttingCommandCount !== 20 || native.profileAlgorithm?.commandCount < 20) fail('native Profile operation did not reproduce the locked algorithm result') +if (native.profileAlgorithm?.variants?.length !== 2 || native.profileAlgorithm.variants.some((variant: any) => variant.commandCount !== 32 || variant.cuttingCommandCount !== 20 || !/^[0-9a-f]{64}$/.test(variant.commandSha256))) fail('native Profile compensation variants are incomplete') +const expectedHelixDirections: Record = { + 'inside-conventional': ['CW', 'G2'], + 'outside-climb': ['CW', 'G2'], + 'inside-climb': ['CCW', 'G3'], + 'outside-conventional': ['CCW', 'G3'], +} +if (native.helixAlgorithm?.fixture !== 'Mod/CAM/CAMTests/test_holes00.fcstd' || native.helixAlgorithm?.pathPropertyType !== 'Path::PropertyPath' || native.helixAlgorithm?.toolDiameterMm !== 0.9 || native.helixAlgorithm?.baseSubElementCount !== 9 || native.helixAlgorithm?.scenarioCount !== 4) fail('native Helix fixture contract is incomplete') +if (native.helixAlgorithm.scenarios.some((scenario: any) => { + const expected = expectedHelixDirections[scenario.id] + return !expected || scenario.direction !== expected[0] || scenario.expectedDirection !== expected[0] || scenario.expectedArc !== expected[1] || JSON.stringify(scenario.arcNames) !== JSON.stringify([expected[1]]) || scenario.arcCommandCount !== 1260 || scenario.commandCount < 1400 || !/^[0-9a-f]{64}$/.test(scenario.commandSha256) +})) fail('native Helix direction or command evidence differs from the locked oracle') +const incompleteActions = native.qtDynamicOracle?.requiredCommands?.filter((command: any) => command.emptySelection?.registered !== true || command.selectedModel?.registered !== true || command.selectedJob?.registered !== true || command.selectedOperation?.registered !== true || command.emptyDocument?.registered !== true || command.selectedModel?.actionCount < 1) ?? [] +if (incompleteActions.length > 0) fail(`required CAM QAction registration evidence is incomplete: ${JSON.stringify(incompleteActions)}`) + +const original = new Uint8Array(await readFile(sourcePath)) +const inspection = inspectFcstdArchive(original) +const nativePath = inspection.objects.find((object) => object.name === 'NativePath') ?? fail('NativePath is missing from Web FCStd inspection') +const pythonPath = inspection.objects.find((object) => object.name === 'PythonPath') ?? fail('PythonPath is missing from Web FCStd inspection') +const pathProperties = [nativePath, pythonPath].map((object) => object.properties.find((property) => property.name === 'Path')) +if (nativePath.typeId !== 'Path::Feature' || pythonPath.typeId !== 'Path::FeaturePython') fail('Web inspection did not preserve Path object TypeIds') +if (pathProperties.some((property) => property?.typeId !== 'Path::PropertyPath')) fail('Web inspection did not preserve Path::PropertyPath metadata') +if (!inspection.proxyDocument.readOnly || inspection.compatibility.blockedObjects < 1) fail('FeaturePython archive must remain a read-only proxy at the current Web codec boundary') + +const preserved = rewriteFcstdMetadataArchive(original, inspection.proxyDocument) +if (sha256(original) !== sha256(preserved) || !Buffer.from(original).equals(Buffer.from(preserved))) fail('read-only Web rewrite was not byte-for-byte transparent') +await writeFile(preservedPath, preserved) +const reopened = runProbe({ + FREECAD_CAM_PATH_VERIFY_ONLY: '1', + FREECAD_CAM_PATH_VERIFY_ARCHIVE: preservedPath, +}) +if (reopened.verified !== true || reopened.objects?.some((object: any) => object.commandCount !== 5 || object.pathPropertyType !== 'Path::PropertyPath')) fail('FreeCAD could not reopen the Web-preserved Path archive') + +const decodedPath = decodeFcstdPathProperty(original, 'NativePath') +if (decodedPath.commands.length !== 5 || decodedPath.resourcePath !== 'NativePath.nc') fail('Web Path::PropertyPath codec did not decode the native command resource') +const edited = rewriteFcstdPathProperty(original, { + objectName: 'NativePath', + value: { ...decodedPath, commands: [...decodedPath.commands, { name: 'M3', parameters: { S: 12000 } }] }, +}) +const editedDecoded = decodeFcstdPathProperty(edited, 'NativePath') +if (editedDecoded.commands.length !== 6 || editedDecoded.commands.at(-1)?.name !== 'M3' || editedDecoded.commands.at(-1)?.parameters.S !== 12000) fail('Web Path::PropertyPath codec did not persist the edited command') +await writeFile(webEditedPath, edited) +const editedReopened = runProbe({ + FREECAD_CAM_PATH_VERIFY_ONLY: '1', + FREECAD_CAM_PATH_VERIFY_ARCHIVE: webEditedPath, + FREECAD_CAM_PATH_EXPECT_NATIVE_COUNT: '6', + FREECAD_CAM_PATH_EXPECT_PYTHON_COUNT: '5', + FREECAD_CAM_PATH_EXPECT_NATIVE_LAST: 'M3', +}) +if (editedReopened.verified !== true) fail('FreeCAD could not reopen the Web-edited native Path command resource') + +const decodedPythonPath = decodeFcstdPathProperty(original, 'PythonPath', 'Path', { allowFeaturePython: true }) +if (decodedPythonPath.commands.length !== 5 || decodedPythonPath.resourcePath !== 'PythonPath.nc') fail('Web FeaturePython Path::PropertyPath opt-in codec did not decode the native command resource') +const editedPython = rewriteFcstdPathProperty(original, { + objectName: 'PythonPath', + propertyName: 'Path', + allowFeaturePython: true, + value: { ...decodedPythonPath, commands: [...decodedPythonPath.commands, { name: 'M2', parameters: {} }] }, +}) +const editedPythonDecoded = decodeFcstdPathProperty(editedPython, 'PythonPath', 'Path', { allowFeaturePython: true }) +if (editedPythonDecoded.commands.length !== 6 || editedPythonDecoded.commands.at(-1)?.name !== 'M2') fail('Web FeaturePython Path::PropertyPath codec did not persist the edited command') +await writeFile(webEditedPythonPath, editedPython) +const editedPythonReopened = runProbe({ + FREECAD_CAM_PATH_VERIFY_ONLY: '1', + FREECAD_CAM_PATH_VERIFY_ARCHIVE: webEditedPythonPath, + FREECAD_CAM_PATH_EXPECT_NATIVE_COUNT: '5', + FREECAD_CAM_PATH_EXPECT_PYTHON_COUNT: '6', + FREECAD_CAM_PATH_EXPECT_PYTHON_LAST: 'M2', +}) +if (editedPythonReopened.verified !== true) fail('FreeCAD could not reopen the Web-edited FeaturePython Path command resource') + +const mutated = new Uint8Array(await readFile(mutatedPath)) +inspectFcstdArchive(mutated) +native.fcstdRoundTrip.source.semanticSha256 = semanticSha256(native.fcstdRoundTrip.sourceReopened) +native.fcstdRoundTrip.mutated.semanticSha256 = semanticSha256(native.fcstdRoundTrip.mutatedReopened) +reopened.archive.semanticSha256 = semanticSha256(reopened.objects) +delete native.fcstdRoundTrip.source.sha256 +delete native.fcstdRoundTrip.mutated.sha256 +delete reopened.archive.sha256 +delete native.fcstdRoundTrip.source.byteLength +delete native.fcstdRoundTrip.mutated.byteLength +delete reopened.archive.byteLength + +const relativePath = (path: string) => relative(root, path).replaceAll('\\', '/') +for (const archive of [native.fcstdRoundTrip.source, native.fcstdRoundTrip.mutated, reopened.archive]) archive.path = relativePath(archive.path) +native.nativeRuntime.pathModule = native.nativeRuntime.pathModule.startsWith(root) ? relativePath(native.nativeRuntime.pathModule) : native.nativeRuntime.pathModule + +const report = { + schemaVersion: 1, + baselineId: 'freecad-1.1.1', + sourceCommit: '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d', + generatedBy: './npmw run probe:freecad-cam-path', + checkedBy: './npmw run check:freecad-cam-path', + runtime: native.nativeRuntime, + profileAlgorithm: native.profileAlgorithm, + helixAlgorithm: native.helixAlgorithm, + qtDynamicOracle: native.qtDynamicOracle, + fcstdRoundTrip: { + ...native.fcstdRoundTrip, + webInspection: { + objectTypes: [nativePath.typeId, pythonPath.typeId], + pathPropertyTypes: pathProperties.map((property) => property?.typeId), + compatibility: inspection.compatibility, + proxyReadOnly: inspection.proxyDocument.readOnly, + }, + webTransparentPreservation: { + archive: reopened.archive, + byteExact: true, + nativeReopenVerified: reopened.verified, + objects: reopened.objects, + }, + webEditablePathProperty: { + objectName: 'NativePath', + resourcePath: editedDecoded.resourcePath, + sourceCommandCount: decodedPath.commands.length, + editedCommandCount: editedDecoded.commands.length, + lastCommand: editedDecoded.commands.at(-1), + nativeReopenVerified: editedReopened.verified, + featurePythonExecutionBlocked: true, + }, + webEditableFeaturePythonPathProperty: { + objectName: 'PythonPath', + resourcePath: editedPythonDecoded.resourcePath, + sourceCommandCount: decodedPythonPath.commands.length, + editedCommandCount: editedPythonDecoded.commands.length, + lastCommand: editedPythonDecoded.commands.at(-1), + nativeReopenVerified: editedPythonReopened.verified, + scriptExecution: 'blocked', + optInRequired: true, + }, + }, + claims: { + nativeProfilePathAlgorithm: 'verified', + nativeHelixPathAlgorithm: 'verified-four-direction-cases', + qtCamWorkbenchDynamicOracle: 'verified', + nativePathFeatureFcstdSaveOpenMutateSaveOpen: 'verified', + nativeWebNativePathFcstdTransparentRoundTrip: 'verified', + webEditablePathPropertyCodec: 'verified-native-path-feature', + webEditableFeaturePythonPathResourceCodec: 'verified-safe-resource-only-opt-in', + }, + boundary: { + exactEvidence: 'FreeCAD 1.1.1 executes compensated/uncompensated Profile and four Helix direction cases, exposes live Qt CAM actions, and reopens both Path object types after native and byte-transparent Web round-trips.', + remainingGap: 'FeaturePython Path::PropertyPath resource editing is now an explicit safe opt-in that never executes Python; FeaturePython operation metadata, recompute behavior and algorithms beyond the locked Profile/Helix scenarios remain unclaimed.', + exactParityClaim: false, + }, + status: 'verified-with-native-path-editable-subset', +} + +await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify({ + status: report.status, + profileCommands: report.profileAlgorithm.commandCount, + cuttingCommands: report.profileAlgorithm.cuttingCommandCount, + helixScenarios: report.helixAlgorithm.scenarioCount, + camCommands: report.qtDynamicOracle.camCommandCount, + qtVersion: report.qtDynamicOracle.qtVersion, + fcstdObjects: report.fcstdRoundTrip.webInspection.objectTypes, + byteExact: report.fcstdRoundTrip.webTransparentPreservation.byteExact, + report: relativePath(reportPath), +}, null, 2)) diff --git a/scripts/run-freecad-composite-history-elementmap-oracle.mjs b/scripts/run-freecad-composite-history-elementmap-oracle.mjs new file mode 100644 index 0000000..81d9741 --- /dev/null +++ b/scripts/run-freecad-composite-history-elementmap-oracle.mjs @@ -0,0 +1,32 @@ +import { spawnSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +const pythonPath = resolve(root, '.cache/freecad/sysroot/usr/lib/python3/dist-packages') +const script = resolve(root, 'scripts/freecad-composite-history-elementmap-oracle.py') +const outputPath = resolve(root, 'config/freecad-composite-history-elementmap-oracle.json') +if (!existsSync(executable)) throw new Error(`FreeCAD composite oracle executable is missing: ${executable}`) +const execution = spawnSync(executable, ['--python-path', pythonPath, script], { + cwd: root, + encoding: 'utf8', + timeout: 180_000, + maxBuffer: 80 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${pythonPath}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(root, '.cache/freecad/sysroot/usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(root, '.cache/freecad/sysroot/etc/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_COMPOSITE_HISTORY_ELEMENTMAP_RESULT=' +const markerIndex = output.indexOf(marker) +const payload = markerIndex >= 0 ? output.slice(markerIndex + marker.length).match(/\{.*\}/s)?.[0] : undefined +if (execution.error || execution.status !== 0 || !payload) throw new Error(`FreeCAD composite history oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(payload) +await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-freecad-fcstd-native-oracle.ts b/scripts/run-freecad-fcstd-native-oracle.ts new file mode 100644 index 0000000..43f78a0 --- /dev/null +++ b/scripts/run-freecad-fcstd-native-oracle.ts @@ -0,0 +1,737 @@ +import { spawnSync } from 'node:child_process' +import { createHash } from 'node:crypto' +import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { fileURLToPath } from 'node:url' +import { join, resolve } from 'node:path' +import { unzipSync } from 'fflate' +import { decodeFcstdPropertyValue, inspectFcstdArchive, rewriteFcstdMetadataArchive, serializeFcstdMetadataArchive } from '../src/facade/fcstd' +import { createSketch } from '../src/facade/sketcher' +import type { DocumentSnapshot, ShapeResourceValue } from '../src/facade/types' + +const root = fileURLToPath(new URL('..', import.meta.url)) +const executable = resolve(root, '.cache/freecad/install-desktop/bin/FreeCAD') +const examplePath = resolve(root, '.cache/freecad/install-desktop/share/examples/PartDesignExample.FCStd') +const probePath = resolve(root, 'scripts/freecad-fcstd-gui-probe.py') +const pythonPath = resolve(root, '.cache/freecad/sysroot/usr/lib/python3/dist-packages') +const libraryPath = resolve(root, '.cache/freecad/sysroot/usr/lib/x86_64-linux-gnu') +const matplotlibConfig = resolve(root, '.cache/freecad/sysroot/etc/matplotlibrc') +const fail = (message: string): never => { throw new Error(`FreeCAD FCStd native oracle: ${message}`) } +const near = (actual: number | null, expected: number, tolerance = 1e-8) => typeof actual === 'number' && Number.isFinite(actual) && Math.abs(actual - expected) <= tolerance +type ProbeResult = { + freecadVersion: string + shapeNull: boolean | null + shapeValid: boolean | null + solidCount: number | null + faceCount: number | null + volume: number | null + boundingBox: { min: number[]; max: number[] } | null + shapeError: string | null + properties: Record + geometryCount: number | null + constraintCount: number | null + constructionGeometry: number[] | null + constraintNames: string[] | null + constraintTypes: string[] | null + externalGeometryCount: number | null + externalGeoCount: number | null + externalTypes: number[] | null + externalLinks: Array<{ objectName: string; subElements: string[] }> | null + externalStates: Array<{ ref: string; id: number; geometryType: string; flags: number }> | null + mapMode: string | null + attachmentSupport: Array<{ objectName: string; subElements: string[] }> | null + attachmentOffset: { position: number[]; axis: number[]; angle: number } | null +} + +const runFreecadProbe = (archivePath: string, objectName: string, extraEnv: NodeJS.ProcessEnv = {}): ProbeResult => { + const child = spawnSync('xvfb-run', ['-a', executable, '--python-path', pythonPath, probePath], { + cwd: root, + encoding: 'utf8', + maxBuffer: 16 * 1024 * 1024, + timeout: 30_000, + env: { + ...process.env, + PYTHONPATH: pythonPath, + LD_LIBRARY_PATH: libraryPath, + MATPLOTLIBRC: matplotlibConfig, + MPLBACKEND: 'Agg', + FREECAD_FCSTD_PATH: archivePath, + FREECAD_FCSTD_OBJECT: objectName, + ...extraEnv, + }, + }) + const output = `${child.stdout ?? ''}\n${child.stderr ?? ''}` + if (child.status !== 0) fail(`FreeCAD exited with ${child.status}: ${output.trim()}`) + if (/Invalid Document\.xml|Reading failed from embedded file|Property .* already exists/i.test(output)) fail(`FreeCAD reported an archive read failure: ${output.trim()}`) + const marker = output.match(/FREECAD_FCSTD_GUI_RESULT=(\{[^\r\n]+\})/) + if (!marker) fail(`probe result marker is missing: ${output.trim()}`) + return JSON.parse(marker[1]) as ProbeResult +} + +const temporaryDirectory = await mkdtemp(join(tmpdir(), 'bitbybit-fcstd-oracle-')) +try { + const sourceBytes = new Uint8Array(await readFile(examplePath)) + const sourceInspection = inspectFcstdArchive(sourceBytes) + const proxyPreservedBytes = rewriteFcstdMetadataArchive(sourceBytes, sourceInspection.proxyDocument) + const sha256 = (bytes: Uint8Array) => createHash('sha256').update(bytes).digest('hex') + const sourceSha256 = sha256(sourceBytes) + const proxyPreservedSha256 = sha256(proxyPreservedBytes) + if (sourceSha256 !== proxyPreservedSha256 || !Buffer.from(sourceBytes).equals(Buffer.from(proxyPreservedBytes))) fail('read-only proxy archive was not preserved byte-for-byte.') + const proxyPreservedPath = join(temporaryDirectory, 'proxy-preserved.fcstd') + const proxyResavedPath = join(temporaryDirectory, 'proxy-freecad-resaved.fcstd') + await writeFile(proxyPreservedPath, proxyPreservedBytes) + const proxyResult = runFreecadProbe(proxyPreservedPath, 'Body', { FREECAD_FCSTD_RESAVE_PATH: proxyResavedPath }) + if (proxyResult.freecadVersion !== '1.1.1' || proxyResult.shapeNull !== false || proxyResult.shapeValid !== true || proxyResult.faceCount !== 23) fail(`unexpected byte-preserved proxy archive result: ${JSON.stringify(proxyResult)}`) + const proxyResavedInspection = inspectFcstdArchive(new Uint8Array(await readFile(proxyResavedPath))) + if (sourceInspection.compatibility.proxyObjects !== 8 || sourceInspection.compatibility.blockedObjects !== 0 || proxyResavedInspection.objects.length !== sourceInspection.objects.length || proxyResavedInspection.compatibility.proxyObjects !== sourceInspection.compatibility.proxyObjects) fail('FreeCAD resave did not preserve the native proxy object inventory.') + const sourceObject = sourceInspection.objects.find((object) => object.name === 'Body') ?? fail('PartDesignExample Body is missing.') + const sourceShapeProperty = sourceObject.properties.find((property) => property.name === 'Shape') ?? fail('PartDesignExample Body.Shape is missing.') + const decoded = decodeFcstdPropertyValue(sourceShapeProperty) + if (!decoded.decoded || !decoded.value || typeof decoded.value !== 'object') fail('Body.Shape could not be decoded.') + const shapeValue = decoded.value as ShapeResourceValue + if (shapeValue.hasherIndex !== 0 || shapeValue.elementMapResource !== 'Body.Shape.Map.txt') fail('Body.Shape native history pointers do not match the locked oracle.') + const sourceFiles = unzipSync(sourceBytes) + const document: DocumentSnapshot = { + id: 'fcstd-native-oracle', + label: 'FCStd native oracle', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'Body', label: 'Body', type: 'feature', state: 'up-to-date' }], + objects: [{ + id: 'Body', + typeId: 'Part::Feature', + properties: [{ name: 'Shape', label: 'Shape', group: 'Base', scope: 'data', type: 'Part::PropertyPartShape', value: shapeValue }], + }], + dependencies: [], + recompute: { generation: 0, status: 'idle', objectStates: { Body: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const requiredResources = ['StringHasher.Table.txt', 'Body.Shape.brp', 'Body.Shape.Map.txt'] as const + for (const path of requiredResources) if (!sourceFiles[path]) fail(`locked oracle resource is missing: ${path}`) + const opaqueEntries: Record = Object.fromEntries(requiredResources.map((path) => [path, new Uint8Array(sourceFiles[path])])) + const webArchive = serializeFcstdMetadataArchive(document, { opaqueEntries }) + const webArchivePath = join(temporaryDirectory, 'web.fcstd') + const resavedPath = join(temporaryDirectory, 'freecad-resaved.fcstd') + await writeFile(webArchivePath, webArchive) + + const result = runFreecadProbe(webArchivePath, 'Body', { FREECAD_FCSTD_RESAVE_PATH: resavedPath }) + if (result.freecadVersion !== '1.1.1' || result.shapeNull !== false || result.shapeValid !== true || result.shapeError !== null || result.solidCount !== 1 || result.faceCount !== 23 || !near(result.volume, 583719.3669394433, 1e-6)) fail(`unexpected desktop Shape result: ${JSON.stringify(result)}`) + + const resavedInspection = inspectFcstdArchive(new Uint8Array(await readFile(resavedPath))) + const resavedShape = resavedInspection.objects.find((object) => object.name === 'Body')?.properties.find((property) => property.name === 'Shape')?.shapeResource + const resavedMap = resavedInspection.elementMapResources.find((resource) => resource.path === 'Body.Shape.Map.txt') + const resavedHasher = resavedInspection.stringHasherResource + if (resavedShape?.hasherIndex !== 0 || resavedShape.elementMap !== '1.15.70200.5' || resavedShape.elementMapResource !== 'Body.Shape.Map.txt' || resavedShape.elementMapEntries?.[0]?.key !== 'Dummy' || resavedShape.elementMapEntries[0].value !== 'Dummy') fail('FreeCAD resave did not preserve Shape history pointers.') + if (resavedMap?.postfixCount !== 63 || resavedMap.mapCount !== 2 || resavedHasher?.status !== 'available') fail('FreeCAD resave did not preserve ElementMap2/StringHasher resources.') + + const primitiveDocument: DocumentSnapshot = { + id: 'fcstd-native-part-box', + label: 'FCStd native Part Box', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: ['Box', 'Cylinder', 'Sphere', 'Ellipsoid', 'Cone', 'Torus', 'Prism', 'Wedge', 'Tool', 'Fuse', 'Cut', 'Common'].map((id) => ({ id, label: id, type: 'feature', state: 'up-to-date' })), + objects: [ + { id: 'Box', typeId: 'Part::Box', properties: [ + { name: 'Length', label: 'Length', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 2 }, + { name: 'Width', label: 'Width', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 3 }, + { name: 'Height', label: 'Height', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 4 }, + { name: 'WebMode', label: 'Web mode', group: 'Web', scope: 'data', type: 'App::PropertyEnumeration', value: 'Manufacturing', options: ['Design', 'Manufacturing', 'Inspection'] }, + { name: 'WebProgress', label: 'Web progress', group: 'Web', scope: 'data', type: 'App::PropertyPercent', value: 35 }, + ] }, + { id: 'Cylinder', typeId: 'Part::Cylinder', properties: [ + { name: 'Radius', label: 'Radius', group: 'Cylinder', scope: 'data', type: 'App::PropertyLength', value: 2 }, + { name: 'Height', label: 'Height', group: 'Cylinder', scope: 'data', type: 'App::PropertyLength', value: 5 }, + { name: 'Angle', label: 'Angle', group: 'Cylinder', scope: 'data', type: 'App::PropertyAngle', value: 180 }, + ] }, + { id: 'Sphere', typeId: 'Part::Sphere', properties: [{ name: 'Radius', label: 'Radius', group: 'Sphere', scope: 'data', type: 'App::PropertyLength', value: 3 }] }, + { id: 'Ellipsoid', typeId: 'Part::Ellipsoid', properties: [ + { name: 'Radius1', label: 'Z radius', group: 'Ellipsoid', scope: 'data', type: 'App::PropertyLength', value: 2 }, + { name: 'Radius2', label: 'X radius', group: 'Ellipsoid', scope: 'data', type: 'App::PropertyLength', value: 4 }, + { name: 'Radius3', label: 'Y radius', group: 'Ellipsoid', scope: 'data', type: 'App::PropertyLength', value: 0 }, + { name: 'Angle1', label: 'Lower angle', group: 'Ellipsoid', scope: 'data', type: 'App::PropertyAngle', value: -90 }, + { name: 'Angle2', label: 'Upper angle', group: 'Ellipsoid', scope: 'data', type: 'App::PropertyAngle', value: 90 }, + { name: 'Angle3', label: 'Azimuth angle', group: 'Ellipsoid', scope: 'data', type: 'App::PropertyAngle', value: 360 }, + ] }, + { id: 'Cone', typeId: 'Part::Cone', properties: [ + { name: 'Radius1', label: 'Radius 1', group: 'Cone', scope: 'data', type: 'App::PropertyLength', value: 4 }, + { name: 'Radius2', label: 'Radius 2', group: 'Cone', scope: 'data', type: 'App::PropertyLength', value: 2 }, + { name: 'Height', label: 'Height', group: 'Cone', scope: 'data', type: 'App::PropertyLength', value: 6 }, + { name: 'Angle', label: 'Angle', group: 'Cone', scope: 'data', type: 'App::PropertyAngle', value: 360 }, + ] }, + { id: 'Torus', typeId: 'Part::Torus', properties: [ + { name: 'Radius1', label: 'Major radius', group: 'Torus', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'Radius2', label: 'Minor radius', group: 'Torus', scope: 'data', type: 'App::PropertyLength', value: 2 }, + { name: 'Angle1', label: 'Lower angle', group: 'Torus', scope: 'data', type: 'App::PropertyAngle', value: -180 }, + { name: 'Angle2', label: 'Upper angle', group: 'Torus', scope: 'data', type: 'App::PropertyAngle', value: 180 }, + { name: 'Angle3', label: 'Azimuth angle', group: 'Torus', scope: 'data', type: 'App::PropertyAngle', value: 270 }, + ] }, + { id: 'Prism', typeId: 'Part::Prism', properties: [ + { name: 'Polygon', label: 'Polygon sides', group: 'Prism', scope: 'data', type: 'App::PropertyInteger', value: 6 }, + { name: 'Circumradius', label: 'Circumradius', group: 'Prism', scope: 'data', type: 'App::PropertyLength', value: 2 }, + { name: 'Height', label: 'Height', group: 'Prism', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'FirstAngle', label: 'First angle', group: 'Prism', scope: 'data', type: 'App::PropertyAngle', value: 10 }, + { name: 'SecondAngle', label: 'Second angle', group: 'Prism', scope: 'data', type: 'App::PropertyAngle', value: -5 }, + ] }, + { id: 'Wedge', typeId: 'Part::Wedge', properties: [ + { name: 'Xmin', label: 'X minimum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 0 }, + { name: 'Ymin', label: 'Y minimum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 0 }, + { name: 'Zmin', label: 'Z minimum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 0 }, + { name: 'X2min', label: 'X2 minimum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 0 }, + { name: 'Z2min', label: 'Z2 minimum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 0 }, + { name: 'Xmax', label: 'X maximum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'Ymax', label: 'Y maximum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'Zmax', label: 'Z maximum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'X2max', label: 'X2 maximum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 8 }, + { name: 'Z2max', label: 'Z2 maximum', group: 'Wedge', scope: 'data', type: 'App::PropertyLength', value: 8 }, + ] }, + { id: 'Tool', typeId: 'Part::Box', properties: [ + { name: 'Length', label: 'Length', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 1 }, + { name: 'Width', label: 'Width', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 1 }, + { name: 'Height', label: 'Height', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 1 }, + ] }, + ...['Fuse', 'Cut', 'Common'].map((id) => ({ id, typeId: `Part::${id}`, properties: [ + { name: 'Base', label: 'Base', group: 'Boolean', scope: 'data' as const, type: 'App::PropertyLink' as const, value: 'Box' }, + { name: 'Tool', label: 'Tool', group: 'Boolean', scope: 'data' as const, type: 'App::PropertyLink' as const, value: 'Tool' }, + { name: 'Refine', label: 'Refine shape', group: 'Boolean', scope: 'data' as const, type: 'App::PropertyBool' as const, value: id === 'Common' }, + ] })), + ], + dependencies: ['Fuse', 'Cut', 'Common'].flatMap((sourceId) => [ + { sourceId, targetId: 'Box', relation: 'link' as const, propertyName: 'Base' }, + { sourceId, targetId: 'Tool', relation: 'link' as const, propertyName: 'Tool' }, + ]), + recompute: { generation: 0, status: 'idle', objectStates: Object.fromEntries(['Box', 'Cylinder', 'Sphere', 'Ellipsoid', 'Cone', 'Torus', 'Prism', 'Wedge', 'Tool', 'Fuse', 'Cut', 'Common'].map((id) => [id, 'up-to-date' as const])), dirtyObjects: [], order: [], errors: [] }, + } + const primitiveArchivePath = join(temporaryDirectory, 'native-part-box.fcstd') + const primitiveResavedPath = join(temporaryDirectory, 'native-part-resaved.fcstd') + await writeFile(primitiveArchivePath, serializeFcstdMetadataArchive(primitiveDocument)) + const primitiveCases = [ + { objectName: 'Box', expectedVolume: 24, expectedFaces: 6, propertyNames: 'Length,Width,Height,WebMode,WebProgress', properties: { Length: 2, Width: 3, Height: 4, WebMode: 'Manufacturing', WebProgress: 35 } }, + { objectName: 'Cylinder', expectedVolume: 10 * Math.PI, propertyNames: 'Radius,Height,Angle', properties: { Radius: 2, Height: 5, Angle: 180 } }, + { objectName: 'Sphere', expectedVolume: 36 * Math.PI, propertyNames: 'Radius', properties: { Radius: 3 } }, + { objectName: 'Ellipsoid', expectedVolume: 133.9826640573845, expectedFaces: 1, propertyNames: 'Radius1,Radius2,Radius3,Angle1,Angle2,Angle3', properties: { Radius1: 2, Radius2: 4, Radius3: 0, Angle1: -90, Angle2: 90, Angle3: 360 } }, + { objectName: 'Cone', expectedVolume: 56 * Math.PI, propertyNames: 'Radius1,Radius2,Height,Angle', properties: { Radius1: 4, Radius2: 2, Height: 6, Angle: 360 } }, + { objectName: 'Torus', expectedVolume: 60 * Math.PI ** 2, propertyNames: 'Radius1,Radius2,Angle1,Angle2,Angle3', properties: { Radius1: 10, Radius2: 2, Angle1: -180, Angle2: 180, Angle3: 270 } }, + { objectName: 'Prism', expectedVolume: 60 * Math.sqrt(3), expectedFaces: 8, propertyNames: 'Polygon,Circumradius,Height,FirstAngle,SecondAngle', properties: { Polygon: 6, Circumradius: 2, Height: 10, FirstAngle: 10, SecondAngle: -5 } }, + { objectName: 'Wedge', expectedVolume: 2440 / 3, expectedFaces: 6, propertyNames: 'Xmin,Ymin,Zmin,Z2min,X2min,Xmax,Ymax,Zmax,Z2max,X2max', properties: { Xmin: 0, Ymin: 0, Zmin: 0, Z2min: 0, X2min: 0, Xmax: 10, Ymax: 10, Zmax: 10, Z2max: 8, X2max: 8 } }, + { objectName: 'Fuse', expectedVolume: 24, propertyNames: 'Base,Tool,Refine', properties: { Base: 'Box', Tool: 'Tool', Refine: false } }, + { objectName: 'Cut', expectedVolume: 23, propertyNames: 'Base,Tool,Refine', properties: { Base: 'Box', Tool: 'Tool', Refine: false } }, + { objectName: 'Common', expectedVolume: 1, propertyNames: 'Base,Tool,Refine', properties: { Base: 'Box', Tool: 'Tool', Refine: true } }, + ] + const primitiveResults: Record = {} + for (const oracleCase of primitiveCases) { + const primitiveResult = runFreecadProbe(primitiveArchivePath, oracleCase.objectName, { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_PROPERTIES: oracleCase.propertyNames, ...(oracleCase.objectName === 'Common' ? { FREECAD_FCSTD_RESAVE_PATH: primitiveResavedPath } : {}) }) + primitiveResults[oracleCase.objectName] = primitiveResult + if (primitiveResult.freecadVersion !== '1.1.1' || primitiveResult.shapeNull !== false || primitiveResult.shapeValid !== true || primitiveResult.shapeError !== null || primitiveResult.solidCount !== 1 || (oracleCase.expectedFaces !== undefined && primitiveResult.faceCount !== oracleCase.expectedFaces) || !near(primitiveResult.volume, oracleCase.expectedVolume, 1e-8)) fail(`unexpected native Part::${oracleCase.objectName} result: ${JSON.stringify(primitiveResult)}`) + if (Object.entries(oracleCase.properties).some(([name, expected]) => primitiveResult.properties[name] !== expected) || Object.keys(primitiveResult.properties).length !== Object.keys(oracleCase.properties).length) fail(`native Part::${oracleCase.objectName} properties did not restore: ${JSON.stringify(primitiveResult.properties)}`) + } + const primitiveResaved = inspectFcstdArchive(new Uint8Array(await readFile(primitiveResavedPath))) + const decodedProperty = (objectName: string, propertyName: string) => { + const property = primitiveResaved.objects.find((object) => object.name === objectName)?.properties.find((candidate) => candidate.name === propertyName) ?? fail(`FreeCAD resave is missing ${objectName}.${propertyName}.`) + const decodedPropertyValue = decodeFcstdPropertyValue(property) + if (!decodedPropertyValue.decoded) fail(`FreeCAD resave could not decode ${objectName}.${propertyName}: ${decodedPropertyValue.error ?? 'unknown error'}`) + return decodedPropertyValue.value + } + if (decodedProperty('Box', 'Length') !== 2 || decodedProperty('Box', 'Width') !== 3 || decodedProperty('Box', 'Height') !== 4 || decodedProperty('Box', 'WebMode') !== 'Manufacturing' || decodedProperty('Box', 'WebProgress') !== 35) fail('Web inspector did not recover the resaved Box parameters.') + const prismRoundTripProperties = Object.fromEntries(['Polygon', 'Circumradius', 'Height', 'FirstAngle', 'SecondAngle'].map((name) => { + const native = primitiveResaved.objects.find((object) => object.name === 'Prism')?.properties.find((property) => property.name === name) + return [name, { typeId: native?.typeId, value: decodedProperty('Prism', name) }] + })) + if (prismRoundTripProperties.Polygon.value !== 6 || prismRoundTripProperties.Circumradius.value !== 2 || prismRoundTripProperties.Height.value !== 10 || prismRoundTripProperties.FirstAngle.value !== 10 || prismRoundTripProperties.SecondAngle.value !== -5) fail(`Web inspector did not recover the resaved Prism parameters: ${JSON.stringify(prismRoundTripProperties)}`) + const wedgeValues = { Xmin: 0, Ymin: 0, Zmin: 0, Z2min: 0, X2min: 0, Xmax: 10, Ymax: 10, Zmax: 10, Z2max: 8, X2max: 8 } + const wedgeRoundTripProperties = Object.fromEntries(Object.keys(wedgeValues).map((name) => { + const native = primitiveResaved.objects.find((object) => object.name === 'Wedge')?.properties.find((property) => property.name === name) + return [name, { typeId: native?.typeId, value: decodedProperty('Wedge', name) }] + })) + if (Object.entries(wedgeValues).some(([name, expected]) => wedgeRoundTripProperties[name].value !== expected)) fail(`Web inspector did not recover the resaved Wedge parameters: ${JSON.stringify(wedgeRoundTripProperties)}`) + const ellipsoidValues = { Radius1: 2, Radius2: 4, Radius3: 0, Angle1: -90, Angle2: 90, Angle3: 360 } + const ellipsoidRoundTripProperties = Object.fromEntries(Object.keys(ellipsoidValues).map((name) => { + const native = primitiveResaved.objects.find((object) => object.name === 'Ellipsoid')?.properties.find((property) => property.name === name) + return [name, { typeId: native?.typeId, value: decodedProperty('Ellipsoid', name) }] + })) + if (Object.entries(ellipsoidValues).some(([name, expected]) => ellipsoidRoundTripProperties[name].value !== expected)) fail(`Web inspector did not recover the resaved Ellipsoid parameters: ${JSON.stringify(ellipsoidRoundTripProperties)}`) + for (const booleanName of ['Fuse', 'Cut', 'Common']) if (decodedProperty(booleanName, 'Base') !== 'Box' || decodedProperty(booleanName, 'Tool') !== 'Tool' || decodedProperty(booleanName, 'Refine') !== (booleanName === 'Common')) fail(`Web inspector did not recover the resaved ${booleanName} links and Refine value.`) + for (const objectName of ['Box', 'Cylinder', 'Sphere', 'Ellipsoid', 'Cone', 'Torus', 'Prism', 'Wedge', 'Tool', 'Fuse', 'Cut', 'Common']) { + const shape = primitiveResaved.objects.find((object) => object.name === objectName)?.properties.find((property) => property.name === 'Shape')?.shapeResource + if (!shape || !primitiveResaved.shapeResources.some((resource) => resource.path === shape.path && resource.status === 'available')) fail(`FreeCAD resave did not produce an available ${objectName}.Shape resource.`) + } + + const sphereTrimPath = join(temporaryDirectory, 'native-sphere-trim.fcstd') + const sphereTrimResavedPath = join(temporaryDirectory, 'native-sphere-trim-resaved.fcstd') + const sphereTrimProperties = { Radius: 5, Angle1: -45, Angle2: 45, Angle3: 120 } + const sphereTrimDocument: DocumentSnapshot = { + id: 'fcstd-native-sphere-trim', label: 'FCStd native Sphere trim', version: 1, dirty: false, readOnly: false, units: 'mm', + tree: [{ id: 'SphereTrim', label: 'SphereTrim', type: 'feature', state: 'up-to-date' }], + objects: [{ id: 'SphereTrim', typeId: 'Part::Sphere', properties: [ + { name: 'Radius', label: 'Radius', group: 'Sphere', scope: 'data', type: 'App::PropertyLength', value: sphereTrimProperties.Radius }, + { name: 'Angle1', label: 'Lower angle', group: 'Sphere', scope: 'data', type: 'App::PropertyAngle', value: sphereTrimProperties.Angle1 }, + { name: 'Angle2', label: 'Upper angle', group: 'Sphere', scope: 'data', type: 'App::PropertyAngle', value: sphereTrimProperties.Angle2 }, + { name: 'Angle3', label: 'Azimuth angle', group: 'Sphere', scope: 'data', type: 'App::PropertyAngle', value: sphereTrimProperties.Angle3 }, + ] }], + dependencies: [], + recompute: { generation: 0, status: 'idle', objectStates: { SphereTrim: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + await writeFile(sphereTrimPath, serializeFcstdMetadataArchive(sphereTrimDocument)) + const sphereTrimResult = runFreecadProbe(sphereTrimPath, 'SphereTrim', { + FREECAD_FCSTD_RECOMPUTE: '1', + FREECAD_FCSTD_PROPERTIES: 'Radius,Angle1,Angle2,Angle3', + FREECAD_FCSTD_RESAVE_PATH: sphereTrimResavedPath, + }) + const sphereTrimZ = 5 * Math.sin(Math.PI / 4) + const sphereTrimVolume = (Math.PI * (25 * (sphereTrimZ * 2) - (sphereTrimZ ** 3 - (-sphereTrimZ) ** 3) / 3)) / 3 + const sphereTrimBounds = { min: [-2.5, 0, -sphereTrimZ], max: [5, 5, sphereTrimZ] } + if (sphereTrimResult.freecadVersion !== '1.1.1' || sphereTrimResult.shapeNull !== false || sphereTrimResult.shapeValid !== true || sphereTrimResult.solidCount !== 1 || !near(sphereTrimResult.volume, sphereTrimVolume, 1e-8) || !sphereTrimResult.boundingBox || sphereTrimResult.boundingBox.min.some((value, index) => !near(value, sphereTrimBounds.min[index], 1e-8)) || sphereTrimResult.boundingBox.max.some((value, index) => !near(value, sphereTrimBounds.max[index], 1e-8))) fail(`unexpected native Part::Sphere trim result: ${JSON.stringify(sphereTrimResult)}`) + if (Object.entries(sphereTrimProperties).some(([name, expected]) => sphereTrimResult.properties[name] !== expected)) fail(`native Part::Sphere trim properties did not restore: ${JSON.stringify(sphereTrimResult.properties)}`) + const sphereTrimResaved = inspectFcstdArchive(new Uint8Array(await readFile(sphereTrimResavedPath))) + const sphereTrimObject = sphereTrimResaved.objects.find((object) => object.name === 'SphereTrim') ?? fail('FreeCAD resave is missing SphereTrim.') + for (const [name, expected] of Object.entries(sphereTrimProperties)) { + const property = sphereTrimObject.properties.find((candidate) => candidate.name === name) ?? fail(`FreeCAD resave is missing SphereTrim.${name}.`) + const decodedValue = decodeFcstdPropertyValue(property) + if (!decodedValue.decoded || decodedValue.value !== expected) fail(`Web inspector did not recover SphereTrim.${name}.`) + } + + const featureProfile = createSketch('FeatureProfile', [ + { id: 'profile-bottom', type: 'line', start: { x: 2, y: 0 }, end: { x: 4, y: 0 } }, + { id: 'profile-right', type: 'line', start: { x: 4, y: 0 }, end: { x: 4, y: 3 } }, + { id: 'profile-top', type: 'line', start: { x: 4, y: 3 }, end: { x: 2, y: 3 } }, + { id: 'profile-left', type: 'line', start: { x: 2, y: 3 }, end: { x: 2, y: 0 } }, + ]) + const partFeatureDocument: DocumentSnapshot = { + id: 'fcstd-native-part-features', label: 'FCStd native Part features', version: 1, dirty: false, readOnly: false, units: 'mm', + tree: [ + { id: 'FeatureProfile', label: 'FeatureProfile', type: 'sketch', state: 'up-to-date' }, + { id: 'Extrusion', label: 'Extrusion', type: 'feature', state: 'up-to-date' }, + { id: 'Revolution', label: 'Revolution', type: 'feature', state: 'up-to-date' }, + ], + objects: [ + { id: 'FeatureProfile', typeId: 'Sketcher::SketchObject', properties: [], sketch: featureProfile }, + { id: 'Extrusion', typeId: 'Part::Extrusion', properties: [ + { name: 'Base', label: 'Base', group: 'Extrude', scope: 'data', type: 'App::PropertyLink', value: 'FeatureProfile' }, + { name: 'Dir', label: 'Direction', group: 'Extrude', scope: 'data', type: 'App::PropertyVector', value: { x: 0, y: 0, z: 1 } }, + { name: 'DirMode', label: 'Direction mode', group: 'Extrude', scope: 'data', type: 'App::PropertyEnumeration', value: 'Custom', options: ['Custom', 'Edge', 'Normal'] }, + { name: 'LengthFwd', label: 'Forward length', group: 'Extrude', scope: 'data', type: 'App::PropertyDistance', value: 5 }, + { name: 'LengthRev', label: 'Reverse length', group: 'Extrude', scope: 'data', type: 'App::PropertyDistance', value: 0 }, + { name: 'Solid', label: 'Solid', group: 'Extrude', scope: 'data', type: 'App::PropertyBool', value: true }, + { name: 'Reversed', label: 'Reversed', group: 'Extrude', scope: 'data', type: 'App::PropertyBool', value: false }, + { name: 'Symmetric', label: 'Symmetric', group: 'Extrude', scope: 'data', type: 'App::PropertyBool', value: false }, + { name: 'TaperAngle', label: 'Taper angle', group: 'Extrude', scope: 'data', type: 'App::PropertyAngle', value: 0 }, + { name: 'TaperAngleRev', label: 'Reverse taper angle', group: 'Extrude', scope: 'data', type: 'App::PropertyAngle', value: 0 }, + ] }, + { id: 'Revolution', typeId: 'Part::Revolution', properties: [ + { name: 'Source', label: 'Source', group: 'Revolve', scope: 'data', type: 'App::PropertyLink', value: 'FeatureProfile' }, + { name: 'Base', label: 'Axis base', group: 'Revolve', scope: 'data', type: 'App::PropertyVector', value: { x: 0, y: 0, z: 0 } }, + { name: 'Axis', label: 'Axis', group: 'Revolve', scope: 'data', type: 'App::PropertyVector', value: { x: 0, y: 1, z: 0 } }, + { name: 'Angle', label: 'Angle', group: 'Revolve', scope: 'data', type: 'App::PropertyAngle', value: 360 }, + { name: 'Symmetric', label: 'Symmetric', group: 'Revolve', scope: 'data', type: 'App::PropertyBool', value: false }, + { name: 'Solid', label: 'Solid', group: 'Revolve', scope: 'data', type: 'App::PropertyBool', value: true }, + ] }, + ], + dependencies: [ + { sourceId: 'Extrusion', targetId: 'FeatureProfile', relation: 'link', propertyName: 'Base' }, + { sourceId: 'Revolution', targetId: 'FeatureProfile', relation: 'link', propertyName: 'Source' }, + ], + recompute: { generation: 0, status: 'idle', objectStates: { FeatureProfile: 'up-to-date', Extrusion: 'up-to-date', Revolution: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const partFeaturePath = join(temporaryDirectory, 'native-part-features.fcstd') + const partFeatureResavedPath = join(temporaryDirectory, 'native-part-features-resaved.fcstd') + await writeFile(partFeaturePath, serializeFcstdMetadataArchive(partFeatureDocument)) + const extrusionResult = runFreecadProbe(partFeaturePath, 'Extrusion', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_PROPERTIES: 'Base,DirMode,LengthFwd,LengthRev,Solid,Reversed,Symmetric,TaperAngle,TaperAngleRev' }) + if (extrusionResult.freecadVersion !== '1.1.1' || extrusionResult.shapeNull !== false || extrusionResult.shapeValid !== true || extrusionResult.shapeError !== null || extrusionResult.solidCount !== 1 || !near(extrusionResult.volume, 30, 1e-8)) fail(`unexpected native Part::Extrusion result: ${JSON.stringify(extrusionResult)}`) + if (JSON.stringify(extrusionResult.properties) !== '{"Base":"FeatureProfile","DirMode":"Custom","LengthFwd":5,"LengthRev":0,"Reversed":false,"Solid":true,"Symmetric":false,"TaperAngle":0,"TaperAngleRev":0}') fail(`native Part::Extrusion properties did not restore: ${JSON.stringify(extrusionResult.properties)}`) + const revolutionResult = runFreecadProbe(partFeaturePath, 'Revolution', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_PROPERTIES: 'Source,Angle,Symmetric,Solid' }) + if (revolutionResult.freecadVersion !== '1.1.1' || revolutionResult.shapeNull !== false || revolutionResult.shapeValid !== true || revolutionResult.shapeError !== null || revolutionResult.solidCount !== 1 || !near(revolutionResult.volume, 36 * Math.PI, 1e-8)) fail(`unexpected native Part::Revolution result: ${JSON.stringify(revolutionResult)}`) + if (JSON.stringify(revolutionResult.properties) !== '{"Angle":360,"Solid":true,"Source":"FeatureProfile","Symmetric":false}') fail(`native Part::Revolution properties did not restore: ${JSON.stringify(revolutionResult.properties)}`) + const revolutionResavedResult = runFreecadProbe(partFeaturePath, 'Revolution', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_PROPERTIES: 'Source,Angle,Symmetric,Solid', FREECAD_FCSTD_RESAVE_PATH: partFeatureResavedPath }) + if (revolutionResavedResult.shapeValid !== true) fail('FreeCAD did not resave the verified native Part::Revolution document.') + const partFeatureResaved = inspectFcstdArchive(new Uint8Array(await readFile(partFeatureResavedPath))) + const resavedFeatureValue = (objectName: string, propertyName: string) => { + const property = partFeatureResaved.objects.find((object) => object.name === objectName)?.properties.find((candidate) => candidate.name === propertyName) ?? fail(`FreeCAD resave is missing ${objectName}.${propertyName}.`) + const decodedValue = decodeFcstdPropertyValue(property) + if (!decodedValue.decoded) fail(`Web inspector could not decode ${objectName}.${propertyName}.`) + return decodedValue.value + } + if (partFeatureResaved.objects.find((object) => object.name === 'Extrusion')?.typeId !== 'Part::Extrusion' || resavedFeatureValue('Extrusion', 'Base') !== 'FeatureProfile' || resavedFeatureValue('Extrusion', 'LengthFwd') !== 5 || resavedFeatureValue('Extrusion', 'Solid') !== true) fail('Web inspector did not recover the resaved native Part::Extrusion schema.') + if (partFeatureResaved.objects.find((object) => object.name === 'Revolution')?.typeId !== 'Part::Revolution' || resavedFeatureValue('Revolution', 'Source') !== 'FeatureProfile' || resavedFeatureValue('Revolution', 'Angle') !== 360 || resavedFeatureValue('Revolution', 'Solid') !== true) fail('Web inspector did not recover the resaved native Part::Revolution schema.') + for (const objectName of ['Extrusion', 'Revolution']) { + const shape = partFeatureResaved.objects.find((object) => object.name === objectName)?.properties.find((property) => property.name === 'Shape')?.shapeResource + if (!shape || !partFeatureResaved.shapeResources.some((resource) => resource.path === shape.path && resource.status === 'available')) fail(`FreeCAD resave did not produce an available ${objectName}.Shape resource.`) + } + + const sketch = createSketch('Sketch', [ + { id: 'bottom', type: 'line', start: { x: 0, y: 0 }, end: { x: 20, y: 0 } }, + { id: 'right', type: 'line', start: { x: 20, y: 0 }, end: { x: 20, y: 10 } }, + { id: 'top', type: 'line', start: { x: 20, y: 10 }, end: { x: 0, y: 10 } }, + { id: 'left', type: 'line', start: { x: 0, y: 10 }, end: { x: 0, y: 0 } }, + { id: 'construction-axis', type: 'line', start: { x: 10, y: 0 }, end: { x: 10, y: 10 }, construction: true }, + { id: 'reference-circle', type: 'circle', center: { x: 30, y: 5 }, radius: 2 }, + { id: 'datum-point', type: 'point', position: { x: 35, y: 5 } }, + { id: 'profile-arc', type: 'arc', center: { x: 40, y: 5 }, radius: 2, startAngle: 0, endAngle: Math.PI }, + { id: 'profile-ellipse', type: 'ellipse', center: { x: 47, y: 5 }, majorRadius: 3, minorRadius: 1.5, rotation: 0.25 }, + { id: 'profile-spline', type: 'bspline', degree: 2, controlPoints: [{ x: 52, y: 3 }, { x: 54, y: 7 }, { x: 56, y: 3 }], weights: [1, 1, 1], knots: [0, 0, 0, 1, 1, 1], periodic: false }, + ], [ + { id: 'bottom-horizontal', type: 'horizontal', geometryId: 'bottom' }, + { id: 'right-vertical', type: 'vertical', geometryId: 'right' }, + { id: 'top-horizontal', type: 'horizontal', geometryId: 'top' }, + { id: 'left-vertical', type: 'vertical', geometryId: 'left' }, + { id: 'join-bottom-right', type: 'coincident', first: { geometryId: 'bottom', point: 'end' }, second: { geometryId: 'right', point: 'start' } }, + { id: 'join-right-top', type: 'coincident', first: { geometryId: 'right', point: 'end' }, second: { geometryId: 'top', point: 'start' } }, + { id: 'join-top-left', type: 'coincident', first: { geometryId: 'top', point: 'end' }, second: { geometryId: 'left', point: 'start' } }, + { id: 'join-left-bottom', type: 'coincident', first: { geometryId: 'left', point: 'end' }, second: { geometryId: 'bottom', point: 'start' } }, + { id: 'axis-vertical', type: 'vertical', geometryId: 'construction-axis' }, + { id: 'circle-reference-radius', type: 'radius', geometryId: 'reference-circle', value: 2, driving: false }, + { id: 'external-point-on-edge', type: 'pointOnObject', point: { geometryId: 'datum-point', point: 'position' }, geometryId: 'external-box-edge-projection' }, + ]) + const externalSource = { schemaVersion: 1 as const, objectId: 'ExternalBox', kind: 'edge' as const, persistentId: 'Edge1', topologyVersion: 3, generation: 2, status: 'stable' as const, signature: 'native-box-edge-1' } + const supportSource = { schemaVersion: 1 as const, objectId: 'ExternalBox', kind: 'face' as const, persistentId: 'Face1', topologyVersion: 3, generation: 2, status: 'stable' as const, signature: 'native-box-face-1' } + sketch.externalGeometry = [{ + id: 'external-box-edge', + source: externalSource, + projection: { id: 'external-box-edge-projection', type: 'line', start: { x: 0, y: 0 }, end: { x: 20, y: 0 }, construction: true }, + construction: true, + }] + const sketchDocument: DocumentSnapshot = { + id: 'fcstd-native-sketch', + label: 'FCStd native Sketch', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'ExternalBox', label: 'ExternalBox', type: 'feature', state: 'up-to-date' }, { id: 'Sketch', label: 'Sketch', type: 'sketch', state: 'up-to-date' }], + objects: [ + { id: 'ExternalBox', typeId: 'Part::Box', properties: [ + { name: 'Length', label: 'Length', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 20 }, + { name: 'Width', label: 'Width', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'Height', label: 'Height', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 1 }, + ] }, + { id: 'Sketch', typeId: 'Sketcher::SketchObject', properties: [ + { name: 'Support', label: 'Support', group: 'Attachment', scope: 'data', type: 'App::PropertyLink', value: { objectId: 'ExternalBox', subElement: supportSource } }, + { name: 'MapMode', label: 'Map mode', group: 'Attachment', scope: 'data', type: 'App::PropertyEnumeration', value: 'FlatFace', options: ['Deactivated', 'ObjectXY', 'ObjectXZ', 'ObjectYZ', 'FlatFace', 'NormalToEdge'] }, + { name: 'AttachmentOffset', label: 'Attachment offset', group: 'Attachment', scope: 'data', type: 'App::PropertyPlacement', value: { position: { x: 0, y: 0, z: 0.25 }, rotation: { axis: { x: 0, y: 0, z: 1 }, angle: 0 } } }, + ], sketch }, + ], + dependencies: [{ sourceId: 'Sketch', targetId: 'ExternalBox', relation: 'topo-ref', propertyName: 'ExternalGeometry:external-box-edge', reference: 'Edge1' }], + recompute: { generation: 0, status: 'idle', objectStates: { ExternalBox: 'up-to-date', Sketch: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const sketchArchivePath = join(temporaryDirectory, 'native-sketch.fcstd') + const sketchResavedPath = join(temporaryDirectory, 'native-sketch-resaved.fcstd') + await writeFile(sketchArchivePath, serializeFcstdMetadataArchive(sketchDocument)) + const sketchResult = runFreecadProbe(sketchArchivePath, 'Sketch', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_PROPERTIES: 'WebGeometryIds,WebExternalIds,WebExternalProjectionIds', FREECAD_FCSTD_RESAVE_PATH: sketchResavedPath }) + const expectedConstraintNames = sketch.constraints.map((constraint) => constraint.id) + if (sketchResult.freecadVersion !== '1.1.1' || sketchResult.geometryCount !== 10 || sketchResult.constraintCount !== 11 || sketchResult.externalGeometryCount !== 1 || sketchResult.externalGeoCount !== 3 || JSON.stringify(sketchResult.externalTypes) !== '[0]' || JSON.stringify(sketchResult.externalLinks) !== '[{"objectName":"ExternalBox","subElements":["Edge1"]}]' || sketchResult.mapMode !== 'FlatFace' || JSON.stringify(sketchResult.attachmentSupport) !== '[{"objectName":"ExternalBox","subElements":["Face1"]}]' || JSON.stringify(sketchResult.attachmentOffset?.position) !== '[0,0,0.25]' || !near(sketchResult.attachmentOffset?.angle ?? null, 0) || JSON.stringify(sketchResult.constructionGeometry) !== '[4]' || JSON.stringify(sketchResult.constraintNames) !== JSON.stringify(expectedConstraintNames) || JSON.stringify(sketchResult.properties.WebGeometryIds) !== JSON.stringify(sketch.geometry.map((geometry) => geometry.id)) || JSON.stringify(sketchResult.properties.WebExternalIds) !== '["external-box-edge"]' || JSON.stringify(sketchResult.properties.WebExternalProjectionIds) !== '["external-box-edge-projection"]') fail(`unexpected native Sketch result: ${JSON.stringify(sketchResult)}`) + const resavedSketchInspection = inspectFcstdArchive(new Uint8Array(await readFile(sketchResavedPath))) + const resavedSketchObject = resavedSketchInspection.objects.find((object) => object.name === 'Sketch') ?? fail('Web inspector did not find the resaved native Sketch object.') + const resavedSketch = resavedSketchObject.sketch ?? fail('Web inspector did not reconstruct the resaved native Sketch.') + if (JSON.stringify(resavedSketch.geometry.map((geometry) => geometry.id)) !== JSON.stringify(sketch.geometry.map((geometry) => geometry.id)) || JSON.stringify(resavedSketch.constraints.map((constraint) => constraint.id)) !== JSON.stringify(expectedConstraintNames) || resavedSketch.geometry[4]?.construction !== true || resavedSketch.externalGeometry[0]?.id !== 'external-box-edge' || resavedSketch.externalGeometry[0]?.projection.id !== 'external-box-edge-projection' || JSON.stringify(resavedSketch.externalGeometry[0]?.source) !== JSON.stringify(externalSource)) fail('Web inspector did not preserve native Sketch IDs, external TopoRef, or construction state.') + const resavedMapMode = resavedSketchObject.properties.find((property) => property.name === 'MapMode') ?? fail('FreeCAD resave did not preserve Sketch.MapMode.') + const resavedAttachmentSupport = resavedSketchObject.properties.find((property) => property.name === 'AttachmentSupport') ?? fail('FreeCAD resave did not preserve Sketch.AttachmentSupport.') + if (decodeFcstdPropertyValue(resavedMapMode).value !== 'FlatFace' || JSON.stringify(decodeFcstdPropertyValue(resavedAttachmentSupport).value) !== '{"schemaVersion":1,"entries":[{"objectId":"ExternalBox","subElement":"Face1"}]}') fail('Web inspector did not decode the native Sketch attachment fields.') + const proxySketch = resavedSketchInspection.proxyDocument.objects.find((object) => object.id === 'Sketch') ?? fail('Web proxy document did not preserve the resaved Sketch.') + if (JSON.stringify(proxySketch.properties.find((property) => property.name === 'Support')?.value) !== JSON.stringify({ objectId: 'ExternalBox', subElement: supportSource }) || proxySketch.properties.find((property) => property.name === 'MapMode')?.value !== 'FlatFace') fail('Web proxy document did not recover the exact Support TopoRef or MapMode.') + + const faceSketch = createSketch('FaceSketch', [{ id: 'datum', type: 'point', position: { x: 0, y: 5 } }]) + const faceSource = { schemaVersion: 1 as const, objectId: 'FaceBox', kind: 'face' as const, persistentId: 'Face6', topologyVersion: 5, generation: 4, status: 'stable' as const, signature: 'native-box-face-6' } + faceSketch.externalGeometry = [ + { id: 'face-left', source: faceSource, projection: { id: 'face-left-projection', type: 'line', start: { x: 0, y: 0 }, end: { x: 0, y: 10 }, construction: true }, construction: true }, + { id: 'face-top', source: faceSource, projection: { id: 'face-top-projection', type: 'line', start: { x: 0, y: 10 }, end: { x: 20, y: 10 }, construction: true }, construction: true }, + { id: 'face-right', source: faceSource, projection: { id: 'face-right-projection', type: 'line', start: { x: 20, y: 0 }, end: { x: 20, y: 10 }, construction: true }, construction: true }, + { id: 'face-bottom', source: faceSource, projection: { id: 'face-bottom-projection', type: 'line', start: { x: 0, y: 0 }, end: { x: 20, y: 0 }, construction: true }, construction: true }, + ] + faceSketch.constraints = [{ id: 'datum-on-face-left', type: 'pointOnObject', point: { geometryId: 'datum', point: 'position' }, geometryId: 'face-left-projection' }] + const faceDocument: DocumentSnapshot = { + id: 'fcstd-native-face-projection', + label: 'FCStd native Face projection', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'FaceBox', label: 'FaceBox', type: 'feature', state: 'up-to-date' }, { id: 'FaceSketch', label: 'FaceSketch', type: 'sketch', state: 'up-to-date' }], + objects: [ + { id: 'FaceBox', typeId: 'Part::Box', properties: [ + { name: 'Length', label: 'Length', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 20 }, + { name: 'Width', label: 'Width', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'Height', label: 'Height', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 1 }, + ] }, + { id: 'FaceSketch', typeId: 'Sketcher::SketchObject', properties: [], sketch: faceSketch }, + ], + dependencies: [{ sourceId: 'FaceSketch', targetId: 'FaceBox', relation: 'topo-ref', propertyName: 'ExternalGeometry:face-left', reference: 'Face6' }], + recompute: { generation: 0, status: 'idle', objectStates: { FaceBox: 'up-to-date', FaceSketch: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const faceArchivePath = join(temporaryDirectory, 'native-face-projection.fcstd') + const faceResavedPath = join(temporaryDirectory, 'native-face-projection-resaved.fcstd') + await writeFile(faceArchivePath, serializeFcstdMetadataArchive(faceDocument)) + const faceResult = runFreecadProbe(faceArchivePath, 'FaceSketch', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_RESAVE_PATH: faceResavedPath }) + if (faceResult.freecadVersion !== '1.1.1' || faceResult.geometryCount !== 1 || faceResult.constraintCount !== 1 || faceResult.externalGeometryCount !== 1 || faceResult.externalGeoCount !== 6 || JSON.stringify(faceResult.externalTypes) !== '[0]' || JSON.stringify(faceResult.externalLinks) !== '[{"objectName":"FaceBox","subElements":["Face6"]}]' || JSON.stringify(faceResult.constraintNames) !== '["datum-on-face-left"]' || JSON.stringify(faceResult.constraintTypes) !== '["PointOnObject"]') fail(`unexpected native Face projection result: ${JSON.stringify(faceResult)}`) + const resavedFace = inspectFcstdArchive(new Uint8Array(await readFile(faceResavedPath))).objects.find((object) => object.name === 'FaceSketch')?.sketch ?? fail('Web inspector did not reconstruct the resaved native Face projection Sketch.') + if (JSON.stringify(resavedFace.externalGeometry.map((external) => external.id)) !== JSON.stringify(faceSketch.externalGeometry.map((external) => external.id)) || JSON.stringify(resavedFace.externalGeometry.map((external) => external.projection.id)) !== JSON.stringify(faceSketch.externalGeometry.map((external) => external.projection.id)) || resavedFace.externalGeometry.some((external) => JSON.stringify(external.source) !== JSON.stringify(faceSource)) || JSON.stringify(resavedFace.constraints) !== JSON.stringify([{ ...faceSketch.constraints[0], driving: true }])) fail(`Web inspector did not preserve the native Face projection group: ${JSON.stringify(resavedFace)}`) + + const modeSketch = createSketch('ModeSketch') + const intersectionSource = { schemaVersion: 1 as const, objectId: 'ModeBox', kind: 'face' as const, persistentId: 'Face1', topologyVersion: 6, generation: 4, status: 'stable' as const, signature: 'native-box-face-1-intersection' } + const bothSource = { schemaVersion: 1 as const, objectId: 'ModeBox', kind: 'face' as const, persistentId: 'Face6', topologyVersion: 6, generation: 4, status: 'stable' as const, signature: 'native-box-face-6-both' } + const syncSource = { schemaVersion: 1 as const, objectId: 'ModeBox', kind: 'edge' as const, persistentId: 'Edge1', topologyVersion: 6, generation: 4, status: 'stable' as const, signature: 'native-box-edge-1-sync' } + modeSketch.externalGeometry = [ + { id: 'intersection-face', source: intersectionSource, projection: { id: 'intersection-face-line', type: 'line', start: { x: 0, y: 0 }, end: { x: 0, y: 10 }, construction: true }, construction: true, mode: 'intersection', defining: true }, + { id: 'both-left', source: bothSource, projection: { id: 'both-left-line', type: 'line', start: { x: 0, y: 0 }, end: { x: 0, y: 10 }, construction: true }, construction: true, mode: 'both', defining: true }, + { id: 'both-top', source: bothSource, projection: { id: 'both-top-line', type: 'line', start: { x: 0, y: 10 }, end: { x: 20, y: 10 }, construction: true }, construction: true, mode: 'both', defining: true }, + { id: 'both-right', source: bothSource, projection: { id: 'both-right-line', type: 'line', start: { x: 20, y: 0 }, end: { x: 20, y: 10 }, construction: true }, construction: true, mode: 'both', defining: true }, + { id: 'both-bottom', source: bothSource, projection: { id: 'both-bottom-line', type: 'line', start: { x: 0, y: 0 }, end: { x: 20, y: 0 }, construction: true }, construction: true, mode: 'both', defining: true }, + { id: 'frozen-edge', source: syncSource, projection: { id: 'frozen-edge-line', type: 'line', start: { x: 0, y: 0 }, end: { x: 20, y: 0 }, construction: true }, construction: true, frozen: true }, + ] + const modeDocument: DocumentSnapshot = { + id: 'fcstd-native-external-modes', + label: 'FCStd native external modes', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'ModeBox', label: 'ModeBox', type: 'feature', state: 'up-to-date' }, { id: 'ModeSketch', label: 'ModeSketch', type: 'sketch', state: 'up-to-date' }], + objects: [ + { id: 'ModeBox', typeId: 'Part::Box', properties: [ + { name: 'Length', label: 'Length', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 20 }, + { name: 'Width', label: 'Width', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 10 }, + { name: 'Height', label: 'Height', group: 'Box', scope: 'data', type: 'App::PropertyLength', value: 1 }, + ] }, + { id: 'ModeSketch', typeId: 'Sketcher::SketchObject', properties: [], sketch: modeSketch }, + ], + dependencies: [ + { sourceId: 'ModeSketch', targetId: 'ModeBox', relation: 'topo-ref', propertyName: 'ExternalGeometry:intersection-face', reference: 'Face1' }, + { sourceId: 'ModeSketch', targetId: 'ModeBox', relation: 'topo-ref', propertyName: 'ExternalGeometry:both-left', reference: 'Face6' }, + { sourceId: 'ModeSketch', targetId: 'ModeBox', relation: 'topo-ref', propertyName: 'ExternalGeometry:frozen-edge', reference: 'Edge1' }, + ], + recompute: { generation: 0, status: 'idle', objectStates: { ModeBox: 'up-to-date', ModeSketch: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const modeArchivePath = join(temporaryDirectory, 'native-external-modes.fcstd') + const modeResavedPath = join(temporaryDirectory, 'native-external-modes-resaved.fcstd') + await writeFile(modeArchivePath, serializeFcstdMetadataArchive(modeDocument)) + const modeResult = runFreecadProbe(modeArchivePath, 'ModeSketch', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_RESAVE_PATH: modeResavedPath }) + if (modeResult.freecadVersion !== '1.1.1' || modeResult.geometryCount !== 0 || modeResult.constraintCount !== 0 || modeResult.externalGeometryCount !== 1 || modeResult.externalGeoCount !== 8 || JSON.stringify(modeResult.externalTypes) !== '[1,2,0]' || JSON.stringify(modeResult.externalLinks) !== '[{"objectName":"ModeBox","subElements":["Face1","Face6","Edge1"]}]' || JSON.stringify(modeResult.externalStates?.map((state) => state.flags)) !== '[1,1,1,1,1,2]') fail(`unexpected native external mode result: ${JSON.stringify(modeResult)}`) + const resavedModes = inspectFcstdArchive(new Uint8Array(await readFile(modeResavedPath))).objects.find((object) => object.name === 'ModeSketch')?.sketch ?? fail('Web inspector did not reconstruct the resaved native external mode Sketch.') + if (JSON.stringify(resavedModes.externalGeometry.map((external) => external.id)) !== JSON.stringify(modeSketch.externalGeometry.map((external) => external.id)) || JSON.stringify(resavedModes.externalGeometry.map((external) => external.projection.id)) !== JSON.stringify(modeSketch.externalGeometry.map((external) => external.projection.id)) || JSON.stringify(resavedModes.externalGeometry.map((external) => external.mode ?? 'projection')) !== '["intersection","both","both","both","both","projection"]' || resavedModes.externalGeometry.slice(0, 5).some((external) => external.defining !== true) || resavedModes.externalGeometry[5].frozen !== true) fail(`Web inspector did not preserve native external modes and flags: ${JSON.stringify(resavedModes)}`) + + const snellSketch = createSketch('SnellSketch', [ + { id: 'incident-ray', type: 'line', start: { x: 0, y: 0 }, end: { x: 5, y: 5 } }, + { id: 'refracted-ray', type: 'line', start: { x: 5, y: 5 }, end: { x: 10, y: 2 } }, + { id: 'boundary', type: 'line', start: { x: 0, y: 5 }, end: { x: 10, y: 5 }, construction: true }, + ], [{ id: 'refraction', type: 'snellsLaw', first: { geometryId: 'incident-ray', point: 'end' }, second: { geometryId: 'refracted-ray', point: 'start' }, boundaryGeometryId: 'boundary', value: 1.2 }]) + const snellDocument: DocumentSnapshot = { + id: 'fcstd-native-snells-law', + label: 'FCStd native SnellsLaw', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'SnellSketch', label: 'SnellSketch', type: 'sketch', state: 'up-to-date' }], + objects: [{ id: 'SnellSketch', typeId: 'Sketcher::SketchObject', properties: [], sketch: snellSketch }], + dependencies: [], + recompute: { generation: 0, status: 'idle', objectStates: { SnellSketch: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const snellArchivePath = join(temporaryDirectory, 'native-snells-law.fcstd') + const snellResavedPath = join(temporaryDirectory, 'native-snells-law-resaved.fcstd') + await writeFile(snellArchivePath, serializeFcstdMetadataArchive(snellDocument)) + const snellResult = runFreecadProbe(snellArchivePath, 'SnellSketch', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_RESAVE_PATH: snellResavedPath }) + if (snellResult.freecadVersion !== '1.1.1' || snellResult.geometryCount !== 3 || snellResult.constraintCount !== 1 || JSON.stringify(snellResult.constructionGeometry) !== '[2]' || JSON.stringify(snellResult.constraintNames) !== '["refraction"]' || JSON.stringify(snellResult.constraintTypes) !== '["SnellsLaw"]') fail(`unexpected native SnellsLaw result: ${JSON.stringify(snellResult)}`) + const resavedSnell = inspectFcstdArchive(new Uint8Array(await readFile(snellResavedPath))).objects.find((object) => object.name === 'SnellSketch')?.sketch ?? fail('Web inspector did not reconstruct the resaved native SnellsLaw Sketch.') + if (JSON.stringify(resavedSnell.geometry.map((geometry) => geometry.id)) !== JSON.stringify(snellSketch.geometry.map((geometry) => geometry.id)) || JSON.stringify(resavedSnell.constraints) !== JSON.stringify([{ ...snellSketch.constraints[0], driving: true }])) fail('Web inspector did not preserve the native SnellsLaw references or value.') + + const weightSketch = createSketch('WeightSketch', [{ + id: 'weighted-spline', + type: 'bspline', + degree: 2, + controlPoints: [{ x: 0, y: 0 }, { x: 3, y: 4 }, { x: 6, y: 0 }], + weights: [1, 0.75, 1], + knots: [0, 0, 0, 1, 1, 1], + periodic: false, + }], [{ id: 'middle-weight', type: 'weight', geometryId: 'weighted-spline', controlPointIndex: 1, value: 0.75 }]) + const weightDocument: DocumentSnapshot = { + id: 'fcstd-native-weight', + label: 'FCStd native Weight', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'WeightSketch', label: 'WeightSketch', type: 'sketch', state: 'up-to-date' }], + objects: [{ id: 'WeightSketch', typeId: 'Sketcher::SketchObject', properties: [], sketch: weightSketch }], + dependencies: [], + recompute: { generation: 0, status: 'idle', objectStates: { WeightSketch: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const weightArchivePath = join(temporaryDirectory, 'native-weight.fcstd') + const weightResavedPath = join(temporaryDirectory, 'native-weight-resaved.fcstd') + await writeFile(weightArchivePath, serializeFcstdMetadataArchive(weightDocument)) + const weightResult = runFreecadProbe(weightArchivePath, 'WeightSketch', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_RESAVE_PATH: weightResavedPath }) + if (weightResult.freecadVersion !== '1.1.1' || weightResult.geometryCount !== 2 || weightResult.constraintCount !== 2 || JSON.stringify(weightResult.constructionGeometry) !== '[1]' || JSON.stringify(weightResult.constraintNames) !== '["__WebSyntheticAlignment0","middle-weight"]' || JSON.stringify(weightResult.constraintTypes) !== '["InternalAlignment","Weight"]') fail(`unexpected native B-spline Weight result: ${JSON.stringify(weightResult)}`) + const resavedWeight = inspectFcstdArchive(new Uint8Array(await readFile(weightResavedPath))).objects.find((object) => object.name === 'WeightSketch')?.sketch ?? fail('Web inspector did not reconstruct the resaved native B-spline Weight Sketch.') + if (JSON.stringify(resavedWeight.geometry.map((geometry) => geometry.id)) !== '["weighted-spline"]' || JSON.stringify(resavedWeight.constraints) !== JSON.stringify([{ ...weightSketch.constraints[0], driving: true }])) fail(`Web inspector did not preserve the native B-spline Weight constraint: ${JSON.stringify(resavedWeight)}`) + + const internalSketch = createSketch('InternalSketch', [ + { id: 'ellipse', type: 'ellipse', center: { x: 5, y: 4 }, majorRadius: 3, minorRadius: 2, rotation: 0.25 }, + { id: 'spline', type: 'bspline', degree: 2, controlPoints: [{ x: 0, y: 0 }, { x: 2, y: 3 }, { x: 4, y: 2 }, { x: 6, y: 0 }], weights: [1, 0.8, 1.2, 1], knots: [0, 0, 0, 0.5, 1, 1, 1], periodic: false }, + ], [ + { id: 'ellipse-major', type: 'internalAlignment', geometryId: 'ellipse', internalGeometryIndex: 0, alignmentType: 'ellipse-major' }, + { id: 'ellipse-minor', type: 'internalAlignment', geometryId: 'ellipse', internalGeometryIndex: 0, alignmentType: 'ellipse-minor' }, + { id: 'ellipse-focus-1', type: 'internalAlignment', geometryId: 'ellipse', internalGeometryIndex: 0, alignmentType: 'ellipse-focus' }, + { id: 'ellipse-focus-2', type: 'internalAlignment', geometryId: 'ellipse', internalGeometryIndex: 1, alignmentType: 'ellipse-focus' }, + { id: 'spline-middle-knot', type: 'internalAlignment', geometryId: 'spline', internalGeometryIndex: 1, alignmentType: 'bspline-knot' }, + ]) + const internalDocument: DocumentSnapshot = { + id: 'fcstd-native-internal-alignment', + label: 'FCStd native InternalAlignment', + version: 1, + dirty: false, + readOnly: false, + units: 'mm', + tree: [{ id: 'InternalSketch', label: 'InternalSketch', type: 'sketch', state: 'up-to-date' }], + objects: [{ id: 'InternalSketch', typeId: 'Sketcher::SketchObject', properties: [], sketch: internalSketch }], + dependencies: [], + recompute: { generation: 0, status: 'idle', objectStates: { InternalSketch: 'up-to-date' }, dirtyObjects: [], order: [], errors: [] }, + } + const internalArchivePath = join(temporaryDirectory, 'native-internal-alignment.fcstd') + const internalResavedPath = join(temporaryDirectory, 'native-internal-alignment-resaved.fcstd') + await writeFile(internalArchivePath, serializeFcstdMetadataArchive(internalDocument)) + const internalResult = runFreecadProbe(internalArchivePath, 'InternalSketch', { FREECAD_FCSTD_RECOMPUTE: '1', FREECAD_FCSTD_RESAVE_PATH: internalResavedPath }) + if (internalResult.freecadVersion !== '1.1.1' || internalResult.geometryCount !== 7 || internalResult.constraintCount !== 5 || JSON.stringify(internalResult.constructionGeometry) !== '[2,3,4,5,6]' || JSON.stringify(internalResult.constraintNames) !== JSON.stringify(internalSketch.constraints.map((constraint) => constraint.id)) || JSON.stringify(internalResult.constraintTypes) !== '["InternalAlignment","InternalAlignment","InternalAlignment","InternalAlignment","InternalAlignment"]') fail(`unexpected native InternalAlignment result: ${JSON.stringify(internalResult)}`) + const resavedInternal = inspectFcstdArchive(new Uint8Array(await readFile(internalResavedPath))).objects.find((object) => object.name === 'InternalSketch')?.sketch ?? fail('Web inspector did not reconstruct the resaved native InternalAlignment Sketch.') + if (JSON.stringify(resavedInternal.geometry.map((geometry) => geometry.id)) !== '["ellipse","spline"]' || JSON.stringify(resavedInternal.constraints) !== JSON.stringify(internalSketch.constraints.map((constraint) => ({ ...constraint, driving: true })))) fail(`Web inspector did not preserve native ellipse/B-spline InternalAlignment: ${JSON.stringify(resavedInternal)}`) + + const summary = { + status: 'freecad-fcstd-native-oracle-pass', + freecadVersion: result.freecadVersion, + shape: { solidCount: result.solidCount, faceCount: result.faceCount, volume: result.volume }, + primitives: Object.fromEntries(Object.entries(primitiveResults).map(([objectName, primitiveResult]) => [objectName, { properties: primitiveResult.properties, solidCount: primitiveResult.solidCount, faceCount: primitiveResult.faceCount, volume: primitiveResult.volume }])), + primitiveRoundTrip: { objectCount: primitiveResaved.objects.length, shapeResourceCount: primitiveResaved.shapeResources.length, stringHasher: primitiveResaved.stringHasherResource?.status ?? 'absent' }, + sketch: { geometryCount: sketchResult.geometryCount, constraintCount: sketchResult.constraintCount, constructionGeometry: sketchResult.constructionGeometry, constraintTypes: sketchResult.constraintTypes, externalGeometryCount: sketchResult.externalGeometryCount, externalGeoCount: sketchResult.externalGeoCount, externalLinks: sketchResult.externalLinks, mapMode: sketchResult.mapMode, attachmentSupport: sketchResult.attachmentSupport, attachmentOffset: sketchResult.attachmentOffset }, + sketchRoundTrip: { geometryIds: resavedSketch.geometry.map((geometry) => geometry.id), constraintIds: resavedSketch.constraints.map((constraint) => constraint.id), externalIds: resavedSketch.externalGeometry.map((external) => external.id), externalSources: resavedSketch.externalGeometry.map((external) => external.source), support: proxySketch.properties.find((property) => property.name === 'Support')?.value, mapMode: proxySketch.properties.find((property) => property.name === 'MapMode')?.value }, + faceProjection: { geometryCount: faceResult.geometryCount, constraintCount: faceResult.constraintCount, externalGeometryCount: faceResult.externalGeometryCount, externalGeoCount: faceResult.externalGeoCount, externalLinks: faceResult.externalLinks, roundTripIds: resavedFace.externalGeometry.map((external) => external.id) }, + externalModes: { externalGeometryCount: modeResult.externalGeometryCount, externalGeoCount: modeResult.externalGeoCount, externalTypes: modeResult.externalTypes, externalStates: modeResult.externalStates, roundTripModes: resavedModes.externalGeometry.map((external) => external.mode ?? 'projection') }, + snellsLaw: { geometryCount: snellResult.geometryCount, constraintCount: snellResult.constraintCount, constraintTypes: snellResult.constraintTypes, roundTrip: resavedSnell.constraints }, + weight: { geometryCount: weightResult.geometryCount, constraintCount: weightResult.constraintCount, constructionGeometry: weightResult.constructionGeometry, constraintTypes: weightResult.constraintTypes, roundTrip: resavedWeight.constraints }, + internalAlignment: { geometryCount: internalResult.geometryCount, constraintCount: internalResult.constraintCount, constructionGeometry: internalResult.constructionGeometry, constraintTypes: internalResult.constraintTypes, roundTrip: resavedInternal.constraints }, + elementMap: { postfixCount: resavedMap.postfixCount, mapCount: resavedMap.mapCount }, + stringHasherBytes: resavedHasher.byteLength, + } + const webStages = ['web-model', 'web-write', 'freecad-open', 'freecad-recompute', 'freecad-resave', 'web-inspect'] + const sourceStages = ['freecad-source', 'web-inspect', 'web-write', 'freecad-open', 'freecad-resave', 'web-inspect-resaved'] + const proxyStages = ['freecad-source', 'web-inspect', 'web-byte-preserving-write', 'byte-compare', 'freecad-open', 'freecad-resave', 'web-inspect-resaved'] + const scenario = (id: string, direction: 'freecad-web-freecad' | 'web-freecad-web', domains: string[], evidence: Record, stages?: string[]) => ({ + id, + direction, + stages: stages ?? (direction === 'freecad-web-freecad' ? sourceStages : webStages), + domains, + freecadVersion: '1.1.1', + status: 'pass', + differences: [], + evidence, + }) + const roundTripScenarios = [ + scenario('proxy-byte-preservation', 'freecad-web-freecad', ['objectTree', 'properties', 'gui', 'resources', 'proxy'], { + sourceArchiveBytes: sourceBytes.byteLength, + preservedArchiveBytes: proxyPreservedBytes.byteLength, + sourceSha256, + preservedSha256: proxyPreservedSha256, + byteIdentical: true, + proxyObjectCount: sourceInspection.compatibility.proxyObjects, + blockedObjectCount: sourceInspection.compatibility.blockedObjects, + unknownTypeIds: sourceInspection.compatibility.unknownTypeIds, + resavedObjectCount: proxyResavedInspection.objects.length, + resavedProxyObjectCount: proxyResavedInspection.compatibility.proxyObjects, + resavedShapeValid: proxyResult.shapeValid, + }, proxyStages), + scenario('locked-partdesign-shape', 'freecad-web-freecad', ['shape', 'topology', 'resources'], { + solidCount: result.solidCount, + faceCount: result.faceCount, + volume: result.volume, + elementMapPostfixCount: resavedMap.postfixCount, + elementMapCount: resavedMap.mapCount, + stringHasherBytes: resavedHasher.byteLength, + }), + ...primitiveCases.map((oracleCase) => { + const primitiveResult = primitiveResults[oracleCase.objectName] + return scenario(`part-${oracleCase.objectName.toLowerCase()}`, 'web-freecad-web', ['objectTree', 'properties', 'shape', 'resources'], { + typeId: `Part::${oracleCase.objectName}`, + solidCount: primitiveResult.solidCount, + faceCount: primitiveResult.faceCount, + volume: primitiveResult.volume, + boundingBox: primitiveResult.boundingBox, + propertyCount: Object.keys(primitiveResult.properties).length, + ...(oracleCase.objectName === 'Prism' || oracleCase.objectName === 'Wedge' || oracleCase.objectName === 'Ellipsoid' ? { properties: primitiveResult.properties } : {}), + refine: primitiveResult.properties.Refine, + resavedShapeAvailable: primitiveResaved.shapeResources.some((resource) => resource.path === `${oracleCase.objectName}.Shape.brp` && resource.status === 'available'), + }) + }), + scenario('part-sphere-trim', 'web-freecad-web', ['properties', 'shape', 'resources'], { + solidCount: sphereTrimResult.solidCount, + faceCount: sphereTrimResult.faceCount, + volume: sphereTrimResult.volume, + boundingBox: sphereTrimResult.boundingBox, + properties: sphereTrimResult.properties, + resavedShapeAvailable: sphereTrimResaved.shapeResources.some((resource) => resource.path === 'SphereTrim.Shape.brp' && resource.status === 'available'), + }), + scenario('part-extrusion', 'web-freecad-web', ['objectTree', 'properties', 'sketch', 'shape', 'resources'], { + typeId: partFeatureResaved.objects.find((object) => object.name === 'Extrusion')?.typeId, + solidCount: extrusionResult.solidCount, + faceCount: extrusionResult.faceCount, + volume: extrusionResult.volume, + properties: extrusionResult.properties, + resavedShapeAvailable: partFeatureResaved.shapeResources.some((resource) => resource.path === 'Extrusion.Shape.brp' && resource.status === 'available'), + }), + scenario('part-revolution', 'web-freecad-web', ['objectTree', 'properties', 'sketch', 'shape', 'resources'], { + typeId: partFeatureResaved.objects.find((object) => object.name === 'Revolution')?.typeId, + solidCount: revolutionResult.solidCount, + faceCount: revolutionResult.faceCount, + volume: revolutionResult.volume, + properties: revolutionResult.properties, + resavedShapeAvailable: partFeatureResaved.shapeResources.some((resource) => resource.path === 'Revolution.Shape.brp' && resource.status === 'available'), + }), + scenario('sketch-core-external-attachment', 'web-freecad-web', ['objectTree', 'properties', 'sketch', 'topology'], { + geometryCount: sketchResult.geometryCount, + constraintCount: sketchResult.constraintCount, + externalTypes: sketchResult.externalTypes, + mapMode: sketchResult.mapMode, + roundTripGeometryIds: resavedSketch.geometry.length, + roundTripConstraintIds: resavedSketch.constraints.length, + }), + scenario('sketch-face-projection', 'web-freecad-web', ['sketch', 'topology'], { + externalTypes: faceResult.externalTypes, + externalGeoCount: faceResult.externalGeoCount, + roundTripIds: resavedFace.externalGeometry.length, + }), + scenario('sketch-external-modes', 'web-freecad-web', ['sketch', 'topology', 'properties'], { + externalTypes: modeResult.externalTypes, + externalGeoCount: modeResult.externalGeoCount, + nativeFlags: modeResult.externalStates?.map((state) => state.flags), + roundTripModes: resavedModes.externalGeometry.map((external) => external.mode ?? 'projection'), + }), + scenario('sketch-snells-law', 'web-freecad-web', ['sketch', 'properties'], { + geometryCount: snellResult.geometryCount, + constraintTypes: snellResult.constraintTypes, + roundTripConstraints: resavedSnell.constraints.length, + }), + scenario('sketch-bspline-weight', 'web-freecad-web', ['sketch', 'properties'], { + geometryCount: weightResult.geometryCount, + constraintTypes: weightResult.constraintTypes, + roundTripConstraints: resavedWeight.constraints.length, + }), + scenario('sketch-internal-alignment', 'web-freecad-web', ['sketch', 'properties'], { + geometryCount: internalResult.geometryCount, + constraintTypes: internalResult.constraintTypes, + roundTripConstraints: resavedInternal.constraints.length, + }), + ] + const roundTripReport = { + schemaVersion: 1, + baselineId: 'freecad-1.1.1', + freecadCommit: '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d', + bitbybitVersion: '1.1.1', + unknownDifferencesFail: true, + directions: ['freecad-web-freecad', 'web-freecad-web'], + scenarioCount: roundTripScenarios.length, + scenarios: roundTripScenarios, + status: 'verified', + } + const reportPath = resolve(root, 'config/freecad-fcstd-roundtrip-verification.json') + await writeFile(reportPath, `${JSON.stringify(roundTripReport, null, 2)}\n`) + console.log(JSON.stringify({ ...summary, roundTripReport: { path: 'config/freecad-fcstd-roundtrip-verification.json', scenarioCount: roundTripScenarios.length, directions: roundTripReport.directions } }, null, 2)) +} finally { + if (process.env.FREECAD_FCSTD_KEEP_TEMP === '1') console.error(`FREECAD_FCSTD_TEMP=${temporaryDirectory}`) + else await rm(temporaryDirectory, { recursive: true, force: true }) +} diff --git a/scripts/run-freecad-golden-failures.mjs b/scripts/run-freecad-golden-failures.mjs new file mode 100644 index 0000000..ade9895 --- /dev/null +++ b/scripts/run-freecad-golden-failures.mjs @@ -0,0 +1,37 @@ +import { readFile } from 'node:fs/promises' +import { dirname, resolve } from 'node:path' +import { spawnSync } from 'node:child_process' + +const root = resolve(new URL('..', import.meta.url).pathname) +const command = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-native/bin/FreeCADCmd') +const driver = resolve(root, 'scripts/freecad-golden-driver.py') +const manifestArgument = process.argv.slice(2).find((argument) => argument.startsWith('--manifest=')) +const manifestPath = resolve(root, manifestArgument?.slice('--manifest='.length) || 'fixtures/freecad-golden/failures/manifest.json') +const manifest = JSON.parse(await readFile(manifestPath, 'utf8')) +const reports = [] +for (const entry of manifest.failures) { + const fixture = resolve(dirname(manifestPath), entry.file) + const execution = spawnSync(command, [driver], { + cwd: root, + encoding: 'utf8', + timeout: 120000, + maxBuffer: 2 * 1024 * 1024, + env: { ...process.env, FREECAD_GOLDEN_SCENARIO: fixture }, + }) + const output = `${execution.stdout || ''}\n${execution.stderr || ''}` + const exceptionCaptured = output.includes('Exception while processing file') + const resultLine = output.split(/\r?\n/).find((line) => line.startsWith('FREECAD_GOLDEN_RESULT=')) + let invalidShape = false + if (resultLine) { + try { + const result = JSON.parse(resultLine.slice('FREECAD_GOLDEN_RESULT='.length)) + invalidShape = result.isValid === false || result.volume <= 0 + } catch { + invalidShape = false + } + } + const passed = exceptionCaptured || invalidShape + reports.push({ id: entry.id, passed, status: execution.status, exceptionCaptured, invalidShape }) +} +console.log(JSON.stringify({ status: reports.every((report) => report.passed) ? 'freecad-golden-failures-pass' : 'freecad-golden-failures-fail', count: reports.length, reports }, null, 2)) +if (reports.some((report) => !report.passed)) process.exit(1) diff --git a/scripts/run-freecad-golden.mjs b/scripts/run-freecad-golden.mjs index 8781b50..fc91422 100644 --- a/scripts/run-freecad-golden.mjs +++ b/scripts/run-freecad-golden.mjs @@ -6,10 +6,11 @@ import { loadGoldenManifest, compareGoldenResult } from './freecad-golden-contra const root = resolve(dirname(fileURLToPath(import.meta.url)), '..') const args = new Set(process.argv.slice(2)) const scenarioArgument = process.argv.slice(2).find((argument) => argument.startsWith('--scenario=')) +const manifestArgument = process.argv.slice(2).find((argument) => argument.startsWith('--manifest=')) const requestedScenario = scenarioArgument?.slice('--scenario='.length) const jsonOutput = args.has('--json') const allowMissing = args.has('--allow-missing') -const manifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/manifest.json')) +const manifest = await loadGoldenManifest(resolve(root, manifestArgument?.slice('--manifest='.length) || 'fixtures/freecad-golden/manifest.json')) const driver = resolve(root, manifest.driver) const localOracle = resolve(root, '.cache/freecad/install-native/bin/FreeCADCmd') diff --git a/scripts/run-freecad-part-builders-oracle.mjs b/scripts/run-freecad-part-builders-oracle.mjs new file mode 100644 index 0000000..bd0970f --- /dev/null +++ b/scripts/run-freecad-part-builders-oracle.mjs @@ -0,0 +1,29 @@ +import { spawnSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD Part builders oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resolve(root, 'scripts/freecad-part-builders-oracle.py')], { + cwd: root, + encoding: 'utf8', + timeout: 180_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PART_BUILDERS_ORACLE_RESULT=' +const line = output.split(/\r?\n/).find((candidate) => candidate.startsWith(marker)) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD Part builders oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice(marker.length)) +await writeFile(resolve(root, 'config/freecad-part-builders-oracle.json'), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-freecad-partdesign-base-oracle.mjs b/scripts/run-freecad-partdesign-base-oracle.mjs new file mode 100644 index 0000000..d3946c7 --- /dev/null +++ b/scripts/run-freecad-partdesign-base-oracle.mjs @@ -0,0 +1,31 @@ +import { spawnSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD PartDesign base oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const script = resolve(root, 'scripts/freecad-partdesign-base-oracle.py') +const outputPath = resolve(root, 'config/freecad-partdesign-base-oracle.json') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), script], { + cwd: root, + encoding: 'utf8', + timeout: 120_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PARTDESIGN_BASE_RESULT=' +const line = output.split(/\r?\n/).find((candidate) => candidate.startsWith(marker)) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD PartDesign base oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice(marker.length)) +await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-freecad-partdesign-dressup-oracle.mjs b/scripts/run-freecad-partdesign-dressup-oracle.mjs new file mode 100644 index 0000000..9ee4419 --- /dev/null +++ b/scripts/run-freecad-partdesign-dressup-oracle.mjs @@ -0,0 +1,29 @@ +import { spawnSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD PartDesign dress-up oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resolve(root, 'scripts/freecad-partdesign-dressup-oracle.py')], { + cwd: root, + encoding: 'utf8', + timeout: 120_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PARTDESIGN_DRESSUP_RESULT=' +const line = output.split(/\r?\n/).find((candidate) => candidate.startsWith(marker)) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD PartDesign dress-up oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice(marker.length)) +await writeFile(resolve(root, 'config/freecad-partdesign-dressup-oracle.json'), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-freecad-partdesign-failure-oracle.mjs b/scripts/run-freecad-partdesign-failure-oracle.mjs new file mode 100644 index 0000000..7dc17ff --- /dev/null +++ b/scripts/run-freecad-partdesign-failure-oracle.mjs @@ -0,0 +1,29 @@ +import { spawnSync } from 'node:child_process' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const command = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +const script = resolve(root, 'scripts/freecad-partdesign-failure-oracle.py') +const outputFile = resolve(root, 'config/freecad-partdesign-failure-oracle.json') +const sysroot = resolve(root, '.cache/freecad/sysroot') +const execution = spawnSync(command, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), script], { + cwd: root, + encoding: 'utf8', + timeout: 120000, + maxBuffer: 4 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const line = output.split(/\r?\n/).find((entry) => entry.startsWith('FREECAD_PARTDESIGN_FAILURE_ORACLE_RESULT=')) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD PartDesign failure oracle failed: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice('FREECAD_PARTDESIGN_FAILURE_ORACLE_RESULT='.length)) +await mkdir(resolve(root, 'config'), { recursive: true }) +await writeFile(outputFile, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify({ status: 'freecad-partdesign-failure-oracle-generated', output: outputFile, summary: report.summary }, null, 2)) diff --git a/scripts/run-freecad-partdesign-loft-oracle.mjs b/scripts/run-freecad-partdesign-loft-oracle.mjs new file mode 100644 index 0000000..896d73a --- /dev/null +++ b/scripts/run-freecad-partdesign-loft-oracle.mjs @@ -0,0 +1,30 @@ +import { spawnSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD PartDesign loft oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const outputPath = resolve(root, 'config/freecad-partdesign-loft-oracle.json') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resolve(root, 'scripts/freecad-partdesign-loft-oracle.py')], { + cwd: root, + encoding: 'utf8', + timeout: 120_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PARTDESIGN_LOFT_RESULT=' +const line = output.split(/\r?\n/).find((candidate) => candidate.startsWith(marker)) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD PartDesign loft oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice(marker.length)) +await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-freecad-partdesign-profile-oracle.mjs b/scripts/run-freecad-partdesign-profile-oracle.mjs new file mode 100644 index 0000000..a8b123b --- /dev/null +++ b/scripts/run-freecad-partdesign-profile-oracle.mjs @@ -0,0 +1,31 @@ +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawnSync } from 'node:child_process' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD PartDesign profile oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const script = resolve(root, 'scripts/freecad-partdesign-profile-oracle.py') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), script], { + cwd: root, + encoding: 'utf8', + timeout: 120_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PARTDESIGN_PROFILE_ORACLE_RESULT=' +const resultLine = output.split(/\r?\n/).find((line) => line.startsWith(marker)) +if (execution.error || execution.status !== 0 || !resultLine) throw new Error(`FreeCAD PartDesign profile oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(resultLine.slice(marker.length)) +await writeFile(resolve(root, 'config/freecad-partdesign-profile-oracle.json'), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exitCode = 1 diff --git a/scripts/run-freecad-partdesign-revolution-groove-oracle.mjs b/scripts/run-freecad-partdesign-revolution-groove-oracle.mjs new file mode 100644 index 0000000..4d7ab8b --- /dev/null +++ b/scripts/run-freecad-partdesign-revolution-groove-oracle.mjs @@ -0,0 +1,27 @@ +import { spawnSync } from 'node:child_process' +import { mkdir, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const command = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +const sysroot = resolve(root, '.cache/freecad/sysroot') +const script = resolve(root, 'scripts/freecad-partdesign-revolution-groove-oracle.py') +const outputFile = resolve(root, 'config/freecad-partdesign-revolution-groove-oracle.json') +const execution = spawnSync(command, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), script], { + cwd: root, encoding: 'utf8', timeout: 120000, maxBuffer: 4 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PARTDESIGN_REVOLUTION_GROOVE_ORACLE_RESULT=' +const line = output.split(/\r?\n/).find((entry) => entry.startsWith(marker)) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD PartDesign Revolution/Groove oracle failed: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice(marker.length)) +await mkdir(resolve(root, 'config'), { recursive: true }) +await writeFile(outputFile, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify({ status: 'freecad-partdesign-revolution-groove-oracle-generated', output: outputFile, summary: report.summary }, null, 2)) diff --git a/scripts/run-freecad-partdesign-transform-oracle.mjs b/scripts/run-freecad-partdesign-transform-oracle.mjs new file mode 100644 index 0000000..dcffd10 --- /dev/null +++ b/scripts/run-freecad-partdesign-transform-oracle.mjs @@ -0,0 +1,29 @@ +import { spawnSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD PartDesign transform oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resolve(root, 'scripts/freecad-partdesign-transform-oracle.py')], { + cwd: root, + encoding: 'utf8', + timeout: 180_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_PARTDESIGN_TRANSFORM_RESULT=' +const line = output.split(/\r?\n/).find((candidate) => candidate.includes(marker)) +if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD PartDesign transform oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(line.slice(line.indexOf(marker) + marker.length)) +await writeFile(resolve(root, 'config/freecad-partdesign-transform-oracle.json'), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-freecad-reference-probe.mjs b/scripts/run-freecad-reference-probe.mjs index 0b71e46..c983286 100644 --- a/scripts/run-freecad-reference-probe.mjs +++ b/scripts/run-freecad-reference-probe.mjs @@ -1,23 +1,43 @@ import { spawnSync } from 'node:child_process' +import { writeFile } from 'node:fs/promises' import { dirname, resolve } from 'node:path' import { fileURLToPath } from 'node:url' const root = resolve(dirname(fileURLToPath(import.meta.url)), '..') -const localOracle = resolve(root, '.cache/freecad/install-native/bin/FreeCADCmd') -const candidates = process.env.FREECAD_CMD ? [process.env.FREECAD_CMD] : [localOracle, 'FreeCADCmd', 'freecadcmd'] +const profile = process.env.FREECAD_ORACLE_PROFILE || 'headless' +if (!['headless', 'desktop'].includes(profile)) throw new Error(`Unknown FreeCAD oracle profile: ${profile}`) +const localOracle = resolve(root, profile === 'desktop' ? '.cache/freecad/install-desktop/bin/FreeCAD' : '.cache/freecad/install-native/bin/FreeCADCmd') +const fallbackOracle = profile === 'desktop' ? ['FreeCAD', 'freecad'] : ['FreeCADCmd', 'freecadcmd'] +const candidates = process.env.FREECAD_CMD ? [process.env.FREECAD_CMD] : [localOracle, ...fallbackOracle] let command = null for (const candidate of candidates) { - const probe = spawnSync(candidate, ['--version'], { encoding: 'utf8', timeout: 15000 }) + const probe = spawnSync(candidate, profile === 'desktop' ? ['--console', '--version'] : ['--version'], { encoding: 'utf8', timeout: 15000 }) if (!probe.error || probe.error.code !== 'ENOENT') { command = candidate; break } } if (!command) throw new Error('FreeCADCmd 1.1.1 is unavailable. Set FREECAD_CMD to the locked oracle executable.') -const execution = spawnSync(command, [resolve(root, 'scripts/freecad-reference-probe.py')], { +// Desktop mode must stay in the normal GUI run mode so the command-line Python +// file is processed by the Qt application; --console switches to a blocking +// stdin loop and prevents a deterministic probe exit. +const sysroot = resolve(root, '.cache/freecad/sysroot') +const commandArgs = profile === 'desktop' + ? ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resolve(root, 'scripts/freecad-reference-probe.py')] + : [resolve(root, 'scripts/freecad-reference-probe.py')] +const runtimeEnv = profile === 'desktop' + ? { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + } + : process.env +const execution = spawnSync(command, commandArgs, { cwd: root, encoding: 'utf8', timeout: 120000, maxBuffer: 20 * 1024 * 1024, - env: { ...process.env }, + env: runtimeEnv, }) const output = `${execution.stdout || ''}\n${execution.stderr || ''}` const resultLine = output.split(/\r?\n/).find((line) => line.startsWith('FREECAD_REFERENCE_RESULT=')) @@ -26,4 +46,12 @@ if (execution.error || execution.status !== 0 || !resultLine) { } const result = JSON.parse(resultLine.slice('FREECAD_REFERENCE_RESULT='.length)) if (result.freecadVersion !== '1.1.1') throw new Error(`Expected FreeCAD 1.1.1, received ${result.freecadVersion}`) +const moduleStatuses = new Set(['not-built', 'compiled-importable', 'compiled-import-failure', 'gui-only-unprobeable']) +if (!Array.isArray(result.modules) || result.modules.length !== 34 || result.moduleCount !== 34) throw new Error('Reference probe must report the 34 configured FreeCAD modules.') +for (const module of result.modules) { + if (typeof module.name !== 'string' || typeof module.compiled !== 'boolean' || typeof module.importable !== 'boolean' || typeof module.guiRequired !== 'boolean' || typeof module.guiAvailable !== 'boolean' || !moduleStatuses.has(module.runtimeStatus)) { + throw new Error(`Reference probe returned an invalid module status for ${module.name || ''}.`) + } +} +await writeFile(resolve(root, `.cache/freecad/reference-${profile}.json`), `${JSON.stringify(result, null, 2)}\n`) console.log(JSON.stringify({ command, result }, null, 2)) diff --git a/scripts/run-freecad-sketcher-constraint-oracle.mjs b/scripts/run-freecad-sketcher-constraint-oracle.mjs new file mode 100644 index 0000000..e036e5b --- /dev/null +++ b/scripts/run-freecad-sketcher-constraint-oracle.mjs @@ -0,0 +1,31 @@ +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawnSync } from 'node:child_process' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD Sketcher oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const script = resolve(root, 'scripts/freecad-sketcher-constraint-oracle.py') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), script], { + cwd: root, + encoding: 'utf8', + timeout: 120_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_SKETCHER_ORACLE_RESULT=' +const resultLine = output.split(/\r?\n/).find((line) => line.startsWith(marker)) +if (execution.error || execution.status !== 0 || !resultLine) throw new Error(`FreeCAD Sketcher constraint oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(resultLine.slice(marker.length)) +await writeFile(resolve(root, 'config/freecad-sketcher-constraint-oracle.json'), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exitCode = 1 diff --git a/scripts/run-freecad-sketcher-editor-oracle.mjs b/scripts/run-freecad-sketcher-editor-oracle.mjs new file mode 100644 index 0000000..763b290 --- /dev/null +++ b/scripts/run-freecad-sketcher-editor-oracle.mjs @@ -0,0 +1,30 @@ +import { existsSync } from 'node:fs' +import { writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { spawnSync } from 'node:child_process' + +const root = resolve(new URL('..', import.meta.url).pathname) +const executable = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-desktop/bin/FreeCADCmd') +if (!existsSync(executable)) throw new Error(`FreeCAD Sketcher editor oracle executable is missing: ${executable}`) +const sysroot = resolve(root, '.cache/freecad/sysroot') +const execution = spawnSync(executable, ['--python-path', resolve(sysroot, 'usr/lib/python3/dist-packages'), resolve(root, 'scripts/freecad-sketcher-editor-oracle.py')], { + cwd: root, + encoding: 'utf8', + timeout: 120_000, + maxBuffer: 20 * 1024 * 1024, + env: { + ...process.env, + PYTHONPATH: `${resolve(sysroot, 'usr/lib/python3/dist-packages')}${process.env.PYTHONPATH ? `:${process.env.PYTHONPATH}` : ''}`, + LD_LIBRARY_PATH: `${resolve(sysroot, 'usr/lib/x86_64-linux-gnu')}${process.env.LD_LIBRARY_PATH ? `:${process.env.LD_LIBRARY_PATH}` : ''}`, + MATPLOTLIBRC: resolve(sysroot, 'usr/share/matplotlib/mpl-data/matplotlibrc'), + MPLBACKEND: 'Agg', + }, +}) +const output = `${execution.stdout || ''}\n${execution.stderr || ''}` +const marker = 'FREECAD_SKETCHER_EDITOR_ORACLE_RESULT=' +const resultLine = output.split(/\r?\n/).find((line) => line.startsWith(marker)) +if (execution.error || execution.status !== 0 || !resultLine) throw new Error(`FreeCAD Sketcher editor oracle failed with status ${execution.status}: ${execution.error?.message || output.trim()}`) +const report = JSON.parse(resultLine.slice(marker.length)) +await writeFile(resolve(root, 'config/freecad-sketcher-editor-oracle.json'), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) +if (report.status !== 'pass') process.exitCode = 1 diff --git a/scripts/run-freecad-threeway-boolean.mjs b/scripts/run-freecad-threeway-boolean.mjs new file mode 100644 index 0000000..aba32de --- /dev/null +++ b/scripts/run-freecad-threeway-boolean.mjs @@ -0,0 +1,96 @@ +import { spawnSync } from 'node:child_process' +import { readFile, writeFile } from 'node:fs/promises' +import { createHash } from 'node:crypto' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { loadGoldenManifest } from './freecad-golden-contract.mjs' + +const root = resolve(dirname(fileURLToPath(import.meta.url)), '..') +const manifest = await loadGoldenManifest(resolve(root, 'fixtures/freecad-golden/manifest.json')) +const booleanScenarios = manifest.scenarios.filter(({ scenario }) => ['fuse', 'cut', 'common'].includes(scenario.operation.type)) +const freecadCommand = process.env.FREECAD_CMD || resolve(root, '.cache/freecad/install-native/bin/FreeCADCmd') +const nativeFactory = (await import('../native/occt-history/dist/bitbybit-occt-history.js')).default +const native = await nativeFactory() +const bitbybitFactory = (await import('@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt.js')).default +const bitbybit = await bitbybitFactory({ locateFile: (path) => new URL(`../node_modules/@bitbybit-dev/occt/bitbybit-dev-occt/${path}`, import.meta.url).href }) + +const translation = (operation) => operation.placement?.translation || [0, 0, 0] + +const buildShape = (module, operation) => { + const [x, y, z] = translation(operation) + if (operation.type === 'box') return module.MakeBoxFromPntAndDims(new module.gp_Pnt(x, y, z), operation.length, operation.width, operation.height) + if (operation.type === 'sphere') return new module.BRepPrimAPI_MakeSphere(new module.gp_Pnt(x, y, z), operation.radius).Shape() + const axis = new module.gp_Ax2(new module.gp_Pnt(x, y, z), new module.gp_Dir(0, 0, 1)) + if (operation.type === 'cylinder') return new module.BRepPrimAPI_MakeCylinder(axis, operation.radius, operation.height).Shape() + if (operation.type === 'cone') return new module.BRepPrimAPI_MakeCone(axis, operation.radius1, operation.radius2, operation.height, (operation.angle || 360) * Math.PI / 180).Shape() + const base = buildShape(module, operation.base) + const tool = buildShape(module, operation.tool) + const algorithm = operation.type === 'fuse' ? new module.BRepAlgoAPI_Fuse(base, tool) : operation.type === 'cut' ? new module.BRepAlgoAPI_Cut(base, tool) : new module.BRepAlgoAPI_Common(base, tool) + algorithm.Build() + if (!algorithm.IsDone()) throw new Error(`Bitbybit Boolean ${operation.type} did not complete.`) + return algorithm.Shape() +} + +const bitbybitSummary = (shape) => { + const box = bitbybit.GetBoundingBox(shape) + const validation = JSON.parse(bitbybit.BRepGraphValidate(shape)) + const graph = JSON.parse(bitbybit.BRepGraphAnalyze(shape)) + return { + shapeType: graph.compounds > 0 ? 'Compound' : graph.solids === 1 ? 'Solid' : 'Shape', isNull: shape.IsNull(), isValid: validation.valid === true, + solids: graph.solids, faces: graph.faces, edges: graph.edges, vertices: graph.vertices, + volume: bitbybit.ComputeVolumeProperties(shape).Mass, area: bitbybit.ComputeSurfaceProperties(shape).Mass, + boundingBox: { min: [box.XMin, box.YMin, box.ZMin], max: [box.XMax, box.YMax, box.ZMax] }, + } +} + +const runFreecad = (entry) => { + const execution = spawnSync(freecadCommand, [resolve(root, manifest.driver)], { cwd: root, encoding: 'utf8', timeout: 120000, maxBuffer: 10 * 1024 * 1024, env: { ...process.env, FREECAD_GOLDEN_SCENARIO: entry.file } }) + const line = `${execution.stdout || ''}\n${execution.stderr || ''}`.split(/\r?\n/).find((candidate) => candidate.startsWith('FREECAD_GOLDEN_RESULT=')) + if (execution.error || execution.status !== 0 || !line) throw new Error(`FreeCAD oracle failed for ${entry.id}: ${execution.error?.message || execution.stderr || execution.stdout}`) + return JSON.parse(line.slice('FREECAD_GOLDEN_RESULT='.length)) +} + +const compare = (expected, actual, tolerance) => { + const differences = [] + const known = [] + const scalar = (path, received, target, epsilon) => { + if (!Number.isFinite(received) || Math.abs(received - target) > epsilon) differences.push(`${path}: expected ${target} +/- ${epsilon}, received ${received}`) + } + for (const key of ['isNull', 'isValid', 'solids']) if (actual[key] !== expected[key]) differences.push(`${key}: expected ${expected[key]}, received ${actual[key]}`) + if (actual.shapeType !== expected.shapeType) known.push(`shapeType differs (${expected.shapeType} vs ${actual.shapeType})`) + for (const key of ['faces', 'edges', 'vertices']) if (actual[key] !== expected[key]) differences.push(`${key}: expected ${expected[key]}, received ${actual[key]}`) + scalar('volume', actual.volume, expected.volume, tolerance.scalar * 10) + scalar('area', actual.area, expected.area, tolerance.scalar * 10) + for (const axis of ['min', 'max']) for (let i = 0; i < 3; i += 1) scalar(`boundingBox.${axis}[${i}]`, actual.boundingBox[axis][i], expected.boundingBox[axis][i], tolerance.linear * 10) + return { differences, known } +} + +const reports = [] +for (const entry of booleanScenarios) { + const scenario = entry.scenario + const oracle = runFreecad(entry) + const bitbybitResult = bitbybitSummary(buildShape(bitbybit, scenario.operation)) + const nativeShape = (() => { + const build = (operation) => { + const [x, y, z] = translation(operation) + if (operation.type === 'box') return native.makeBoxPlaced(operation.length, operation.width, operation.height, x, y, z) + if (operation.type === 'cylinder') return native.makeCylinder(operation.radius, operation.height, x, y, z) + if (operation.type === 'sphere') return native.makeSphere(operation.radius, x, y, z) + if (operation.type === 'cone') return native.makeCone(operation.radius1, operation.radius2, operation.height, x, y, z) + const base = build(operation.base); const tool = build(operation.tool) + return native.booleanHistory(base, tool, operation.type) + } + return build(scenario.operation) + })() + const nativeResponse = nativeShape?.summary ? nativeShape : null + const nativeSummary = nativeResponse ? nativeResponse.summary : native.shapeSummary(nativeShape) + const bitbybitDiff = compare(oracle, bitbybitResult, scenario.tolerance) + const nativeDiff = compare(oracle, nativeSummary, scenario.tolerance) + reports.push({ id: entry.id, operation: scenario.operation.type, oracle: { freecadVersion: oracle.freecadVersion, expected: scenario.expected }, bitbybit: { summary: bitbybitResult, differences: bitbybitDiff }, native: { summary: nativeSummary, historyRecordCount: nativeResponse?.records?.length || 0, differences: nativeDiff } }) +} + +const report = { schemaVersion: 1, baselineId: manifest.baselineId, freecadCommit: '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d', nativeOcctVersion: native.occtVersion(), scenarioCount: reports.length, unknownDifferencesFail: true, reports } +const output = resolve(root, 'config/freecad-bitbybit-native-threeway.json') +await writeFile(output, `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify({ status: reports.some((item) => item.bitbybit.differences.differences.length || item.native.differences.differences.length) ? 'differences-found' : 'pass', scenarioCount: reports.length, output, sha256: createHash('sha256').update(JSON.stringify(report)).digest('hex') }, null, 2)) +if (reports.some((item) => item.bitbybit.differences.differences.length || item.native.differences.differences.length)) process.exit(1) diff --git a/scripts/run-geometry-input-fuzz.ts b/scripts/run-geometry-input-fuzz.ts new file mode 100644 index 0000000..d6abccd --- /dev/null +++ b/scripts/run-geometry-input-fuzz.ts @@ -0,0 +1,117 @@ +import assert from 'node:assert/strict' +import { writeFile } from 'node:fs/promises' +import { performance } from 'node:perf_hooks' +import { + validateBooleanCutInput, + validateBooleanUnionInput, + validateBoxInput, + validateChamferInput, + validateConeInput, + validateCylinderInput, + validateFilletInput, + validateGeometryFileImport, + validateGrooveInput, + validateLoftInput, + validateMirrorInput, + validatePadInput, + validatePipeInput, + validatePlacementInput, + validatePocketInput, + validateRevolutionInput, + validateTorusInput, +} from '../src/facade/geometryRuntime' +import type { PlanarProfile, ShapeHandle } from '../src/facade/types' + +type GeometryFuzzCase = { name: string; expected: 'accept' | 'reject'; invoke: () => void } + +let state = 0x9e3779b9 +const random = () => { + state ^= state << 13 + state ^= state >>> 17 + state ^= state << 5 + return state >>> 0 +} +const positive = () => (random() % 100_000 + 1) / 1000 +const context = () => ({ documentId: `geometry-fuzz-${random() % 7}`, documentVersion: random() % 100 }) +const shape = (documentId: string, documentVersion: number, suffix: string): ShapeHandle => ({ id: `shape-${suffix}`, kernel: 'bitbybit-occt', kind: 'solid', documentId, documentVersion }) +const square = (size = positive()): PlanarProfile => ({ outer: [[0, 0, 0], [size, 0, 0], [size, size, 0], [0, size, 0]] }) +const elevatedSquare = (): PlanarProfile => { + const profile = square() + const z = positive() + return { outer: profile.outer.map(([x, y]): [number, number, number] => [x, y, z]) } +} +const invalidScalar = () => [0, -positive(), Number.NaN, Number.POSITIVE_INFINITY][random() % 4] + +const createCase = (index: number): GeometryFuzzCase => { + const owner = context() + const base = shape(owner.documentId, Math.max(0, owner.documentVersion - 1), 'base') + const tool = shape(owner.documentId, owner.documentVersion, 'tool') + switch (index % 30) { + case 0: return { name: 'valid-box', expected: 'accept', invoke: () => validateBoxInput({ ...owner, width: positive(), length: positive(), height: positive(), center: [positive(), -positive(), 0] }) } + case 1: return { name: 'invalid-box-scalar', expected: 'reject', invoke: () => validateBoxInput({ ...owner, width: invalidScalar(), length: positive(), height: positive() }) } + case 2: return { name: 'valid-cylinder', expected: 'accept', invoke: () => validateCylinderInput({ ...owner, radius: positive(), height: positive(), direction: [positive(), positive(), positive()], angle: positive() % 360 || 360 }) } + case 3: return { name: 'zero-cylinder-axis', expected: 'reject', invoke: () => validateCylinderInput({ ...owner, radius: positive(), height: positive(), direction: [0, 0, 0] }) } + case 4: return { name: 'zero-cone-radii', expected: 'reject', invoke: () => validateConeInput({ ...owner, radius1: 0, radius2: 0, height: positive() }) } + case 5: return { name: 'valid-placement', expected: 'accept', invoke: () => validatePlacementInput({ ...owner, shape: base, placement: { translation: [positive(), 0, -positive()], rotationAxis: [0, 0, 1], rotationAngle: random() % 361 } }) } + case 6: return { name: 'foreign-placement-shape', expected: 'reject', invoke: () => validatePlacementInput({ ...owner, shape: { ...base, documentId: 'foreign-document' }, placement: { translation: [0, 0, 0], rotationAxis: [0, 1, 0], rotationAngle: 0 } }) } + case 7: return { name: 'valid-union', expected: 'accept', invoke: () => validateBooleanUnionInput({ ...owner, shapes: [base, tool] }) } + case 8: return { name: 'short-union', expected: 'reject', invoke: () => validateBooleanUnionInput({ ...owner, shapes: [base] }) } + case 9: return { name: 'empty-cut-tools', expected: 'reject', invoke: () => validateBooleanCutInput({ ...owner, base, tools: [] }) } + case 10: return { name: 'fractional-fillet-index', expected: 'reject', invoke: () => validateFilletInput({ ...owner, base, radius: positive(), indexes: [random() % 10 + 0.5] }) } + case 11: return { name: 'valid-chamfer', expected: 'accept', invoke: () => validateChamferInput({ ...owner, base, distance: positive(), indexes: [random() % 20] }) } + case 12: return { name: 'valid-pad', expected: 'accept', invoke: () => validatePadInput({ ...owner, profile: square(), length: positive(), direction: [0, 0, 1] }) } + case 13: return { name: 'self-intersecting-pad', expected: 'reject', invoke: () => validatePadInput({ ...owner, profile: { outer: [[0, 0, 0], [2, 2, 0], [0, 2, 0], [2, 0, 0]] }, length: positive() }) } + case 14: return { name: 'future-pocket-base', expected: 'reject', invoke: () => validatePocketInput({ ...owner, base: { ...base, documentVersion: owner.documentVersion + 1 }, profile: square(), length: positive() }) } + case 15: return { name: 'zero-revolution-axis', expected: 'reject', invoke: () => validateRevolutionInput({ ...owner, profile: square(), axisDirection: [0, 0, 0], angle: 360 }) } + case 16: return { name: 'invalid-groove-angle', expected: 'reject', invoke: () => validateGrooveInput({ ...owner, base, profile: square(), axisDirection: [0, 1, 0], angle: 361 }) } + case 17: return { name: 'valid-step-import', expected: 'accept', invoke: () => validateGeometryFileImport({ ...owner, format: 'step', text: `ISO-10303-21;\n/* ${random().toString(16)} */\nEND-ISO-10303-21;` }) } + case 18: return { name: 'unsupported-import-format', expected: 'reject', invoke: () => validateGeometryFileImport({ ...owner, format: 'stl', text: 'solid fuzz' } as never) } + case 19: return { name: 'zero-mirror-normal', expected: 'reject', invoke: () => validateMirrorInput({ ...owner, shape: base, origin: [0, 0, 0], normal: [0, 0, 0] }) } + case 20: return { name: 'valid-standalone-loft', expected: 'accept', invoke: () => validateLoftInput({ ...owner, sections: [square(), elevatedSquare()] }) } + case 21: return { name: 'valid-additive-loft', expected: 'accept', invoke: () => validateLoftInput({ ...owner, sections: [square(), elevatedSquare()], mode: 'additive', base }) } + case 22: return { name: 'short-loft-sections', expected: 'reject', invoke: () => validateLoftInput({ ...owner, sections: [square()] }) } + case 23: return { name: 'loft-hole-unsupported', expected: 'reject', invoke: () => validateLoftInput({ ...owner, sections: [{ ...square(), holes: [square(0.1).outer] }, square()] }) } + case 24: return { name: 'valid-standalone-pipe', expected: 'accept', invoke: () => validatePipeInput({ ...owner, profile: square(), path: [[0, 0, 0], [positive(), 0, positive()], [positive(), positive(), positive()]] }) } + case 25: return { name: 'valid-subtractive-pipe', expected: 'accept', invoke: () => validatePipeInput({ ...owner, profile: square(), path: [[0, 0, 0], [0, positive(), positive()]], mode: 'subtractive', base }) } + case 26: return { name: 'duplicate-pipe-path-point', expected: 'reject', invoke: () => validatePipeInput({ ...owner, profile: square(), path: [[0, 0, 0], [0, 0, 0]] }) } + case 27: return { name: 'pipe-hole-unsupported', expected: 'reject', invoke: () => validatePipeInput({ ...owner, profile: { ...square(), holes: [square(0.1).outer] }, path: [[0, 0, 0], [0, 0, positive()]] }) } + case 28: return { name: 'valid-torus', expected: 'accept', invoke: () => validateTorusInput({ ...owner, majorRadius: positive(), minorRadius: positive(), direction: [0, 0, 1], angle: random() % 360 + 1 }) } + default: return { name: 'invalid-torus-radius', expected: 'reject', invoke: () => validateTorusInput({ ...owner, majorRadius: positive(), minorRadius: invalidScalar() }) } + } +} + +const durations: number[] = [] +const categories = new Map() +const counts = { accepted: 0, rejected: 0, validCases: 0, invalidCases: 0 } +for (let index = 0; index < 2000; index += 1) { + const fuzzCase = createCase(index) + categories.set(fuzzCase.name, (categories.get(fuzzCase.name) ?? 0) + 1) + const started = performance.now() + let outcome: 'accept' | 'reject' = 'accept' + let caught: unknown + try { + fuzzCase.invoke() + } catch (error) { + outcome = 'reject' + caught = error + } + durations.push(performance.now() - started) + counts[outcome === 'accept' ? 'accepted' : 'rejected'] += 1 + counts[fuzzCase.expected === 'accept' ? 'validCases' : 'invalidCases'] += 1 + assert.equal(outcome, fuzzCase.expected, `Geometry fuzz category ${fuzzCase.name} produced ${outcome}, expected ${fuzzCase.expected}.`) + if (outcome === 'reject') assert.ok(caught instanceof Error, `Geometry fuzz category ${fuzzCase.name} rejected with a non-Error value.`) +} + +durations.sort((left, right) => left - right) +const p95Ms = durations[Math.floor(durations.length * 0.95)] +assert.ok(p95Ms < 10, `Geometry input fuzz p95 exceeded 10 ms: ${p95Ms.toFixed(3)} ms.`) +const report = { + status: 'geometry-input-fuzz-pass', + seed: '0x9e3779b9', + cases: durations.length, + counts, + categories: Object.fromEntries([...categories].sort(([left], [right]) => left.localeCompare(right))), + timing: { p95Ms: Number(p95Ms.toFixed(3)), maxMs: Number(durations.at(-1)?.toFixed(3)) }, +} +await writeFile(new URL('../config/qa04-geometry-fuzz-verification.json', import.meta.url), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-project-migration-rehearsal.ts b/scripts/run-project-migration-rehearsal.ts new file mode 100644 index 0000000..7fcb334 --- /dev/null +++ b/scripts/run-project-migration-rehearsal.ts @@ -0,0 +1,71 @@ +import { createHash } from 'node:crypto' +import { readFile, writeFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { PROJECT_SCHEMA_MIGRATIONS, PROJECT_SCHEMA_VERSION, runProjectSchemaMigrations, type ProjectMigrationTransaction } from '../src/facade/projectSchema' + +const root = resolve(new URL('..', import.meta.url).pathname) +const outputPath = resolve(root, 'config/project-migration-verification.json') +const checkOnly = process.argv.includes('--check') +const migrationHash = createHash('sha256').update(PROJECT_SCHEMA_MIGRATIONS.map(({ version, sql }) => `${version}:${sql}`).join('\n')).digest('hex') + +type RehearsalTransaction = ProjectMigrationTransaction & { applied: number[]; committed: boolean; rolledBack: boolean; executed: number[] } +const createTransaction = (initial: number[], failVersion?: number): RehearsalTransaction => { + let working = new Set(initial) + let snapshot = new Set(initial) + const transaction: RehearsalTransaction = { + applied: initial.slice(), committed: false, rolledBack: false, executed: [], + begin: () => { snapshot = new Set(working) }, + isApplied: (version) => working.has(version), + execute: (sql) => { + const migration = PROJECT_SCHEMA_MIGRATIONS.find((candidate) => candidate.sql === sql) + if (!migration) throw new Error('unknown migration SQL') + transaction.executed.push(migration.version) + if (migration.version === failVersion) throw new Error(`injected migration failure ${failVersion}`) + }, + markApplied: (version) => { working.add(version); transaction.applied = [...working].sort((left, right) => left - right) }, + commit: () => { transaction.committed = true }, + rollback: () => { working = new Set(snapshot); transaction.applied = [...working].sort((left, right) => left - right); transaction.rolledBack = true }, + } + return transaction +} + +const versions = PROJECT_SCHEMA_MIGRATIONS.map(({ version }) => version) +const forward = versions.map((startVersion) => { + const transaction = createTransaction(versions.filter((version) => version < startVersion)) + const applied = runProjectSchemaMigrations(transaction, PROJECT_SCHEMA_MIGRATIONS, 1700000000000) + const expected = versions.filter((version) => version >= startVersion) + if (JSON.stringify(applied) !== JSON.stringify(expected) || !transaction.committed || transaction.rolledBack || JSON.stringify(transaction.applied) !== JSON.stringify(versions)) throw new Error(`forward migration rehearsal failed at start ${startVersion}`) + return { from: startVersion - 1, to: PROJECT_SCHEMA_VERSION, applied, committed: transaction.committed, rolledBack: transaction.rolledBack } +}) +const rollback = versions.map((failVersion) => { + const initial = versions.filter((version) => version < failVersion) + const transaction = createTransaction(initial, failVersion) + let failed = false + try { runProjectSchemaMigrations(transaction, PROJECT_SCHEMA_MIGRATIONS, 1700000000000) } catch (error) { failed = error instanceof Error && error.message === `injected migration failure ${failVersion}` } + if (!failed || transaction.committed || !transaction.rolledBack || JSON.stringify(transaction.applied) !== JSON.stringify(initial)) throw new Error(`rollback rehearsal failed at migration ${failVersion}`) + return { failedAt: failVersion, restoredVersions: initial, committed: transaction.committed, rolledBack: transaction.rolledBack } +}) +const rerun = createTransaction(versions) +const rerunApplied = runProjectSchemaMigrations(rerun, PROJECT_SCHEMA_MIGRATIONS, 1700000000000) +if (rerunApplied.length !== 0 || !rerun.committed || rerun.rolledBack) throw new Error('idempotent migration rehearsal failed') + +const report = { + schemaVersion: 1, + status: 'pass', + currentSchemaVersion: PROJECT_SCHEMA_VERSION, + migrationVersions: versions, + migrationSha256: migrationHash, + forward, + rollback, + idempotentRerun: { applied: rerunApplied, committed: rerun.committed, rolledBack: rerun.rolledBack }, + recoveryPolicy: { onFailure: 'rollback-entire-transaction', unsupportedFutureVersion: 'reject-before-write' }, +} +const serialized = `${JSON.stringify(report, null, 2)}\n` +if (checkOnly) { + const existing = await readFile(outputPath, 'utf8').catch(() => '') + if (existing !== serialized) throw new Error('Project migration rehearsal report is stale; run `npm run test:project-migration`.') + console.log(JSON.stringify({ status: 'project-migration-pass', currentSchemaVersion: PROJECT_SCHEMA_VERSION, forwardCases: forward.length, rollbackCases: rollback.length, migrationSha256: migrationHash }, null, 2)) +} else { + await writeFile(outputPath, serialized) + console.log(JSON.stringify({ status: 'project-migration-generated', output: outputPath, currentSchemaVersion: PROJECT_SCHEMA_VERSION, forwardCases: forward.length, rollbackCases: rollback.length, migrationSha256: migrationHash }, null, 2)) +} diff --git a/scripts/run-sketch-solver-fuzz.ts b/scripts/run-sketch-solver-fuzz.ts new file mode 100644 index 0000000..8b23854 --- /dev/null +++ b/scripts/run-sketch-solver-fuzz.ts @@ -0,0 +1,78 @@ +import assert from 'node:assert/strict' +import { writeFile } from 'node:fs/promises' +import { performance } from 'node:perf_hooks' +import { createSketch, solveSketch, type SketchConstraint, type SketchDiagnostic, type SketchGeometry, type SketchSolverStatus } from '../src/facade/sketcher' + +type SolverFuzzCase = { + name: string + geometry: SketchGeometry[] + constraints: SketchConstraint[] + expectedStatus?: SketchSolverStatus + expectedCode?: SketchDiagnostic['code'] +} + +let state = 0xa5a5f00d +const random = () => { + state ^= state << 13 + state ^= state >>> 17 + state ^= state << 5 + return state >>> 0 +} +const value = () => (random() % 100_000) / 1000 +const line = (id: string, offset = value()): Extract => ({ id, type: 'line', start: { x: offset, y: value() }, end: { x: offset + 1 + value(), y: value() } }) + +const createCase = (index: number): SolverFuzzCase => { + const first = line('first') + const second = line('second') + switch (index % 10) { + case 0: return { name: 'horizontal', geometry: [first], constraints: [{ id: 'horizontal', type: 'horizontal', geometryId: 'first' }], expectedStatus: 'under-constrained' } + case 1: return { name: 'parallel', geometry: [first, second], constraints: [{ id: 'parallel', type: 'parallel', firstGeometryId: 'first', secondGeometryId: 'second' }], expectedStatus: 'under-constrained' } + case 2: return { name: 'unknown-geometry', geometry: [first], constraints: [{ id: 'missing', type: 'vertical', geometryId: 'absent' }], expectedStatus: 'invalid', expectedCode: 'UNKNOWN_GEOMETRY' } + case 3: return { name: 'invalid-dimension', geometry: [first], constraints: [{ id: 'distance', type: 'distance', first: { geometryId: 'first', point: 'start' }, second: { geometryId: 'first', point: 'end' }, value: Number.NaN }], expectedStatus: 'invalid', expectedCode: 'INVALID_VALUE' } + case 4: return { name: 'redundant', geometry: [first], constraints: [{ id: 'h1', type: 'horizontal', geometryId: 'first' }, { id: 'h2', type: 'horizontal', geometryId: 'first' }], expectedStatus: 'under-constrained', expectedCode: 'REDUNDANT_CONSTRAINT' } + case 5: return { name: 'reference-distance', geometry: [first], constraints: [{ id: 'reference', type: 'distanceX', first: { geometryId: 'first', point: 'start' }, second: { geometryId: 'first', point: 'end' }, value: value(), driving: false }], expectedStatus: 'under-constrained' } + case 6: return { name: 'line-circle-tangent', geometry: [first, { id: 'circle', type: 'circle', center: { x: value(), y: value() }, radius: 1 + value() }], constraints: [{ id: 'tangent', type: 'tangent', firstGeometryId: 'first', secondGeometryId: 'circle' }], expectedStatus: 'under-constrained' } + case 7: return { name: 'unsupported-bspline-weight', geometry: [{ id: 'curve', type: 'bspline', degree: 2, controlPoints: [{ x: 0, y: 0 }, { x: 1, y: value() }, { x: 2, y: 0 }], weights: [1, 1, 1] }], constraints: [{ id: 'weight', type: 'weight', geometryId: 'curve', controlPointIndex: 1, value: 2 }], expectedStatus: 'invalid', expectedCode: 'UNSUPPORTED_CONSTRAINT' } + case 8: return { name: 'unknown-point', geometry: [first], constraints: [{ id: 'bad-point', type: 'coincident', first: { geometryId: 'first', point: 'center' }, second: { geometryId: 'first', point: 'end' } }], expectedStatus: 'invalid', expectedCode: 'UNKNOWN_POINT' } + default: return { name: 'blocked-conflict', geometry: [first], constraints: [{ id: 'block', type: 'block', geometryId: 'first' }, { id: 'horizontal', type: 'horizontal', geometryId: 'first' }], expectedStatus: 'conflicting', expectedCode: 'SOLVER_NOT_CONVERGED' } + } +} + +const durations: number[] = [] +const categories = new Map() +const statuses: Record = { solved: 0, 'under-constrained': 0, conflicting: 0, invalid: 0 } +for (let index = 0; index < 2000; index += 1) { + const fuzzCase = createCase(index) + categories.set(fuzzCase.name, (categories.get(fuzzCase.name) ?? 0) + 1) + const snapshot = createSketch(`solver-fuzz-${index}`, fuzzCase.geometry, fuzzCase.constraints) + const before = JSON.stringify(snapshot) + const options = { tolerance: 1e-6, maxIterations: random() % 32 + 1 } + const started = performance.now() + const first = solveSketch(snapshot, options) + const second = solveSketch(snapshot, options) + durations.push(performance.now() - started) + statuses[first.status] += 1 + assert.equal(JSON.stringify(first), JSON.stringify(second), `Sketch solver fuzz category ${fuzzCase.name} is non-deterministic.`) + assert.equal(JSON.stringify(snapshot), before, `Sketch solver fuzz category ${fuzzCase.name} mutated its input Snapshot.`) + assert.equal(first.status, fuzzCase.expectedStatus, `Sketch solver fuzz category ${fuzzCase.name} returned ${first.status}.`) + assert.ok(first.iterations <= options.maxIterations, `Sketch solver fuzz category ${fuzzCase.name} exceeded its iteration limit.`) + assert.ok(!Number.isNaN(first.residual), `Sketch solver fuzz category ${fuzzCase.name} produced NaN residual.`) + if (fuzzCase.expectedCode) assert.ok(first.diagnostics.some((diagnostic) => diagnostic.code === fuzzCase.expectedCode), `Sketch solver fuzz category ${fuzzCase.name} omitted ${fuzzCase.expectedCode}.`) + if (first.status === 'conflicting') assert.ok(first.diagnostics.some((diagnostic) => diagnostic.code === 'SOLVER_NOT_CONVERGED')) + if (first.status === 'invalid') assert.ok(first.diagnostics.some((diagnostic) => diagnostic.code !== 'REDUNDANT_CONSTRAINT')) +} + +durations.sort((left, right) => left - right) +const p95Ms = durations[Math.floor(durations.length * 0.95)] +assert.ok(p95Ms < 10, `Sketch solver fuzz p95 exceeded 10 ms: ${p95Ms.toFixed(3)} ms.`) +const report = { + status: 'sketch-solver-fuzz-pass', + seed: '0xa5a5f00d', + models: durations.length, + solves: durations.length * 2, + categories: Object.fromEntries([...categories].sort(([left], [right]) => left.localeCompare(right))), + statuses, + timing: { p95Ms: Number(p95Ms.toFixed(3)), maxMs: Number(durations.at(-1)?.toFixed(3)) }, +} +await writeFile(new URL('../config/qa04-sketch-fuzz-verification.json', import.meta.url), `${JSON.stringify(report, null, 2)}\n`) +console.log(JSON.stringify(report, null, 2)) diff --git a/scripts/run-sketcher-stress.ts b/scripts/run-sketcher-stress.ts new file mode 100644 index 0000000..8a4be79 --- /dev/null +++ b/scripts/run-sketcher-stress.ts @@ -0,0 +1,8 @@ +import { runSketchStress } from '../src/facade/sketchStress' + +const report = runSketchStress({ models: 500, seed: 0x20260803 }) +if (report.deterministicMismatches !== 0) throw new Error(`Sketch stress found ${report.deterministicMismatches} deterministic mismatches.`) +if (report.unexpectedResults !== 0) throw new Error(`Sketch stress found ${report.unexpectedResults} unexpected solver results.`) +if (report.durationMs > 2_000) throw new Error(`Sketch stress exceeded the 2000 ms budget: ${report.durationMs} ms.`) +if (report.maxIterations > 64) throw new Error(`Sketch stress exceeded the 64 iteration budget: ${report.maxIterations}.`) +console.log(JSON.stringify({ status: 'sketcher-stress-pass', ...report }, null, 2)) diff --git a/scripts/run-topology-mutation-replay.ts b/scripts/run-topology-mutation-replay.ts new file mode 100644 index 0000000..dd5ae43 --- /dev/null +++ b/scripts/run-topology-mutation-replay.ts @@ -0,0 +1,5 @@ +import { runTopologyMutationReplay } from '../src/facade/topologyReplay' + +const report = runTopologyMutationReplay({ models: 100, mutationsPerModel: 10, seed: 0x20260803 }) +if (report.wrongBindings !== 0) throw new Error(`Topology mutation replay found ${report.wrongBindings} wrong bindings.`) +console.log(JSON.stringify({ status: 'topology-mutation-replay-pass', ...report }, null, 2)) diff --git a/scripts/sign-release-artifacts.mjs b/scripts/sign-release-artifacts.mjs new file mode 100644 index 0000000..f94a1b3 --- /dev/null +++ b/scripts/sign-release-artifacts.mjs @@ -0,0 +1,13 @@ +import { spawnSync } from 'node:child_process' +import { resolve } from 'node:path' +import { loadControlledSigningKey } from './release-signing-key.mjs' + +const root = resolve(new URL('..', import.meta.url).pathname) +const key = await loadControlledSigningKey() +const result = spawnSync(process.execPath, [resolve(root, 'scripts/generate-release-artifacts.mjs'), ...process.argv.slice(2)], { + cwd: root, + env: { ...process.env, RELEASE_SIGNING_PRIVATE_KEY: key.privateKeyPem, RELEASE_SIGNING_KEY_ID: key.keyId }, + stdio: 'inherit', +}) +if (result.error) throw result.error +process.exit(result.status ?? 1) diff --git a/src/App.tsx b/src/App.tsx index 0859645..bf0a8fc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import type { ComponentType, ReactNode } from 'react' +import type { ComponentType, MouseEvent as ReactMouseEvent, ReactNode } from 'react' import { AlertTriangle, Archive, @@ -9,6 +9,7 @@ import { Box, Check, CheckCircle2, + CheckSquare, ChevronDown, ChevronRight, Circle, @@ -24,11 +25,15 @@ import { FolderOpen, HardDrive, HelpCircle, + Info, Layers3, LayoutGrid, + Library, ListTree, Menu, + Maximize2, MoreHorizontal, + MousePointer2, PanelBottom, PanelLeft, PanelRight, @@ -53,11 +58,13 @@ import { ZoomIn, ZoomOut, } from 'lucide-react' -import { menuDefinitions, pinnedWorkbenches, workbenchDefinitions, type MenuName, type WorkbenchId } from './freecadManifest' -import { createMockFacade, type BitBybitViewportAdapter, type BitBybitWebCadFacade, type DiagnosticTreeNode, type DocumentSnapshot, type FcstdInspection, type ModelTreeItem, type MultiTransformStep, type MultiTransformValue, type ObjectPropertySnapshot, type PlacementValue, type ProjectSummary, type PropertyValue, type ShapeHandle } from './facade' +import { menuDefinitions, workbenchDefinitions, type MenuName, type WorkbenchId } from './freecadManifest' +import { createLinuxcncIframeAdapter, createMockFacade, NativeOcctHistoryWorkerProvider, prepareCamPipeline, submitCamPipelineToLinuxcnc, type BitBybitViewportAdapter, type BitBybitWebCadFacade, type CamAxisConfiguration, type CamCoolantMode, type CamCutDirection, type CamDressupKind, type CamKinematicOptions, type CamOperationKind, type CamPostprocessor, type CamPropertyValue, type CamRotaryAxis, type CamSnapshot, type CamStockMode, type DiagnosticTreeNode, type DocumentSnapshot, type FcstdInspection, type ModelTreeItem, type MultiTransformStep, type MultiTransformValue, type ObjectPropertySnapshot, type PlacementValue, type ProjectSummary, type PropertyValue, type ShapeHandle } from './facade' +import type { LinkSubListValue, LinkSubValue, ShapeResourceValue, TopoRefValue } from './facade/types' type Page = 'start' | 'projects' | 'workspace' | 'import' | 'export' | 'settings' | 'help' | 'diagnostics' | 'sync' type Workbench = WorkbenchId +type DialogKind = 'command-search' | 'preferences' | 'about' | 'macro' | 'close-document' | null type Icon = ComponentType<{ size?: string | number; strokeWidth?: string | number; className?: string }> @@ -85,6 +92,7 @@ const iconMap: Record = { magnet: CircleDot, move: ArrowRight, type: FileText, 'panels-top-left': LayoutGrid, maximize: PanelRight, table: LayoutGrid, tag: FileText, 'rows-3': ListTree, link: Copy, paintbrush: WandSparkles, pin: PanelLeft, anchor: CircleDot, split: ArrowRight, target: CircleDot, protractor: SlidersHorizontal, activity: Rotate3D, lock: Circle, spline: Rotate3D, crosshair: CircleDot, 'file-box': FileBox, + library: Library, 'mouse-pointer-2': MousePointer2, 'check-square': CheckSquare, 'wand-sparkles': WandSparkles, } const workbenchIconKeys: Record = { @@ -126,10 +134,13 @@ function App() { const [bottomOpen, setBottomOpen] = useState(true) const [notice, setNotice] = useState('') const facade = useMemo(() => createMockFacade(), []) + const nativeHistory = useMemo(() => new NativeOcctHistoryWorkerProvider(), []) const [facadeState, setFacadeState] = useState(() => facade.getState()) + const [diagnosticFlash, setDiagnosticFlash] = useState<{ objectId: string; token: number } | null>(null) useEffect(() => facade.subscribe((event) => { if (event.type === 'state.changed') setFacadeState(event.state) + if (event.type === 'diagnostic.focused') setDiagnosticFlash({ objectId: event.objectId, token: Date.now() }) if (event.type === 'notice') { setNotice(event.message) window.setTimeout(() => setNotice(''), 2600) @@ -143,6 +154,17 @@ function App() { useEffect(() => () => facade.geometry.dispose(), [facade]) + useEffect(() => { + facade.geometry.configureNativeHistory?.(nativeHistory) + void nativeHistory.initialize().catch((error: unknown) => { + setNotice(`Native history unavailable: ${error instanceof Error ? error.message : String(error)}`) + }) + return () => { + facade.geometry.configureNativeHistory?.(null) + nativeHistory.dispose() + } + }, [facade, nativeHistory]) + useEffect(() => { const handlePopState = () => setPage(pageFromPath()) window.addEventListener('popstate', handlePopState) @@ -168,6 +190,7 @@ function App() { const openWorkspace = () => navigate('workspace') const workbench = facadeState.activeWorkbench const selectedObject = facadeState.selectedObjectId + const selectedObjects = facadeState.selectedObjectIds ?? (selectedObject ? [selectedObject] : []) const currentWorkbench = workbenchMeta[workbench] const CurrentIcon = currentWorkbench.icon @@ -190,7 +213,9 @@ function App() { bottomOpen={bottomOpen} setBottomOpen={setBottomOpen} selectedObject={selectedObject} + selectedObjects={selectedObjects} setSelectedObject={setSelectedObject} + diagnosticFlash={diagnosticFlash} document={facadeState.document} facade={facade} workbenchIcon={CurrentIcon} @@ -206,42 +231,165 @@ function App() { function TopBar({ page, workbench, facade, onNavigate, onOpenWorkspace }: { page: Page; workbench: Workbench; facade: BitBybitWebCadFacade; onNavigate: (page: Page) => void; onOpenWorkspace: () => void }) { const [openMenu, setOpenMenu] = useState(null) - const document = facade.getState().document + const [dialog, setDialog] = useState(null) + const [commandQuery, setCommandQuery] = useState('') + const activeDocument = facade.getState().document + const camSnapshot = useCamSnapshot(facade) + const canUndo = workbench === 'CAM' ? camSnapshot.version >= 0 && facade.cam.canUndo() : facade.history.canUndo() + const canRedo = workbench === 'CAM' ? camSnapshot.version >= 0 && facade.cam.canRedo() : facade.history.canRedo() + const runUndo = () => workbench === 'CAM' ? facade.cam.undo() : facade.history.undo() + const runRedo = () => workbench === 'CAM' ? facade.cam.redo() : facade.history.redo() + const commandEntries = useMemo(() => (Object.keys(menuDefinitions) as MenuName[]).flatMap((menu) => menuDefinitions[menu].map((item) => ({ ...item, group: menu }))), []) + const filteredCommands = useMemo(() => { + const query = commandQuery.trim().toLowerCase() + const workbenchCommands = Object.values(workbenchDefinitions).flatMap((definition) => definition.groups.flatMap((group) => group.commands.map((item) => ({ ...item, command: item.id, group: definition.id })))) + return [...commandEntries, ...workbenchCommands] + .filter((item, index, entries) => entries.findIndex((candidate) => candidate.command === item.command) === index) + .filter((item) => !query || `${item.label} ${item.group} ${'shortcut' in item ? item.shortcut || '' : ''}`.toLowerCase().includes(query)) + .slice(0, 18) + }, [commandEntries, commandQuery]) + useEffect(() => { + const closeMenu = (event: PointerEvent) => { + const target = event.target + if (!(target instanceof Element) || !target.closest('.menu-wrapper')) setOpenMenu(null) + } + const closeOnEscape = (event: KeyboardEvent) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') { + event.preventDefault() + setOpenMenu(null) + setCommandQuery('') + setDialog('command-search') + return + } + const target = event.target + const editingText = target instanceof HTMLElement && (target.isContentEditable || ['INPUT', 'TEXTAREA'].includes(target.tagName)) + if (!editingText && (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'z') { + event.preventDefault() + if (event.shiftKey) runRedo() + else runUndo() + return + } + if (!editingText && (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'y') { + event.preventDefault() + runRedo() + return + } + if (event.key === 'Escape') { + setOpenMenu(null) + setDialog(null) + } + } + window.document.addEventListener('pointerdown', closeMenu) + window.document.addEventListener('keydown', closeOnEscape) + return () => { + window.document.removeEventListener('pointerdown', closeMenu) + window.document.removeEventListener('keydown', closeOnEscape) + } + }, [facade, workbench]) const handleMenuCommand = (command: string) => { setOpenMenu(null) if (command === 'help' || command === 'shortcuts') onNavigate('help') else if (command === 'diagnostics') onNavigate('diagnostics') - else if (command === 'preferences' || command === 'project-settings' || command === 'parameters') onNavigate('settings') + else if (command === 'preferences' || command === 'project-settings' || command === 'parameters' || command === 'customize') setDialog('preferences') else if (command === 'import') onNavigate('import') else if (command === 'export') onNavigate('export') else if (command === 'open') onNavigate('projects') + else if (command === 'about') setDialog('about') + else if (command === 'macros' || command === 'record-macro' || command === 'stop-macro' || command === 'execute-macro') setDialog('macro') + else if (command === 'close' || command === 'close-all') setDialog('close-document') + else if (command === 'undo') runUndo() + else if (command === 'redo') runRedo() + else if (command === 'save') facade.gui.command.execute({ commandId: 'save' }) + else if (command === 'new-document') { + facade.gui.command.execute({ commandId: 'new-document' }) + onOpenWorkspace() + } + else if (command.startsWith('CAM_')) { + facade.gui.command.execute({ commandId: command }) + onOpenWorkspace() + } else onOpenWorkspace() } return ( -
-
onNavigate('start')} role="button" tabIndex={0}> +
+
onNavigate('start')} role="button" tabIndex={0} aria-label="BitBybit Web FreeCAD start page">
-
BitBybit
CAD studio
+
BitBybit Web FreeCAD
CAD studio
-
{document.label} / {workbench}
- {document.dirty ? 'Unsaved changes' : 'Saved locally'} +
{activeDocument.label} / {workbench}
+ {activeDocument.dirty ? 'Unsaved changes' : 'Saved locally'}
- facade.history.undo()} disabled={!facade.history.canUndo()} /> - facade.history.redo()} disabled={!facade.history.canRedo()} /> + +
- + onNavigate('help')} /> + {dialog === 'command-search' && { setDialog(null); setCommandQuery(''); handleMenuCommand(command) }} onClose={() => setDialog(null)} />} + {dialog === 'preferences' && setDialog(null)} />} + {dialog === 'about' && setDialog(null)} />} + {dialog === 'macro' && setDialog(null)} />} + {dialog === 'close-document' && setDialog(null)} />}
) } -function Workspace({ workbench, onNavigate, setWorkbench, leftTab, setLeftTab, rightTab, setRightTab, bottomOpen, setBottomOpen, selectedObject, setSelectedObject, document, facade, workbenchIcon: WorkbenchIcon, showNotice }: { +function FreeCadDialog({ title, subtitle, icon: DialogIcon, onClose, children, wide = false }: { title: string; subtitle: string; icon: Icon; onClose: () => void; children: ReactNode; wide?: boolean }) { + const dialogRef = useRef(null) + useEffect(() => { + const dialog = dialogRef.current + const preferred = dialog?.querySelector('input, select, textarea, button:not(.dialog-close)') + ;(preferred ?? dialog?.querySelector('.dialog-close'))?.focus() + }, []) + return
{ if (event.target === event.currentTarget) onClose() }}> +
+
{title}
+
{subtitle}
+ {children} +
+
+} + +function CommandSearchDialog({ query, setQuery, commands, onRun, onClose }: { query: string; setQuery: (value: string) => void; commands: Array<{ command: string; label: string; group: string; shortcut?: string }>; onRun: (command: string) => void; onClose: () => void }) { + return +
setQuery(event.target.value)} placeholder="Type a command or workbench" aria-label="Command search" />
{commands.map((item) => )}{commands.length === 0 &&
No matching command
}
+
+} + +function PreferencesDialog({ facade, onClose }: { facade: BitBybitWebCadFacade; onClose: () => void }) { + return +
+
+
+} + +function AboutDialog({ onClose }: { onClose: () => void }) { + return +

BitBybit Web FreeCAD

FreeCAD-compatible browser workspace

Version 0.1 · FreeCAD 1.1.1 interaction baseline

BitBybit Facade · OCCT WASM · Three.js · SQLite WASM + OPFS

+
+
+} + +function MacroDialog({ facade, onClose }: { facade: BitBybitWebCadFacade; onClose: () => void }) { + return +
No macro recording active

Scripts run with explicit document and network permissions. Geometry changes remain undoable document transactions.

+
+
+} + +function CloseDocumentDialog({ facade, onClose }: { facade: BitBybitWebCadFacade; onClose: () => void }) { + return +
Save before closing to keep the current feature history and properties.
+
+
+} + +function Workspace({ workbench, onNavigate, setWorkbench, leftTab, setLeftTab, rightTab, setRightTab, bottomOpen, setBottomOpen, selectedObject, selectedObjects, setSelectedObject, diagnosticFlash, document, facade, workbenchIcon: WorkbenchIcon, showNotice }: { workbench: Workbench onNavigate: (page: Page) => void setWorkbench: (value: Workbench) => void @@ -252,20 +400,25 @@ function Workspace({ workbench, onNavigate, setWorkbench, leftTab, setLeftTab, r bottomOpen: boolean setBottomOpen: (open: boolean) => void selectedObject: string + selectedObjects: string[] setSelectedObject: (id: string) => void + diagnosticFlash: { objectId: string; token: number } | null document: DocumentSnapshot facade: BitBybitWebCadFacade workbenchIcon: Icon showNotice: (message: string) => void }) { + const [leftOpen, setLeftOpen] = useState(true) + const [rightOpen, setRightOpen] = useState(true) + const [bottomTab, setBottomTab] = useState<'report' | 'jobs' | 'diagnostics'>('report') return (
-
+
{ facade.gui.command.execute({ commandId: 'new-document' }); showNotice('New document prepared') }} /> onNavigate('projects')} /> - { facade.gui.command.execute({ commandId: 'save' }); showNotice('Saved to local workspace') }} /> + facade.gui.command.execute({ commandId: 'save' })} /> { void facade.app.document.recomputeAsync().then((result) => showNotice(result.status === 'completed' ? 'Recompute completed' : `Recompute ${result.status}`)) }} />
{ facade.gui.command.execute({ commandId: 'create-body' }); showNotice('Create Body task opened') }} active={workbench === 'Part Design'} /> @@ -274,10 +427,10 @@ function Workspace({ workbench, onNavigate, setWorkbench, leftTab, setLeftTab, r
Local workspace
- - + setLeftOpen(!leftOpen)} /> + setRightOpen(!rightOpen)} />
- +
@@ -285,62 +438,106 @@ function Workspace({ workbench, onNavigate, setWorkbench, leftTab, setLeftTab, r
{document.units} · {document.objects.length} objects · v{document.version}
-
- }
- +
Perspective
Grid 10 mm
XYZ
- - + {rightOpen && }
-
- {bottomOpen &&
{document.recompute?.status === 'failed' ? : }Recompute {document.recompute?.status || 'idle'}{document.recompute?.order.length || 0} objects in plangeneration {document.recompute?.generation || 0}
{(document.recompute?.errors || []).slice(0, 2).map((error) =>
{error.message}{error.code}
)}
} +
+ {bottomOpen &&
{bottomTab === 'report' && <>
{document.recompute?.status === 'failed' ? : }Recompute {document.recompute?.status || 'idle'}{document.recompute?.order.length || 0} objects in plangeneration {document.recompute?.generation || 0}
{(document.recompute?.errors || []).slice(0, 2).map((error) =>
{error.message}{error.code}
)}}{bottomTab === 'jobs' &&
Document recompute job{document.recompute?.status || 'idle'}generation {document.recompute?.generation || 0}
}{bottomTab === 'diagnostics' &&
Diagnostics stream ready
}
}
+
Ready{selectedObject ? `Selected: ${selectedObject}` : 'Select an object or start a command'}{document.units}CAD navigationGPU: WebGL2
) } -function WorkbenchNavBar({ workbench, setWorkbench, showNotice }: { workbench: Workbench; setWorkbench: (value: Workbench) => void; showNotice: (message: string) => void }) { - return
Workbench{pinnedWorkbenches.map((item) => { const IconComponent = workbenchMeta[item].icon; return })}
-} - -function FunctionRail({ workbench, facade, showNotice }: { workbench: Workbench; facade: BitBybitWebCadFacade; showNotice: (message: string) => void }) { +function WorkbenchCommandBar({ workbench, facade, showNotice, setLeftTab }: { workbench: Workbench; facade: BitBybitWebCadFacade; showNotice: (message: string) => void; setLeftTab: (tab: 'model' | 'tasks') => void }) { const groups = workbenchDefinitions[workbench].groups - return + const camImmediateCommands = new Set(['CAM_SimTools', 'CAM_Simulator', 'CAM_SimulatorGL', 'CAM_Camotics', 'CAM_Sanity', 'CAM_Inspect', 'CAM_SelectLoop', 'CAM_Stop', 'CAM_OpActiveToggle', 'CAM_OperationCopy', 'CAM_Copy', 'CAM_SimpleCopy', 'CAM_SetStartPoint']) + return
{groups.map((group) =>
{group.commands.map((item) => { const IconComponent = iconMap[item.icon] || MoreHorizontal; const state = facade.gui.command.getState(item.id); const title = state.status === 'disabled' && state.reason ? `${item.label}: ${state.reason}` : `${item.label}${item.shortcut ? ` (${item.shortcut})` : ''}`; return })}
{group.label}
)}
} -function ModelTree({ document, selectedObject, setSelectedObject, showNotice }: { document: DocumentSnapshot; selectedObject: string; setSelectedObject: (id: string) => void; showNotice: (message: string) => void }) { +function SelectionViewPanel({ selectedObject, document, facade, setSelectedObject, showNotice }: { selectedObject: string; document: DocumentSnapshot; facade: BitBybitWebCadFacade; setSelectedObject: (id: string) => void; showNotice: (message: string) => void }) { + const selected = selectedObject ? facade.app.document.getObject(selectedObject) : null + const treeItem = document.tree.find((item) => item.id === selectedObject) + const topologyEntries = selected?.topology?.entries ?? [] + return +} + +function ModelTree({ document, facade, selectedObjects, setSelectedObject, showNotice }: { document: DocumentSnapshot; facade: BitBybitWebCadFacade; selectedObjects: string[]; setSelectedObject: (id: string) => void; showNotice: (message: string) => void }) { const [expanded, setExpanded] = useState>({ origin: false, body: true, reference: false }) + const [contextMenu, setContextMenu] = useState<{ objectId: string; x: number; y: number } | null>(null) + const [deleteObjectId, setDeleteObjectId] = useState(null) const itemsById = new Map(document.tree.map((item) => [item.id, item])) const childIds = new Set(document.tree.flatMap((item) => item.children || [])) - return
+ useEffect(() => { + const close = () => setContextMenu(null) + window.addEventListener('pointerdown', close) + window.addEventListener('blur', close) + return () => { window.removeEventListener('pointerdown', close); window.removeEventListener('blur', close) } + }, []) + const openContextMenu = (event: ReactMouseEvent, objectId: string) => { event.preventDefault(); event.stopPropagation(); setSelectedObject(objectId); setContextMenu({ objectId, x: event.clientX, y: event.clientY }) } + const selectTreeObject = (event: ReactMouseEvent, objectId: string) => { + if (event.shiftKey || event.ctrlKey || event.metaKey) { + const next = selectedObjects.includes(objectId) ? selectedObjects.filter((candidate) => candidate !== objectId) : [...selectedObjects, objectId] + facade.selection.selectObjects(next) + } else setSelectedObject(objectId) + } + const confirmDelete = () => { + if (!deleteObjectId) return + try { const removed = facade.app.document.removeObject({ objectId: deleteObjectId, cascade: true }); showNotice(`Removed ${removed.length} object${removed.length === 1 ? '' : 's'}`) } catch (error) { showNotice(error instanceof Error ? error.message : String(error)) } + setDeleteObjectId(null) + } + const toggleVisibility = (objectId: string) => { + const object = facade.app.document.getObject(objectId) + const visibility = object?.properties.find((property) => property.name === 'Visibility') + if (!visibility || typeof visibility.value !== 'boolean') { showNotice('This object has no visibility property'); return } + try { + facade.app.document.setProperty({ objectId, propertyName: 'Visibility', value: !visibility.value }) + showNotice(`${objectId} ${visibility.value ? 'hidden' : 'shown'}`) + } catch (error) { showNotice(error instanceof Error ? error.message : String(error)) } + } + return
{ if (event.key === ' ' && selectedObjects.length > 0) { event.preventDefault(); selectedObjects.forEach(toggleVisibility) } }}>
{document.label}v{document.version}
- {document.tree.filter((item) => !childIds.has(item.id)).map((item) => setExpanded((current) => ({ ...current, [item.id]: !current[item.id] }))} itemsById={itemsById} selectedObject={selectedObject} setSelectedObject={setSelectedObject} showNotice={showNotice} />)} + {document.tree.filter((item) => !childIds.has(item.id)).map((item) => setExpanded((current) => ({ ...current, [item.id]: !current[item.id] }))} itemsById={itemsById} selectedObjects={selectedObjects} onSelect={selectTreeObject} showNotice={showNotice} onContextMenu={openContextMenu} />)}
ValidNeeds review
+ {contextMenu &&
event.stopPropagation()}>
} + {deleteObjectId && setDeleteObjectId(null)}>
Deleting {itemsById.get(deleteObjectId)?.label || deleteObjectId} also removes dependent features. This action remains available to Edit > Undo.
}
} -function TreeItem({ item, level, expanded, onToggle, itemsById, selectedObject, setSelectedObject, showNotice }: { item: ModelTreeItem; level: number; expanded?: boolean; onToggle: () => void; itemsById: Map; selectedObject: string; setSelectedObject: (id: string) => void; showNotice: (message: string) => void }) { +function TreeItem({ item, level, expanded, onToggle, itemsById, selectedObjects, onSelect, showNotice, onContextMenu }: { item: ModelTreeItem; level: number; expanded?: boolean; onToggle: () => void; itemsById: Map; selectedObjects: string[]; onSelect: (event: ReactMouseEvent, objectId: string) => void; showNotice: (message: string) => void; onContextMenu: (event: ReactMouseEvent, objectId: string) => void }) { const hasChildren = item.children && item.children.length > 0 const itemIcon = item.type === 'body' ? Box : item.type === 'sketch' ? CircleDot : item.type === 'feature' ? SquareStack : Layers3 const ItemIcon = itemIcon return <> - - {expanded && hasChildren &&
{item.children?.map((childId) => { const child = itemsById.get(childId); const ChildIcon = child?.type === 'sketch' ? CircleDot : child?.type === 'feature' ? SquareStack : Circle; return child ? :
{childId}
})}
} + {expanded && hasChildren &&
{item.children?.map((childId) => { const child = itemsById.get(childId); const ChildIcon = child?.type === 'sketch' ? CircleDot : child?.type === 'feature' ? SquareStack : Circle; return child ? :
{childId}
})}
} } @@ -383,29 +580,259 @@ function MultiTransformEditor({ value, onChange }: { value: MultiTransformValue;
} +const useCamSnapshot = (facade: BitBybitWebCadFacade) => { + const [snapshot, setSnapshot] = useState(() => facade.cam.snapshot()) + useEffect(() => { setSnapshot(facade.cam.snapshot()); return facade.cam.subscribe(setSnapshot) }, [facade]) + return snapshot +} + +function CamJobPanel({ facade, showNotice }: { facade: BitBybitWebCadFacade; showNotice: (message: string) => void }) { + const snapshot = useCamSnapshot(facade) + const [selected, setSelected] = useState('job') + const sanity = facade.cam.sanityCheck() + const stockSize = snapshot.stock.max.map((value, index) => value - snapshot.stock.min[index]) + const selectedTool = snapshot.tools.find((tool) => `tool:${tool.id}` === selected) + const selectedController = snapshot.toolControllers.find((controller) => `controller:${controller.id}` === selected) + const selectedOperation = snapshot.operations.find((operation) => `operation:${operation.id}` === selected) + const properties: Array<[string, string]> = selected === 'job' + ? [['Type', 'Path::Job'], ['Label', snapshot.label], ['Version', String(snapshot.version)], ['Sanity', sanity.status]] + : selected === 'stock' + ? [['Type', 'Path::FeaturePython'], ['Mode', snapshot.stock.mode || 'create-box'], ['Length', `${stockSize[0]} mm`], ['Width', `${stockSize[1]} mm`], ['Height', `${stockSize[2]} mm`]] + : selected === 'setup' + ? [['Type', 'Path::FeaturePython'], ['Safe Height Offset', `${snapshot.setupSheet.safeHeightOffset} mm`], ['Clearance Height Offset', `${snapshot.setupSheet.clearanceHeightOffset} mm`], ['Coolant Mode', snapshot.setupSheet.coolantMode]] + : selectedTool + ? [['Type', 'Path::ToolBit'], ['Shape', selectedTool.shape || 'endmill'], ['Diameter', `${selectedTool.diameter} mm`], ['Length', `${selectedTool.length} mm`]] + : selectedController + ? [['Type', 'Path::ToolController'], ['Tool', selectedController.toolId], ['Tool Number', String(selectedController.toolNumber)], ['Spindle', `${selectedController.spindleSpeed} rpm`], ['Horizontal Feed', `${selectedController.horizontalFeed} mm/min`], ['Vertical Feed', `${selectedController.verticalFeed} mm/min`]] + : selectedOperation + ? [['Type', 'Path::FeaturePython'], ['Operation', selectedOperation.kind], ['Tool Controller', selectedOperation.controllerId], ['Status', selectedOperation.status], ['Path Points', String(selectedOperation.path.length)], ['Final Depth', `${selectedOperation.depth} mm`]] + : [] + const run = (commandId: string) => { facade.gui.command.execute({ commandId }); showNotice(`${commandId} opened`) } + const row = (id: string, icon: ReactNode, label: string, detail?: string, state?: string) => + return
+
+ {row('job', , snapshot.label, 'Path::Job', sanity.status)} +
+ {row('model', , 'Model', 'Base geometry')} + {row('stock', , 'Stock', `${stockSize.map((value) => value.toFixed(1)).join(' x ')} mm`)} + {row('setup', , 'SetupSheet', `${snapshot.setupSheet.safeHeightOffset}/${snapshot.setupSheet.clearanceHeightOffset} mm`)} +
Tools{snapshot.toolControllers.length}
+ {snapshot.toolControllers.map((controller) => row(`controller:${controller.id}`, , controller.label, `T${controller.toolNumber} - ${controller.toolId}`))} + {snapshot.tools.map((tool) => row(`tool:${tool.id}`, , tool.name, `${tool.diameter} mm ${tool.shape || 'endmill'}`))} +
Operations{snapshot.operations.length}
+ {snapshot.operations.map((operation) => row(`operation:${operation.id}`, operation.active ? : , operation.label, `${operation.kind} - ${operation.path.length} pts`, operation.status))} +
+ {snapshot.operations.length === 0 &&
No toolpaths
} +
+
+
Property
+ {properties.map(([name, value]) =>
{name}{value}
)} +
+
+} + +const camOperationForCommand: Partial> = { + CAM_Profile: 'profile', + CAM_Pocket_Shape: 'pocket', + CAM_MillFace: 'mill-face', + CAM_Helix: 'helix', + CAM_Adaptive: 'adaptive', + CAM_Slot: 'slot', + CAM_Area: 'area', + CAM_Area_Workplane: 'area-workplane', + CAM_Drilling: 'drilling', + CAM_Tapping: 'tapping', + CAM_ThreadMilling: 'thread-milling', + CAM_Engrave: 'engrave', + CAM_Deburr: 'deburr', + CAM_Vcarve: 'v-carve', + CAM_Probe: 'probe', + CAM_Shape: 'shape', + CAM_Custom: 'custom', + CAM_PathShapeTC: 'path-shape-tool-controller', + CAM_Pocket3D: 'pocket-3d', +} + +const camDressupForCommand: Partial> = { + CAM_Array: 'array', CAM_DressupArray: 'array', CAM_DressupAxisMap: 'axis-map', CAM_DressupDogbone: 'dogbone', CAM_DressupDragKnife: 'drag-knife', CAM_DressupLeadInOut: 'lead-in-out', CAM_DressupPathBoundary: 'boundary', CAM_DressupRampEntry: 'ramp-entry', CAM_DressupTag: 'holding-tags', CAM_DressupZCorrect: 'z-correct', +} + +function CamTaskPanel({ facade, showNotice }: { facade: BitBybitWebCadFacade; showNotice: (message: string) => void }) { + const snapshot = useCamSnapshot(facade) + const task = facade.task.getActive() + const activeTask = task?.status === 'preview' && task.commandId.startsWith('CAM_') ? task : null + const commandId = activeTask?.commandId || '' + const draft = activeTask?.draft || {} + const numberValue = (key: string, fallback: number) => typeof draft[key] === 'number' && Number.isFinite(draft[key]) ? Number(draft[key]) : fallback + const stringValue = (key: string, fallback: string) => typeof draft[key] === 'string' ? String(draft[key]) : fallback + const stockSize = snapshot.stock.max.map((value, index) => value - snapshot.stock.min[index]) + const isToolTask = ['CAM_ToolController', 'CAM_ToolBitLibraryOpen', 'CAM_ToolBitCreate', 'CAM_ToolBitDock'].includes(commandId) + const isToolLoadTask = commandId === 'CAM_ToolBitLoad' + const isToolSaveTask = commandId === 'CAM_ToolBitSave' || commandId === 'CAM_ToolBitSaveAs' + const isOperationTask = Boolean(camOperationForCommand[commandId]) || ['CAM_DrillingTools', 'CAM_EngraveTools', 'CAM_3dTools'].includes(commandId) + const isDressupTask = commandId === 'CAM_DressupTools' || Boolean(camDressupForCommand[commandId]) + const isFixtureTask = commandId === 'CAM_Fixture' + const operationKind = (camOperationForCommand[commandId] || stringValue('operationKind', commandId === 'CAM_DrillingTools' ? 'drilling' : commandId === 'CAM_EngraveTools' ? 'engrave' : commandId === 'CAM_3dTools' ? 'pocket-3d' : 'profile')) as CamOperationKind + const dressupKind = (camDressupForCommand[commandId] || stringValue('dressupKind', 'lead-in-out')) as CamDressupKind + const axisConfiguration = stringValue('axisConfiguration', '3-axis') as CamAxisConfiguration + const isMetadataTask = ['CAM_Compound', 'CAM_PropertyBag', 'CAM_Comment'].includes(commandId) + const setDraft = (update: Record) => facade.task.update(update) + const finish = (message: string) => { facade.task.apply(); showNotice(message) } + const ensureDefaultTool = () => { + const current = facade.cam.snapshot() + if (current.tools.length > 0) return current.tools[0] + return facade.cam.addTool({ id: 'T1', name: '6 mm End Mill', shape: 'endmill', diameter: 6, length: 50, cuttingEdgeHeight: 20, shankDiameter: 6 }) + } + const downloadText = (text: string, filename: string, type = 'application/json') => { + const url = URL.createObjectURL(new Blob([text], { type })) + const link = document.createElement('a') + link.href = url + link.download = filename + link.click() + URL.revokeObjectURL(url) + return new TextEncoder().encode(text).byteLength + } + const accept = async () => { + if (!activeTask) { showNotice('No active CAM task'); return } + try { + if (commandId === 'CAM_Job') { + const length = numberValue('length', stockSize[0]); const width = numberValue('width', stockSize[1]); const height = numberValue('height', stockSize[2]) + facade.cam.updateStock({ mode: stringValue('stockMode', snapshot.stock.mode || 'from-base-bound-box') as CamStockMode, min: [0, 0, 0], max: [length, width, height] }) + facade.cam.updateSetupSheet({ safeHeightOffset: numberValue('safeHeightOffset', snapshot.setupSheet.safeHeightOffset), clearanceHeightOffset: numberValue('clearanceHeightOffset', snapshot.setupSheet.clearanceHeightOffset), coolantMode: stringValue('coolantMode', snapshot.setupSheet.coolantMode) as CamCoolantMode }) + finish('CAM Job and SetupSheet updated') + } else if (isToolTask) { + const sequence = snapshot.tools.length + 1 + const toolId = stringValue('toolId', `T${sequence}`) + facade.cam.addTool({ id: toolId, name: stringValue('toolName', `${numberValue('diameter', 6)} mm End Mill`), shape: stringValue('toolShape', 'endmill') as 'endmill', diameter: numberValue('diameter', 6), length: numberValue('toolLength', 50), cuttingEdgeHeight: numberValue('cuttingEdgeHeight', 20), shankDiameter: numberValue('shankDiameter', numberValue('diameter', 6)), holderDiameter: numberValue('holderDiameter', 20), holderLength: numberValue('holderLength', 70) }) + facade.cam.addToolController({ id: `TC-${toolId}`, label: stringValue('controllerLabel', `Tool Controller ${toolId}`), toolId, toolNumber: numberValue('toolNumber', sequence), spindleSpeed: numberValue('spindleSpeed', 12000), spindleDirection: stringValue('spindleDirection', 'forward') as 'forward', horizontalFeed: numberValue('horizontalFeed', 300), verticalFeed: numberValue('verticalFeed', 100), horizontalRapid: numberValue('horizontalRapid', 0), verticalRapid: numberValue('verticalRapid', 0) }) + finish(`ToolBit and Tool Controller ${toolId} created`) + } else if (isToolLoadTask) { + const loaded = facade.cam.importToolBit(stringValue('toolJson', ''), stringValue('toolIdOverride', '').trim() || undefined) + finish(`ToolBit ${loaded.id} loaded`) + } else if (isToolSaveTask) { + const toolId = stringValue('selectedToolId', snapshot.tools[0]?.id || '') + if (!toolId) throw new RangeError('Create or load a ToolBit before saving it.') + const bytes = downloadText(facade.cam.exportToolBit(toolId), `${toolId}.fctb`) + finish(`ToolBit ${toolId} saved (${bytes} bytes)`) + } else if (isOperationTask) { + const tool = ensureDefaultTool() + const current = facade.cam.snapshot() + let sequence = current.operations.length + 1 + let operationId = `${operationKind}-${sequence}` + while (current.operations.some((operation) => operation.id === operationId)) { sequence += 1; operationId = `${operationKind}-${sequence}` } + const matchingController = current.toolControllers.find((controller) => controller.toolId === tool.id) + facade.cam.addOperation({ id: operationId, label: `${operationKind.replace(/-/g, ' ')} ${sequence}`, kind: operationKind, toolId: tool.id, controllerId: matchingController?.id, depth: numberValue('depth', Math.min(2, stockSize[2])), feed: numberValue('horizontalFeed', matchingController?.horizontalFeed || 300), verticalFeed: numberValue('verticalFeed', matchingController?.verticalFeed || 100), stepDown: numberValue('stepDown', Math.min(tool.diameter, 2)), stepOver: numberValue('stepOver', 50), direction: stringValue('direction', 'climb') as CamCutDirection, coolantMode: stringValue('coolantMode', snapshot.setupSheet.coolantMode) as CamCoolantMode }) + const operation = facade.cam.generatePath(operationId) + finish(`${operation.label} generated with ${operation.path.length} path points`) + } else if (isDressupTask) { + const target = snapshot.operations.at(-1) + if (!target) throw new RangeError('Create a CAM operation before adding a dress-up.') + const kind = dressupKind + facade.cam.applyDressup(target.id, { kind, parameters: kind === 'array' ? { count: numberValue('count', 2), offsetX: numberValue('offsetX', 0), offsetY: numberValue('offsetY', 0) } : kind === 'lead-in-out' ? { length: numberValue('leadLength', 1) } : kind === 'dogbone' ? { radius: numberValue('dogboneRadius', 0.5) } : kind === 'drag-knife' ? { offset: numberValue('knifeOffset', 0.5) } : kind === 'holding-tags' ? { height: numberValue('tagHeight', 0.5) } : kind === 'z-correct' ? { offset: numberValue('zOffset', 0) } : {} }) + const operation = facade.cam.generatePath(target.id) + finish(`${kind} dress-up applied to ${operation.label}`) + } else if (isFixtureTask) { + const fixtureId = stringValue('fixtureId', `Fixture-${snapshot.collisionFixtures.length + 1}`).trim() + const fixture = { id: fixtureId, kind: 'fixture' as const, min: [numberValue('fixtureMinX', 0), numberValue('fixtureMinY', 0), numberValue('fixtureMinZ', 0)] as [number, number, number], max: [numberValue('fixtureMaxX', 1), numberValue('fixtureMaxY', 1), numberValue('fixtureMaxZ', stockSize[2])] as [number, number, number] } + facade.cam.updateCollisionFixtures([...snapshot.collisionFixtures.filter((entry) => entry.id !== fixtureId), fixture]) + finish(`CAM fixture ${fixtureId} updated`) + } else if (commandId === 'CAM_Post') { + const post = stringValue('postprocessor', 'linuxcnc') as CamPostprocessor + const target = snapshot.operations.at(-1) + if (!target) throw new RangeError('Create a CAM operation before generating G-code.') + const kinematics: CamKinematicOptions | undefined = axisConfiguration === '3-axis' ? undefined : { configuration: axisConfiguration, rotary: { axis: stringValue('rotaryAxis', post === 'linuxcnc' ? 'C' : 'A') as CamRotaryAxis, startDegrees: numberValue('rotaryStart', 0), endDegrees: numberValue('rotaryEnd', 90) }, ...(axisConfiguration === '5-axis' ? { tilt: { axis: stringValue('tiltAxis', 'B') as CamRotaryAxis, startDegrees: numberValue('tiltStart', 0), endDegrees: numberValue('tiltEnd', 45) } } : {}) } + const prepared = await prepareCamPipeline(facade.cam, target.id, { postprocessor: post, kinematics }) + const bytes = downloadText(prepared.gcode, `${snapshot.id}-${axisConfiguration}-${post}.nc`, 'text/x.gcode') + const machineUrl = import.meta.env.VITE_LINUXCNC_WASM_URL || '/linuxcnc-machine/?case=axis-vismach-5axis-table-rotary-tilting-xyzbc-trt' + const submitted = await submitCamPipelineToLinuxcnc(prepared, createLinuxcncIframeAdapter({ url: machineUrl, name: `${snapshot.id}.ngc`, run: true })) + if (submitted.linuxcnc?.status !== 'accepted') throw new Error(submitted.linuxcnc?.message || `LinuxCNC WASM did not accept the generated program (${submitted.linuxcnc?.status || 'unknown'}).`) + finish(`${post} ${axisConfiguration} G-code accepted by LinuxCNC WASM (${bytes} bytes)`) + } else if (commandId === 'CAM_ExportTemplate') { + const bytes = downloadText(facade.cam.exportJob(), `${snapshot.id}-template.json`) + finish(`CAM Job template exported (${bytes} bytes)`) + } else if (commandId === 'CAM_Comment') { + const comment = facade.cam.addComment(stringValue('comment', '')) + finish(`CAM comment added (${comment.length} characters)`) + } else if (commandId === 'CAM_PropertyBag') { + const propertyType = stringValue('propertyType', 'string') + const rawValue = stringValue('propertyValue', '') + const value: CamPropertyValue = propertyType === 'number' ? Number(rawValue) : propertyType === 'boolean' ? rawValue === 'true' : rawValue + facade.cam.setPropertyBagValue(stringValue('propertyName', ''), value) + finish(`CAM property ${stringValue('propertyName', '').trim()} updated`) + } else if (commandId === 'CAM_Compound') { + const operationIds = stringValue('operationIds', snapshot.operations.map((operation) => operation.id).join(',')).split(',').map((value) => value.trim()).filter(Boolean) + const compound = facade.cam.createCompound(operationIds, stringValue('compoundId', '').trim() || undefined, stringValue('compoundLabel', 'Operation Compound')) + finish(`CAM compound ${compound.label} created from ${compound.operationIds.length} operations`) + } else finish(`${commandId} completed`) + } catch (error) { showNotice(error instanceof Error ? error.message : String(error)) } + } + if (!activeTask) return
CAM Job

{snapshot.label}

{facade.cam.sanityCheck().status}
{snapshot.operations.length} operations{snapshot.tools.length} ToolBits - {snapshot.toolControllers.length} controllersStock {stockSize.map((value) => value.toFixed(1)).join(' x ')} mm
+ return
+
+
Active CAM command

{workbenchDefinitions.CAM.groups.flatMap((group) => group.commands).find((command) => command.id === commandId)?.label || commandId}

Preview
+
+ {commandId === 'CAM_Job' && <>{[['length', 'Length', stockSize[0]], ['width', 'Width', stockSize[1]], ['height', 'Height', stockSize[2]]].map(([key, label, fallback]) => )}
SetupSheet
} + {isToolTask && <>{[['toolId', 'Tool ID', `T${snapshot.tools.length + 1}`], ['toolName', 'Label', '6 mm End Mill'], ['controllerLabel', 'Controller Label', `Tool Controller T${snapshot.tools.length + 1}`]].map(([key, label, fallback]) => )}{[['diameter', 'Diameter', 6, 'mm'], ['toolLength', 'Overall Length', 50, 'mm'], ['cuttingEdgeHeight', 'Cutting Edge Height', 20, 'mm'], ['shankDiameter', 'Shank Diameter', 6, 'mm'], ['holderDiameter', 'Holder Diameter', 20, 'mm'], ['holderLength', 'Holder Length', 70, 'mm'], ['toolNumber', 'Tool Number', snapshot.tools.length + 1, ''], ['spindleSpeed', 'Spindle Speed', 12000, 'rpm'], ['horizontalFeed', 'Horizontal Feed', 300, 'mm/min'], ['verticalFeed', 'Vertical Feed', 100, 'mm/min']].map(([key, label, fallback, unit]) => )}} + {isToolLoadTask && <>