qairt-visualizer 0.5.1__py3-none-win_amd64.whl → 0.7.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qairt_visualizer/core/helpers/version.py +23 -0
- qairt_visualizer/core/launchers/base_ui_launcher_context.py +28 -7
- qairt_visualizer/core/launchers/electron_launcher_context.py +72 -3
- qairt_visualizer/core/parsers/dlc_parser/dlc_parser.py +105 -33
- qairt_visualizer/core/parsers/dlc_parser/get_source_topology.py +47 -0
- qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.pyd +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.so +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.pyd +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.so +0 -0
- qairt_visualizer/core/parsers/dlc_parser/models/op_tensor_mappings.py +8 -4
- qairt_visualizer/core/ui/dist/browser/__init__.py +47 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity.js → acuity.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/app.js → app.js} +63 -57
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-schema.js → armnn-schema.js} +590 -5
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn.js → armnn.js} +3 -5
- qairt_visualizer/core/ui/dist/browser/assets/i18n/common/en.json +8 -2
- qairt_visualizer/core/ui/dist/browser/assets/i18n/graph/en.json +44 -36
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/en.json +9 -3
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/model-diff/en.json +6 -0
- qairt_visualizer/core/ui/dist/browser/assets/i18n/workspaces/en.json +3 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/barracuda.js → barracuda.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/base.js → base.js} +20 -16
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl.js → bigdl.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/browser.js → browser.js} +59 -49
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe.js → caffe.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-proto.js → caffe2-proto.js} +26 -26
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2.js → caffe2.js} +113 -114
- qairt_visualizer/core/ui/dist/browser/chunk-3SMGFPTN.js +11 -0
- qairt_visualizer/core/ui/dist/browser/chunk-43LQFSHA.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-447NKSFT.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-5MAR72QP.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-7PTY53DS.js +5 -0
- qairt_visualizer/core/ui/dist/browser/chunk-GAUD627J.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-H7TLLCSI.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-HISUA6LZ.js +4 -0
- qairt_visualizer/core/ui/dist/browser/chunk-HXB7IAZI.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-JPD5T7FP.js +120 -0
- qairt_visualizer/core/ui/dist/browser/chunk-L3QJ7DR2.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{chunk-HBP6TEQ6.js → chunk-MCR4N53U.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/chunk-QD7PA2I4.js +19 -0
- qairt_visualizer/core/ui/dist/browser/chunk-TKZG6FLW.js +12 -0
- qairt_visualizer/core/ui/dist/browser/chunk-WFAVWONI.js +5 -0
- qairt_visualizer/core/ui/dist/browser/chunk-WRMDGTCT.js +35 -0
- qairt_visualizer/core/ui/dist/browser/chunk-X25J6H7V.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-schema.js → circle-schema.js} +17 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle.js → circle.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk.js → cntk.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-proto.js → coreml-proto.js} +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml.js → coreml.js} +24 -21
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dagre.js → dagre.js} +5 -5
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet-metadata.json → darknet-metadata.json} +0 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet.js → darknet.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/electron.mjs → desktop.mjs} +44 -131
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j.js → dl4j.js} +5 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-schema.js → dlc-schema.js} +8 -8
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc.js → dlc.js} +110 -29
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn.js → dnn.js} +2 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dot.js → dot.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/eaix.js +24 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso.js → espresso.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch-schema.js → executorch-schema.js} +363 -42
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch.js → executorch.js} +108 -40
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flatbuffers.js → flatbuffers.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flax.js → flax.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux.js → flux.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/gguf.js → gguf.js} +44 -24
- qairt_visualizer/core/ui/dist/browser/grapher.css +145 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/grapher.js → grapher.js} +24 -48
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo.js → hailo.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hickle.js → hickle.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/imgdnn.js → imgdnn.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/index.html +15 -16
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/index.js → index.js} +2 -24
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/json.js → json.js} +28 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann.js → kann.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-metadata.json → keras-metadata.json} +15 -7
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras.js → keras.js} +13 -7
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kmodel.js → kmodel.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne.js → lasagne.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lightgbm.js → lightgbm.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/main-EVI665MB.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mediapipe.js → mediapipe.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine.js → megengine.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/message.js → message.js} +3 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlir.js → mlir.js} +53 -17
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet.js → mlnet.js} +2 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-schema.js → mnn-schema.js} +9 -6
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn.js → mnn.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite.js → mslite.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet.js → mxnet.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn.js → ncnn.js} +3 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla.js → nnabla.js} +4 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnef.js → nnef.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/node.js +102 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/numpy.js → numpy.js} +9 -9
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om.js → om.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn.js → onednn.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-metadata.json → onnx-metadata.json} +3500 -233
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-proto.js → onnx-proto.js} +436 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx.js → onnx.js} +284 -199
- qairt_visualizer/core/ui/dist/browser/onnx.py +231 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino.js → openvino.js} +36 -31
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-proto.js → paddle-proto.js} +54 -54
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle.js → paddle.js} +22 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pickle.js → pickle.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/python.js → python.js} +743 -325
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-metadata.json → pytorch-metadata.json} +3217 -2934
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-proto.js → pytorch-proto.js} +4 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch.js → pytorch.js} +172 -86
- qairt_visualizer/core/ui/dist/browser/pytorch.py +304 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn.js → qnn.js} +6 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn.js → rknn.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/safetensors.js → safetensors.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece.js → sentencepiece.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/server.py → server.py} +95 -103
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn-metadata.json → sklearn-metadata.json} +15 -10
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn.js → sklearn.js} +5 -5
- qairt_visualizer/core/ui/dist/browser/{styles-MRR6DOT2.css → styles-2Z5PB4WZ.css} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tar.js → tar.js} +18 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine.js → tengine.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tensorrt.js → tensorrt.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-metadata.json → tf-metadata.json} +1255 -163
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-proto.js → tf-proto.js} +46 -12
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf.js → tf.js} +36 -13
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite.js → tflite.js} +18 -21
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn.js → tnn.js} +1 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch.js → torch.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/transformers.js +171 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tvm.js → tvm.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff.js → uff.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/view.js → view.js} +1406 -1115
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/weka.js → weka.js} +3 -4
- qairt_visualizer/core/ui/dist/browser/worker-EHYFMTM7.js +1 -0
- qairt_visualizer/core/ui/dist/browser/worker-KX5DA6GL.js +4 -0
- qairt_visualizer/core/ui/dist/browser/xgboost.js +59 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xml.js → xml.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel.js → xmodel.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/zip.js → zip.js} +38 -41
- qairt_visualizer/core/ui/dist/qairt_visualizer.exe +0 -0
- qairt_visualizer/core/ui/dist/resources/app.asar +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/METADATA +1 -1
- qairt_visualizer-0.7.0.dist-info/RECORD +265 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CITATION.cff +0 -10
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CONTRIBUTING.md +0 -29
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/LICENSE +0 -21
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/README.md +0 -36
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/jenkins/Jenkinsfile +0 -69
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package-lock.json +0 -5743
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.js +0 -689
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.json +0 -53
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.py +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.svg +0 -5
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background@2x.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/electron-builder.json +0 -109
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/eslint.config.js +0 -231
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/forge.config.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.html +0 -27
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns.svg +0 -175
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.ico +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.svg +0 -179
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/notarize.cjs +0 -24
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/pyproject.toml +0 -63
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/setup.py +0 -43
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/resolve_upgrade_merge.sh +0 -10
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/__init__.py +0 -41
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/cambricon.js +0 -32
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/favicon.ico +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/grapher.css +0 -602
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/index.html +0 -2222
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/modular.js +0 -81
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/onnx.py +0 -227
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/pytorch.py +0 -298
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qcontrol.js +0 -207
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qgraph-toolkit.js +0 -123
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsubgraph.js +0 -226
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsummary-panel.js +0 -89
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/server.js +0 -250
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/backend.py +0 -80
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/measures.py +0 -27
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.js +0 -359
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.json +0 -8523
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/worker.js +0 -859
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/armnn +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/bigdl +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe +0 -37
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe-script.js +0 -12
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle +0 -43
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle-script.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle_script.js +0 -73
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/cntk +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/coreml +0 -49
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc.fbs +0 -165
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn.proto +0 -79
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/executorch +0 -41
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/flatc.js +0 -1315
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/gguf +0 -22
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/kann +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras +0 -62
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_metadata.py +0 -205
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_script.py +0 -204
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mediapipe +0 -72
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine +0 -47
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine-script.js +0 -113
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine_script.js +0 -112
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mnn +0 -40
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite +0 -45
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite-script.js +0 -83
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite_metadata.js +0 -82
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla +0 -79
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla_script.py +0 -145
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om +0 -26
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om.proto +0 -204
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx +0 -135
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_metadata.py +0 -233
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_script.py +0 -332
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/paddle +0 -38
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/protoc.js +0 -1609
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch +0 -85
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_metadata.py +0 -166
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_script.py +0 -404
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn.fbs +0 -78
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sentencepiece +0 -39
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn +0 -65
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_metadata.py +0 -126
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_script.py +0 -129
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf +0 -97
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_metadata.py +0 -403
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_script.py +0 -422
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite-script.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite_metadata.js +0 -73
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff.proto +0 -127
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/xmodel +0 -36
- qairt_visualizer/core/ui/dist/browser/chunk-3NAQCYEU.js +0 -1
- qairt_visualizer/core/ui/dist/browser/chunk-NFKTPX3Z.js +0 -11
- qairt_visualizer/core/ui/dist/browser/chunk-OMI6HJ5Y.js +0 -19
- qairt_visualizer/core/ui/dist/browser/chunk-TTZXMRJ5.js +0 -34
- qairt_visualizer/core/ui/dist/browser/main-NXPVOKMG.js +0 -1
- qairt_visualizer/core/ui/dist/browser/worker-5VPKG2GV.js +0 -4
- qairt_visualizer/core/ui/dist/browser/worker-UVGWDZ5K.js +0 -1
- qairt_visualizer-0.5.1.dist-info/RECORD +0 -337
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity-metadata.json → acuity-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-metadata.json → armnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-metadata.json → bigdl-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-proto.js → bigdl-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-metadata.json → caffe-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-proto.js → caffe-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-metadata.json → caffe2-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/catboost.js → catboost.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-metadata.json → circle-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-metadata.json → cntk-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-proto.js → cntk-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-metadata.json → coreml-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j-metadata.json → dl4j-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-metadata.json → dlc-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-metadata.json → dnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-proto.js → dnn-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso-metadata.json → espresso-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flexbuffers.js → flexbuffers.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux-metadata.json → flux-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo-metadata.json → hailo-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hdf5.js → hdf5.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/icon.png → icon.png} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-metadata.json → kann-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-schema.js → kann-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-proto.js → keras-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne-metadata.json → lasagne-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-metadata.json → megengine-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-schema.js → megengine-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet-metadata.json → mlnet-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-metadata.json → mnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-metadata.json → mslite-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-schema.js → mslite-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet-metadata.json → mxnet-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn-metadata.json → ncnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-metadata.json → nnabla-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-proto.js → nnabla-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnc.js → nnc.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-metadata.json → om-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-proto.js → om-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn-metadata.json → onednn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-schema.js → onnx-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino-metadata.json → openvino-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-metadata.json → paddle-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-schema.js → paddle-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/protobuf.js → protobuf.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-schema.js → pytorch-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn-metadata.json → qnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-metadata.json → rknn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-schema.js → rknn-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece-proto.js → sentencepiece-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine-metadata.json → tengine-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/text.js → text.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-metadata.json → tflite-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-schema.js → tflite-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn-metadata.json → tnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch-metadata.json → torch-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-metadata.json → uff-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-proto.js → uff-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/worker.js → worker.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel-proto.js → xmodel-proto.js} +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/LICENSE.pdf +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/WHEEL +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/entry_points.txt +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as x}from"./chunk-447NKSFT.js";import"./chunk-43LQFSHA.js";var i={};i.File=class{static open(t){if(t&&t.length>=8){let s=t instanceof Uint8Array?t:t.peek(8);if([137,72,68,70,13,10,26,10].every((o,n)=>o===s[n]))return new i.File(t)}return null}constructor(t){this.data=t}read(){if(this.data){let t=this.data;delete this.data;let s=i.Reader.open(t);s.skip(8),this._globalHeap=new i.GlobalHeap(s);let e=s.byte();switch(e){case 0:case 1:{if(this._freeSpaceStorageVersion=s.byte(),this._rootGroupEntryVersion=s.byte(),s.skip(1),this._sharedHeaderMessageVersionFormat=s.byte(),s.initialize(),s.skip(1),this._groupLeafNodeK=s.uint16(),this._groupInternalNodeK=s.uint16(),s.skip(4),e>0&&(this._indexedStorageInternalNodeK=s.uint16(),this.skip(2)),this._baseAddress=s.offset(),s.offset(),this._endOfFileAddress=s.offset(),s.offset(),this._baseAddress!==0)throw new i.Error("Base address is not zero.");let o=new i.SymbolTableEntry(s);this._rootGroup=new i.Group(s,o,null,this._globalHeap,"","");break}case 2:case 3:{s.initialize(),s.byte(),this._baseAddress=s.offset(),this._superBlockExtensionAddress=s.offset(),this._endOfFileAddress=s.offset();let o=new i.DataObjectHeader(s,s.offset());this._rootGroup=new i.Group(s,null,o,this._globalHeap,"","");break}default:throw new i.Error(`Unsupported Superblock version ${e}.`)}delete this.data}return this._rootGroup}};i.Group=class{constructor(t,s,e,o,n,a){this._reader=t,this._entry=s,this._dataObjectHeader=e,this._globalHeap=o,this._name=a,this._path=n==="/"?n+a:`${n}/${a}`}get name(){return this._name}get path(){return this._path}group(t){if(this._decodeGroups(),this._groups.has(t))return this._groups.get(t);let s=t.indexOf("/");if(s!==-1){let e=this.group(t.substring(0,s));if(e)return e.group(t.substring(s+1))}return null}get groups(){return this._decodeGroups(),this._groups}get attributes(){return this._decodeDataObject(),this._attributes}get value(){return this._decodeDataObject(),this._value}_decodeDataObject(){if(this._dataObjectHeader||(this._dataObjectHeader=new i.DataObjectHeader(this._reader,this._entry.objectHeaderAddress)),!this._attributes){this._attributes=new Map;for(let n of this._dataObjectHeader.attributes){let a=n.name,h=n.decodeValue(this._globalHeap);this._attributes.set(a,h)}this._value=null;let t=this._dataObjectHeader.datatype,s=this._dataObjectHeader.dataspace,e=this._dataObjectHeader.dataLayout,o=this._dataObjectHeader.filterPipeline;t&&s&&e&&(this._value=new i.Variable(this._reader,this._globalHeap,t,s,e,o))}this._reader.position!==0&&this._reader.seek(0)}_decodeGroups(){if(!this._groups)if(this._groups=new Map,this._entry){if(this._entry.treeAddress||this._entry.heapAddress){let t=new i.Heap(this._reader,this._entry.heapAddress),s=new i.Tree(this._reader,this._entry.treeAddress);for(let e of s.nodes)for(let o of e.entries){let n=t.getString(o.linkNameOffset),a=new i.Group(this._reader,o,null,this._globalHeap,this._path,n);this._groups.set(n,a)}}}else{this._decodeDataObject();for(let t of this._dataObjectHeader.links)if(Object.prototype.hasOwnProperty.call(t,"objectHeaderAddress")){let s=t.name,e=new i.DataObjectHeader(this._reader,t.objectHeaderAddress),o=new i.Group(this._reader,null,e,this._globalHeap,this._path,s);this._groups.set(s,o)}}}};i.Variable=class{constructor(t,s,e,o,n,a){this._reader=t,this._globalHeap=s,this._datatype=e,this._dataspace=o,this._dataLayout=n,this._filterPipeline=a}get type(){return this._datatype.type}get littleEndian(){return this._datatype.littleEndian}get shape(){return this._dataspace.shape}get value(){let t=this.data;if(t){let s=i.Reader.open(t),e=this._dataspace.read(this._datatype,s);return this._dataspace.decode(this._datatype,e,e,this._globalHeap)}return null}get data(){switch(this._dataLayout.layoutClass){case 1:if(this._dataLayout.address&&this._dataLayout.address!==-1){let t=this._reader.position;this._reader.seek(this._dataLayout.address);let s=this._reader.stream(this._dataLayout.size);return this._reader.seek(t),s}break;case 2:{let t=this._dataLayout.dimensionality,s=new i.Tree(this._reader,this._dataLayout.address,t),e=this._dataLayout.datasetElementSize,o=this._dataLayout.dimensionSizes,n=this._dataspace.shape,a=o.reduce((f,l)=>f*l,1),h=n.reduce((f,l)=>f*l,1),r=n.length-1,p=1,b=new Array(n.length);for(let f=n.length-1;f>=0;f--)b[f]=p,p*=n[f];let u=new Uint8Array(h*e);for(let f of s.nodes){let l=f.data;if(this._filterPipeline)for(let _=0;_<this._filterPipeline.filters.length;_++)f.filterMask&1<<_||(l=this._filterPipeline.filters[_].decode(l));let k=f.fields.map(_=>_.toNumber()),d=k.slice(),g=new Array(d.length).fill(0),v=d.length-1;for(let _=0;_<a;_++){for(let c=r;c>=0&&g[c]>=o[c];c--)g[c]=0,d[c]=k[c],c>0&&(g[c-1]++,d[c-1]++);let y=0,m=!0;for(let c=0;c<v;c++){let w=d[c];if(w>=n[c]){m=!1;break}y+=w*b[c]}if(m){let c=_*e,w=y*e,z=w+e;for(;w<z;)u[w++]=l[c++]}g[r]++,d[r]++}}return u}default:throw new i.Error(`Unsupported data layout class '${this.layoutClass}'.`)}return null}};i.Reader=class{static open(t){if(t instanceof i.BinaryReader||t instanceof i.StreamReader)return t;if(t instanceof Uint8Array)return new i.BinaryReader(t);if(t.length<268435456){let s=t.peek();return new i.BinaryReader(s)}return new i.StreamReader(t)}initialize(){this._offsetSize=this.byte(),this._lengthSize=this.byte()}int8(){let t=this.take(1);return this._view.getInt8(t)}byte(){let t=this.take(1);return this._view.getUint8(t)}int16(){let t=this.take(2);return this._view.getInt16(t,!0)}uint16(){let t=this.take(2);return this._view.getUint16(t,!0)}int32(){let t=this.take(4);return this._view.getInt32(t,!0)}uint32(){let t=this.take(4);return this._view.getUint32(t,!0)}int64(){let t=this.take(8);return this._view.getBigInt64(t,!0)}uint64(){let t=this.take(8);return this._view.getBigUint64(t,!0)}uint(t){switch(t){case 0:return this.byte();case 1:return this.uint16();case 2:return this.uint32();case 3:return this.uint64().toNumber();default:throw new i.Error(`Unsupported uint size '${t}'.`)}}float16(){let t=this.take(2),s=this._view.getUint16(t,!0),e=(s&32768)>>15,o=(s&31744)>>10,n=s&1023;return o===0?(e?-1:1)*Math.pow(2,-14)*(n/Math.pow(2,10)):o===31?n?NaN:(e?-1:1)*(1/0):(e?-1:1)*Math.pow(2,o-15)*(1+n/Math.pow(2,10))}float32(){let t=this.take(4);return this._view.getFloat32(t,!0)}float64(){let t=this.take(8);return this._view.getFloat64(t,!0)}offset(){switch(this._offsetSize){case 8:{let t=this.take(8),s=this._view.getBigUint64(t,!0);if(s===0xffffffffffffffffn)return-1;if(s>=Number.MAX_SAFE_INTEGER)throw new Error(`64-bit value '${s.toString(16)}' exceeds safe integer.`);return s.toNumber()}case 4:{let t=this.uint32();return t===4294967295?void 0:t}default:throw new i.Error(`Unsupported offset size '${this._offsetSize}'.`)}}length(){switch(this._lengthSize){case 8:{let t=this.take(8),s=this._view.getBigUint64(t,!0);if(s===0xffffffffffffffffn)return-1;if(s>=Number.MAX_SAFE_INTEGER)throw new Error(`64-bit value '${s.toString(16)}' exceeds safe integer.`);return s.toNumber()}case 4:{let t=this.uint32();return t===4294967295?void 0:t}default:throw new i.Error(`Unsupported length size '${this._lengthSize}'.`)}}string(t,s){(!t||t===-1)&&(t=this.size(0));let e=null;if(t<16){e=new Uint8Array(t);for(let o=0;o<t;o++)e[o]=this.byte()}else e=this.read(t);return s==="utf-8"?(i.Reader._utf8Decoder=i.Reader._utf8Decoder||new TextDecoder("utf-8"),i.Reader._utf8Decoder.decode(e).replace(/\0/g,"")):(i.Reader._asciiDecoder=i.Reader._asciiDecoder||new TextDecoder("ascii"),i.Reader._asciiDecoder.decode(e).replace(/\0/g,""))}match(t){let s=this.position;for(let e=0;e<t.length;e++)if(t.charCodeAt(e)!==this.byte())return this.seek(s),!1;return!0}expect(t){if(!this.match(t))throw new i.Error(`Invalid '${t}' block signature.`)}};i.BinaryReader=class extends i.Reader{constructor(t,s,e,o,n,a){super(),this._buffer=t,this._length=t.length,this._view=s||new DataView(t.buffer,t.byteOffset,t.byteLength),this._offset=e||0,this._position=o||0,this._offsetSize=n,this._lengthSize=a}get position(){return this._position+this._offset}take(t){let s=this._offset+this._position;return this.skip(t),s}seek(t){if(this._offset=t,this._position=0,this._offset>this._length)throw new Error(`Unexpected end of file. Expected ${this._offset-this._length} more bytes. The file might be corrupted.`)}skip(t){if(this._position+=t,this._offset+this._position>this._buffer.length)throw new i.Error(`Unexpected end of file. Expected ${this._offset+this._position-this._buffer.length} more bytes. The file might be corrupted.`)}align(t){this._position%t!==0&&(this._position=(Math.floor(this._position/t)+1)*t)}peek(t){let s=this._offset+this._position;t=t===void 0?this._buffer.length-s:t,this.take(t);let e=this._buffer.subarray(s,s+t);return this._position=s-this._offset,e}read(t){let s=this.take(t);return this._buffer.subarray(s,s+t)}stream(t){let s=this.take(t),e=this._buffer.subarray(s,s+t);return new i.BinaryReader(e)}size(t){let s=this._offset+this._position;for(;this._buffer[s]!==t;)s++;return s-this._offset-this._position+1}};i.StreamReader=class extends i.Reader{constructor(t,s,e,o,n,a,h){super(),this._stream=t,this._length=t.length,this._view=s,this._window=e||0,this._offset=o||0,this._position=n||0,this._offsetSize=a,this._lengthSize=h}get position(){return this._offset+this._position}seek(t){if(this._offset=t,this._position=0,this._offset>this._length)throw new Error(`Unexpected end of file. Expected ${this._offset-this._length} more bytes. The file might be corrupted.`)}skip(t){if(this._position+=t,this._position+this._offset>this._length)throw new i.Error(`Unexpected end of file. Expected ${this._position+this._offset-this._length} more bytes. The file might be corrupted.`)}align(t){this._position%t!==0&&(this._position=(Math.floor(this._position/t)+1)*t)}read(t){let s=this._stream.position;this._stream.seek(this._offset+this._position);let e=this._stream.read(t);return this._stream.seek(s),this.skip(t),e}stream(t){let s=this._stream.position;this._stream.seek(this._offset+this._position),this.skip(t);let e=this._stream.stream(t);return this._stream.seek(s),e}byte(){let t=this.take(1);return this._view.getUint8(t)}uint16(){let t=this.take(2);return this._view.getUint16(t,!0)}int32(){let t=this.take(4);return this._view.getInt32(t,!0)}uint32(){let t=this.take(4);return this._view.getUint32(t,!0)}int64(){let t=this.take(8);return this._view.getBigInt64(t,!0)}float32(){let t=this.take(4);return this._view.getFloat32(t,!0)}float64(){let t=this.take(8);return this._view.getFloat64(t,!0)}size(t){let s=this._position,e=0;for(;this.byte()!==t;)e++;return this._position=s,e}take(t){let s=this.position;if(s+t>this._length)throw new Error(`Expected ${s+t-this._length} more bytes. The file might be corrupted. Unexpected end of file.`);if(!this._view||s<this._window||s+t>this._window+this._view.byteLength){this._window=s;let e=this._stream.position;this._stream.seek(this._window);let o=this._stream.read(Math.min(256,this._length-this._window)).slice();this._view=new DataView(o.buffer,o.byteOffset,o.byteLength),this._stream.seek(e)}return this._position+=t,s-this._window}};i.SymbolTableNode=class{constructor(t,s){let e=t.position;t.seek(s),t.expect("SNOD");let o=t.byte();if(o===1){t.skip(1);let n=t.uint16();this.entries=[];for(let a=0;a<n;a++){let h=new i.SymbolTableEntry(t);this.entries.push(h)}}else throw new i.Error(`Unsupported symbol table node version '${o}'.`);t.seek(e)}};i.SymbolTableEntry=class{constructor(t){this.linkNameOffset=t.offset(),this.objectHeaderAddress=t.offset();let s=t.uint32();switch(t.skip(4),s){case 0:break;case 1:{let e=t.position;this.treeAddress=t.offset(),this.heapAddress=t.offset(),t.seek(e);break}default:throw new i.Error(`Unsupported cache type '${s}'.`)}t.skip(16)}};i.DataObjectHeader=class{constructor(t,s){let e=t.position;t.seek(s),this.attributes=[],this.links=[],this.continuations=[],t.match("OHDR");let o=t.byte();switch(o){case 1:{t.skip(1);let n=t.uint16();t.uint32();let a=t.uint32();t.align(8);let h=t.position+a;for(let r=0;r<n;r++){let p=t.uint16(),b=t.uint16(),u=t.byte();if(t.skip(3),t.align(8),(!this._readMessage(t,p,b,u)||t.position>=h)&&this.continuations.length>0){let l=this.continuations.shift();t.seek(l.offset),h=l.offset+l.length}else t.align(8)}break}case 2:{let n=t.byte();n&32&&(t.uint32(),t.uint32(),t.uint32(),t.uint32()),n&16&&(t.uint16(),t.uint16());let a=(n&4)!==0,h=t.uint(n&3),r=!0,p=t.position+h;for(;r&&t.position<p;){let b=t.byte(),u=t.uint16(),f=t.byte();if(t.position<p&&(a&&t.uint16(),r=this._readMessage(t,b,u,f)),(!r||t.position>=p)&&this.continuations.length>0){let l=this.continuations.shift();t.seek(l.offset),p=l.offset+l.length,t.expect("OCHK"),r=!0}}break}default:throw new i.Error(`Unsupported data object header version '${o}'.`)}t.seek(e)}_readMessage(t,s,e,o){let n=t.position;switch(s){case 0:return!1;case 1:this.dataspace=e!==4||o!==1?new i.Dataspace(t):null;break;case 2:this.linkInfo=new i.LinkInfo(t);break;case 3:this.datatype=new i.Datatype(t);break;case 4:case 5:this.fillValue=new i.FillValue(t,s);break;case 6:this.links.push(new i.Link(t));break;case 8:this.dataLayout=new i.DataLayout(t);break;case 10:this.groupInfo=new i.GroupInfo(t);break;case 11:this.filterPipeline=new i.FilterPipeline(t);break;case 12:this.attributes.push(new i.Attribute(t));break;case 13:this.comment=t.string(-1,"ascii");break;case 16:this.continuations.push(new i.ObjectHeaderContinuation(t));break;case 17:this.symbolTable=new i.SymbolTable(t);break;case 14:case 18:this.objectModificationTime=new i.ObjectModificationTime(t,s);break;case 21:this.attributeInfo=new i.AttributeInfo(t);break;default:throw new i.Error(`Unsupported message type '${s}'.`)}return t.seek(n),t.skip(e),!0}};i.Message=class{constructor(t,s,e){this._type=t,this._data=s,this._flags=e}};i.Dataspace=class{constructor(t){this._sizes=[];let s=t.byte();switch(s){case 1:this._dimensions=t.byte(),this._flags=t.byte(),t.skip(1),t.skip(4);for(let e=0;e<this._dimensions;e++)this._sizes.push(t.length());if(this._flags&1){this._maxSizes=[];for(let e=0;e<this._dimensions;e++)if(this._maxSizes.push(t.length()),this._maxSizes[e]!==this._sizes[e])throw new i.Error("Max size is not supported.")}if(this._flags&2)throw new i.Error("Permutation indices not supported.");break;case 2:this._dimensions=t.byte(),this._flags=t.byte(),this._type=t.byte();for(let e=0;e<this._dimensions;e++)this._sizes.push(t.length());if(this._flags&1){this._maxSizes=[];for(let e=0;e<this._dimensions;e++)this._maxSizes.push(t.length())}break;default:throw new i.Error(`Unsupported dataspace message version '${s}'.`)}}get shape(){return this._sizes}read(t,s){return this._dimensions===0?t.read(s):this._readArray(t,s,this._sizes,0)}_readArray(t,s,e,o){let n=[],a=e[o];if(o===e.length-1)for(let h=0;h<a;h++)n.push(t.read(s));else for(let h=0;h<a;h++)n.push(this._readArray(t,s,e,o+1));return n}decode(t,s,e){return this._dimensions===0?t.decode(s,e):this._decodeArray(t,s,e,this._sizes,0)}_decodeArray(t,s,e,o,n){let a=o[n];if(n===o.length-1)for(let h=0;h<a;h++)s[h]=t.decode(s[h],e);else for(let h=0;h<a;h++)s[h]=this._decodeArray(t,s[h],o,n+1);return s}};i.LinkInfo=class{constructor(t){let s=t.byte();switch(s){case 0:{let e=t.byte();e&1&&(this.maxCreationIndex=t.uint64()),this.fractalHeapAddress=t.offset(),this.nameIndexTreeAddress=t.offset(),e&2&&(this.creationOrderIndexTreeAddress=t.offset());break}default:throw new i.Error(`Unsupported link info message version '${s}'.`)}}};i.Datatype=class{constructor(t){let s=t.byte(),e=s>>4;switch(this._class=s&15,e){case 1:case 2:{switch(this._flags=t.byte()|t.byte()<<8|t.byte()<<16,this._size=t.uint32(),this._class){case 0:{this._bitOffset=t.uint16(),this._bitPrecision=t.uint16();break}case 8:{this._base=new i.Datatype(t),t.seek(t.position);let o=this._flags&65535;this._names=new Array(o);for(let n=0;n<o;n++)this._names[n]=t.string(-1,"ascii"),t.align(8);this._values=new Array(o);for(let n=0;n<o;n++)this._values[n]=this._base.read(t);break}default:break}break}default:throw new i.Error(`Unsupported datatype version '${e}'.`)}}get type(){switch(this._class){case 0:if(!(this._flags&65526))if((this._flags&&8)===0)switch(this._size){case 1:return"uint8";case 2:return"uint16";case 4:return"uint32";case 8:return"uint64";default:throw new i.Error(`Unsupported uint size '${this._size}'.`)}else switch(this._size){case 1:return"int8";case 2:return"int16";case 4:return"int32";case 8:return"int64";default:throw new i.Error(`Unsupported int size '${this._size}'.`)}break;case 1:if(this._size===2&&this._flags===3872)return"float16";if(this._size===4&&this._flags===7968)return"float32";if(this._size===8&&this._flags===16160)return"float64";break;case 3:return"string";case 5:return"uint8";case 6:return"compound";case 8:if(this._base.type==="int8"&&this._names.length===2&&this._names[0]==="FALSE"&&this._names[1]==="TRUE"&&this._values.length===2&&this._values[0]===0&&this._values[1]===1)return"boolean";break;case 9:if((this._flags&15)===1)return"char[]";break;default:break}throw new i.Error(`Unsupported datatype class '${this._class}'.`)}get littleEndian(){switch(this._class){case 0:case 1:return(this.flags&1)===0;default:return!0}}read(t){switch(this._class){case 0:if(this._size===1)return this._flags&8?t.int8():t.byte();if(this._size===2)return this._flags&8?t.int16():t.uint16();if(this._size===4)return this._flags&8?t.int32():t.uint32();if(this._size===8)return this._flags&8?t.int64():t.uint64();throw new i.Error("Unsupported fixed-point datatype.");case 1:if(this._size===2&&this._flags===3872)return t.float16();if(this._size===4&&this._flags===7968)return t.float32();if(this._size===8&&this._flags===16160)return t.float64();throw new i.Error("Unsupported floating-point datatype.");case 3:switch(this._flags>>8&15){case 0:return t.string(this._size,"ascii");case 1:return t.string(this._size,"utf-8");default:throw new i.Error("Unsupported character encoding.")}case 5:return t.read(this._size);case 8:return t.read(this._size);case 9:return{length:t.uint32(),globalHeapID:new i.GlobalHeapID(t)};default:throw new i.Error(`Unsupported datatype class '${this._class}'.`)}}decode(t,s){switch(this._class){case 0:return t;case 1:return t;case 3:return t;case 5:return t;case 8:return t;case 9:{let e=s.get(t.globalHeapID);if(e!==null){let o=this._flags>>8&15,n=e.reader();switch(o){case 0:return n.string(n.length(),"ascii");case 1:return n.string(n.length(),"utf-8");default:throw new i.Error("Unsupported character encoding.")}}break}default:throw new i.Error(`Unsupported datatype class '${this._class}'.`)}return null}};i.FillValue=class{constructor(t,s){switch(s){case 4:{let e=t.uint32();this.data=t.read(e);break}case 5:default:{let e=t.byte();switch(e){case 1:case 2:{t.byte(),t.byte();let o=t.byte();if(e===1||o===1){let n=t.uint32();this.data=t.read(n)}break}case 3:{if(t.byte()&32){let n=t.uint32();this.data=t.read(n)}break}default:throw new i.Error(`Unsupported fill value version '${e}'.`)}break}}}};i.Link=class{constructor(t){let s=t.byte();switch(s){case 1:{let e=t.byte();this.type=e&8?t.byte():0,e&4&&(this.creationOrder=t.uint32());let o=e&16&&t.byte()===1?"utf-8":"ascii",n=t.uint(e&3);switch(this.name=t.string(n,o),this.type){case 0:this.objectHeaderAddress=t.offset();break;case 1:break;default:throw new i.Error(`Unsupported link message type '${this.type}'.`)}break}default:throw new i.Error(`Unsupported link message version '${s}'.`)}}};i.DataLayout=class{constructor(t){let s=t.byte();switch(s){case 1:case 2:{switch(this.dimensionality=t.byte(),this.layoutClass=t.byte(),t.skip(5),this.layoutClass){case 1:this.address=t.offset(),this.dimensionSizes=[];for(let e=0;e<this.dimensionality-1;e++)this.dimensionSizes.push(t.int32());break;case 2:this.address=t.offset(),this.dimensionSizes=[];for(let e=0;e<this.dimensionality-1;e++)this.dimensionSizes.push(t.int32());this.datasetElementSize=t.int32();break;default:throw new i.Error(`Unsupported data layout class '${this.layoutClass}'.`)}break}case 3:{switch(this.layoutClass=t.byte(),this.layoutClass){case 0:this.size=t.uint16(),t.skip(2),this.address=t.position;break;case 1:this.address=t.offset(),this.size=t.length();break;case 2:this.dimensionality=t.byte(),this.address=t.offset(),this.dimensionSizes=[];for(let e=0;e<this.dimensionality-1;e++)this.dimensionSizes.push(t.int32());this.datasetElementSize=t.int32();break;default:throw new i.Error(`Unsupported data layout class '${this.layoutClass}'.`)}break}default:throw new i.Error(`Unsupported data layout version '${s}'.`)}}};i.GroupInfo=class{constructor(t){let s=t.byte();switch(s){case 0:{let e=t.byte();e&1&&(this.maxCompactLinks=t.uint16(),this.minDenseLinks=t.uint16()),e&2&&(this.estimatedEntriesNumber=t.uint16(),this.estimatedLinkNameLengthEntries=t.uint16());break}default:throw new i.Error(`Unsupported group info version '${s}'.`)}}};i.FilterPipeline=class{constructor(t){let s=t.byte();switch(s){case 1:{this.filters=[];let e=t.byte();t.skip(2),t.skip(4);for(let o=0;o<e;o++)this.filters.push(new i.Filter(t)),t.align(8);break}default:throw new i.Error(`Unsupported filter pipeline message version '${s}'.`)}}};i.Filter=class{constructor(t){this.id=t.int16();let s=t.int16();this.flags=t.int16();let e=t.int16();this.name=t.string(s,"ascii"),this.clientData=t.read(e*4)}decode(t){switch(this.id){case 1:return this._deflate(t);case 32e3:return this._lzf(t);default:throw new i.Error(`Unsupported filter '${this.id}:${this.name}'.`)}}_deflate(t){return x.open(t).entries.get("").peek()}_lzf(t){let s=0,e=0;for(;s<t.length;){let n=t[s++];if(n<32){if(n++,s+=n,e+=n,s>t.length)throw new Error("Invalid LZF compressed data.")}else{let a=n>>5;if(s>=t.length)throw new Error("Invalid LZF compressed data.");if(a===7&&(a+=t[s++],s>=t.length))throw new Error("Invalid LZF compressed data.");if(e-((n&31)<<8)-1-t[s++]<0)throw new Error("Invalid LZF compressed data.");e+=a+2}}let o=new Uint8Array(e);for(s=0,e=0;s<t.length;){let n=t[s++];if(n<32)n++,o.set(t.subarray(s,s+n),e),s+=n,e+=n;else{let a=n>>5;a===7&&(a+=t[s++]),a+=2;let h=e-((n&31)<<8)-1-t[s++];do o[e++]=o[h++];while(--a)}}return o}};i.Attribute=class{constructor(t){let s=t.byte();switch(s){case 1:{t.skip(1);let e=t.uint16(),o=t.uint16(),n=t.uint16();this.name=t.string(e,"utf-8"),t.align(8);let a=t.position;this._datatype=new i.Datatype(t),t.seek(a),t.skip(o),t.align(8);let h=t.position;this._dataspace=new i.Dataspace(t),t.seek(h),t.skip(n),t.align(8),this._data=this._dataspace.read(this._datatype,t);break}case 3:{t.byte();let e=t.uint16(),o=t.uint16(),n=t.uint16(),a=t.byte()===1?"utf-8":"ascii";this.name=t.string(e,a);let h=t.position;this._datatype=new i.Datatype(t),t.seek(h),t.skip(o);let r=t.position;this._dataspace=new i.Dataspace(t),t.seek(r),t.skip(n),this._data=this._dataspace.read(this._datatype,t);break}default:throw new i.Error(`Unsupported attribute message version '${s}'.`)}}decodeValue(t){return this._data?this._dataspace.decode(this._datatype,this._data,t):null}};i.ObjectHeaderContinuation=class{constructor(t){this.offset=t.offset(),this.length=t.length()}};i.SymbolTable=class{constructor(t){this.treeAddress=t.offset(),this.heapAddress=t.offset()}};i.ObjectModificationTime=class{constructor(t,s){switch(s){case 14:{this.year=t.uint32(),this.month=t.uint16(),this.day=t.uint16(),this.hour=t.uint16(),this.minute=t.uint16(),this.second=t.uint16(),t.skip(2);break}case 18:{let e=t.byte();switch(t.skip(3),e){case 1:this.timestamp=t.uint32();break;default:throw new i.Error(`Unsupported object modification time message version '${e}'.`)}break}default:throw new i.Error(`Unsupported object modification time message type '${s}'.`)}}};i.AttributeInfo=class{constructor(t){let s=t.byte();switch(s){case 0:{let e=t.byte();e&1&&(this.maxCreationIndex=t.uint64()),this.fractalHeapAddress=t.offset(),this.attributeNameTreeAddress=t.offset(),e&2&&(this.attributeCreationOrderTreeAddress=t.offset());break}default:throw new i.Error(`Unsupported attribute info message version '${s}'.`)}}};i.Tree=class{constructor(t,s,e){let o=t.position;t.seek(s),t.expect("TREE"),this.type=t.byte(),this.level=t.byte();let n=t.uint16();switch(t.offset(),t.offset(),this.nodes=[],this.type){case 0:{for(let a=0;a<n;a++){t.length();let h=t.offset();if(this.level===0){let r=new i.SymbolTableNode(t,h);this.nodes.push(r)}else{let r=new i.Tree(t,h);this.nodes.push(...r.nodes)}}break}case 1:{for(let a=0;a<n;a++){let h=t.int32(),r=t.int32(),p=[];for(let u=0;u<e;u++)p.push(t.uint64());let b=t.offset();if(this.level===0){let u=t.position;t.seek(b);let f=t.read(h);this.nodes.push({data:f,fields:p,filterMask:r}),t.seek(u)}else{let u=new i.Tree(t,b,e);this.nodes.push(...u.nodes)}}break}default:throw new i.Error(`Unsupported B-Tree node type '${this.type}'.`)}t.seek(o)}};i.Heap=class{constructor(t,s){let e=t.position;t.seek(s),this._reader=t,t.expect("HEAP");let o=t.byte();switch(o){case 0:{t.skip(3),this._dataSize=t.length(),this._offsetToHeadOfFreeList=t.length(),this._dataAddress=t.offset();break}default:throw new i.Error(`Unsupported Local Heap version '${o}'.`)}t.seek(e)}getString(t){let s=this._reader.position;this._reader.seek(this._dataAddress+t);let e=this._reader.string(-1,"utf-8");return this._reader.seek(s),e}};i.GlobalHeap=class{constructor(t){this._reader=t,this._collections=new Map}get(t){let s=t.address;return this._collections.has(s)||this._collections.set(s,new i.GlobalHeapCollection(this._reader,s)),this._collections.get(t.address).getObject(t.objectIndex)}};i.GlobalHeapCollection=class{constructor(t,s){let e=t.position;t.seek(s);let o=t.position;t.expect("GCOL");let n=t.byte();switch(n){case 1:{t.skip(3),this._objects=new Map;let a=t.length(),h=o+a;for(;t.position<h;){let r=t.uint16();if(r===0)break;this._objects.set(r,new i.GlobalHeapObject(t)),t.align(8)}break}default:throw new i.Error(`Unsupported global heap collection version '${n}'.`)}t.seek(e)}getObject(t){return this._objects.has(t)?this._objects.get(t):null}};i.GlobalHeapObject=class{constructor(t){t.uint16(),t.skip(4),this._position=t.position,this._reader=t;let s=t.length();t.skip(s)}reader(){return this._reader.seek(this._position),this._reader}};i.GlobalHeapID=class{constructor(t){this.address=t.offset(),this.objectIndex=t.uint32()}};i.Error=class extends Error{constructor(t){super(t),this.name="HDF5 Error"}};var U=i.File;export{U as File};
|
|
@@ -44,11 +44,27 @@ circle.CustomQuantization = class CustomQuantization {
|
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
circle.MXQuantization = class MXQuantization {
|
|
48
|
+
|
|
49
|
+
static decode(reader, position) {
|
|
50
|
+
const $ = new circle.MXQuantization();
|
|
51
|
+
$.axis = reader.int32_(position, 4, 0);
|
|
52
|
+
return $;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static decodeText(reader, json) {
|
|
56
|
+
const $ = new circle.MXQuantization();
|
|
57
|
+
$.axis = reader.value(json.axis, 0);
|
|
58
|
+
return $;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
47
62
|
circle.QuantizationDetails = class {
|
|
48
63
|
|
|
49
64
|
static decode(reader, position, type) {
|
|
50
65
|
switch (type) {
|
|
51
66
|
case 1: return circle.CustomQuantization.decode(reader, position);
|
|
67
|
+
case 2: return circle.MXQuantization.decode(reader, position);
|
|
52
68
|
default: return undefined;
|
|
53
69
|
}
|
|
54
70
|
}
|
|
@@ -56,6 +72,7 @@ circle.QuantizationDetails = class {
|
|
|
56
72
|
static decodeText(reader, json, type) {
|
|
57
73
|
switch (type) {
|
|
58
74
|
case 'CustomQuantization': return circle.CustomQuantization.decodeText(reader, json);
|
|
75
|
+
case 'MXQuantization': return circle.MXQuantization.decodeText(reader, json);
|
|
59
76
|
default: return undefined;
|
|
60
77
|
}
|
|
61
78
|
}
|
|
@@ -69,10 +69,10 @@ circle.ModelFactory = class {
|
|
|
69
69
|
circle.Model = class {
|
|
70
70
|
|
|
71
71
|
constructor(metadata, model, stream) {
|
|
72
|
-
this.graphs = [];
|
|
73
72
|
this.format = 'Circle';
|
|
74
73
|
this.format = `${this.format} v${model.version}`;
|
|
75
74
|
this.description = model.description || '';
|
|
75
|
+
this.modules = [];
|
|
76
76
|
this.metadata = [];
|
|
77
77
|
const builtinOperators = new Map();
|
|
78
78
|
const upperCase = new Set(['2D', 'LSH', 'SVDF', 'RNN', 'L2', 'LSTM']);
|
|
@@ -157,7 +157,7 @@ circle.Model = class {
|
|
|
157
157
|
const subgraphMetadata = subgraphsMetadata && i < subgraphsMetadata.length ? subgraphsMetadata[i] : null;
|
|
158
158
|
const signatures = model.signature_defs.filter((signature) => signature.subgraph_index === i);
|
|
159
159
|
const graph = new circle.Graph(metadata, subgraph, signatures, subgraphMetadata, name, operators, model, stream);
|
|
160
|
-
this.
|
|
160
|
+
this.modules.push(graph);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
};
|
|
@@ -354,7 +354,7 @@ circle.Node = class {
|
|
|
354
354
|
for (const [name, value] of Object.entries(options)) {
|
|
355
355
|
if (name === 'fused_activation_function' && value) {
|
|
356
356
|
if (value < 1 || value > 5) {
|
|
357
|
-
throw new circle.Error(`Unsupported activation
|
|
357
|
+
throw new circle.Error(`Unsupported activation function index '${value}'.`);
|
|
358
358
|
}
|
|
359
359
|
const list = ['Unknown', 'Relu', 'ReluN1To1', 'Relu6', 'Tanh', 'SignBit'];
|
|
360
360
|
const type = list[value];
|
|
@@ -8,7 +8,7 @@ coreml.ModelFactory = class {
|
|
|
8
8
|
async match(context) {
|
|
9
9
|
const stream = context.stream;
|
|
10
10
|
const identifier = context.identifier.toLowerCase();
|
|
11
|
-
const extension = identifier.split('.').pop().toLowerCase();
|
|
11
|
+
const extension = identifier.lastIndexOf('.') > 0 ? identifier.split('.').pop().toLowerCase() : '';
|
|
12
12
|
const tags = await context.tags('pb');
|
|
13
13
|
if (tags.get(1) === 0 && tags.get(2) === 2) {
|
|
14
14
|
const match = (key) =>
|
|
@@ -212,7 +212,8 @@ coreml.Model = class {
|
|
|
212
212
|
constructor(context) {
|
|
213
213
|
this.format = context.format;
|
|
214
214
|
this.metadata = Array.from(context.metadata);
|
|
215
|
-
this.
|
|
215
|
+
this.modules = context.graphs.map((context) => new coreml.Graph(context));
|
|
216
|
+
this.functions = context.functions.map((context) => new coreml.Graph(context));
|
|
216
217
|
if (context.version) {
|
|
217
218
|
this.version = context.version;
|
|
218
219
|
}
|
|
@@ -226,7 +227,8 @@ coreml.Graph = class {
|
|
|
226
227
|
|
|
227
228
|
constructor(context) {
|
|
228
229
|
this.name = context.name || '';
|
|
229
|
-
this.type = context.type;
|
|
230
|
+
this.type = context.type || '';
|
|
231
|
+
this.description = context.description;
|
|
230
232
|
this.groups = context.groups;
|
|
231
233
|
for (const value of context.values.values()) {
|
|
232
234
|
const name = value.name;
|
|
@@ -491,7 +493,7 @@ coreml.ImageType = class {
|
|
|
491
493
|
}
|
|
492
494
|
|
|
493
495
|
toString() {
|
|
494
|
-
return `image<${this.colorSpace},${this.width.
|
|
496
|
+
return `image<${this.colorSpace},${this.width.toString()}x${this.height}>`;
|
|
495
497
|
}
|
|
496
498
|
};
|
|
497
499
|
|
|
@@ -531,20 +533,21 @@ coreml.Context = class {
|
|
|
531
533
|
this.format = format;
|
|
532
534
|
this.metadata = [];
|
|
533
535
|
this.graphs = [];
|
|
536
|
+
this.functions = [];
|
|
534
537
|
const description = model.description;
|
|
535
538
|
for (const func of description.functions) {
|
|
536
|
-
const graph = new coreml.Context.Graph(metadata, func.name, model, func, weights, values);
|
|
537
|
-
this.
|
|
539
|
+
const graph = new coreml.Context.Graph(metadata, func.name, 'function', model, func, weights, values);
|
|
540
|
+
this.functions.push(graph);
|
|
538
541
|
}
|
|
539
542
|
if (description && description.defaultFunctionName) {
|
|
540
543
|
const graph = this.graphs.find((graph) => graph.name === description.defaultFunctionName);
|
|
541
544
|
if (graph) {
|
|
542
|
-
this.
|
|
543
|
-
this.
|
|
545
|
+
this.functions.splice(this.graphs.indexOf(graph), 1);
|
|
546
|
+
this.functions.unshift(graph);
|
|
544
547
|
}
|
|
545
548
|
}
|
|
546
549
|
if (model && !model.mlProgram || (model.mlProgram.functions && model.mlProgram.functions.main)) {
|
|
547
|
-
const graph = new coreml.Context.Graph(metadata, '', model, description, weights, values);
|
|
550
|
+
const graph = new coreml.Context.Graph(metadata, '', 'graph', model, description, weights, values);
|
|
548
551
|
this.graphs.push(graph);
|
|
549
552
|
}
|
|
550
553
|
if (description && description.metadata) {
|
|
@@ -570,9 +573,10 @@ coreml.Context = class {
|
|
|
570
573
|
|
|
571
574
|
coreml.Context.Graph = class {
|
|
572
575
|
|
|
573
|
-
constructor(metadata, name, model, description, weights, values) {
|
|
576
|
+
constructor(metadata, name, type, model, description, weights, values) {
|
|
574
577
|
this.metadata = metadata;
|
|
575
578
|
this.name = name;
|
|
579
|
+
this.type = type;
|
|
576
580
|
this.weights = weights || new Map();
|
|
577
581
|
this.values = values || new Map();
|
|
578
582
|
this.nodes = [];
|
|
@@ -591,7 +595,7 @@ coreml.Context.Graph = class {
|
|
|
591
595
|
this.update(value, description);
|
|
592
596
|
this.inputs.push({ name: description.name, visible: true, value: [value] });
|
|
593
597
|
}
|
|
594
|
-
this.
|
|
598
|
+
this.description = this.model(model, '', description);
|
|
595
599
|
const outputs = description && Array.isArray(description.output) ? description.output : [];
|
|
596
600
|
for (const description of outputs) {
|
|
597
601
|
const value = this.input(description.name);
|
|
@@ -602,7 +606,7 @@ coreml.Context.Graph = class {
|
|
|
602
606
|
}
|
|
603
607
|
|
|
604
608
|
context() {
|
|
605
|
-
return new coreml.Context.Graph(this.metadata, '', null, null, this.weights, this.values);
|
|
609
|
+
return new coreml.Context.Graph(this.metadata, '', 'graph', null, null, this.weights, this.values);
|
|
606
610
|
}
|
|
607
611
|
|
|
608
612
|
network(obj) {
|
|
@@ -612,7 +616,7 @@ coreml.Context.Graph = class {
|
|
|
612
616
|
context.node(context.groups, type, layer.name, '', layer[type], layer.input, layer.output, layer.inputTensor, layer.outputTensor);
|
|
613
617
|
}
|
|
614
618
|
context.updatePreprocessing('', obj.preprocessing, null);
|
|
615
|
-
context.
|
|
619
|
+
context.description = 'Neural Network';
|
|
616
620
|
return context;
|
|
617
621
|
}
|
|
618
622
|
|
|
@@ -1214,9 +1218,7 @@ coreml.Context.Graph = class {
|
|
|
1214
1218
|
currentOutput = `${preprocessingInput}:${preprocessorIndex}`;
|
|
1215
1219
|
const preprocessor = preprocessing.preprocessor;
|
|
1216
1220
|
const node = this.node(group, preprocessor, null, '', preprocessing[preprocessor], [input], [currentOutput]);
|
|
1217
|
-
|
|
1218
|
-
preprocessorOutput = node.outputs[0].value[0];
|
|
1219
|
-
/* eslint-enable prefer-destructuring */
|
|
1221
|
+
[preprocessorOutput] = node.outputs[0].value;
|
|
1220
1222
|
preprocessorIndex++;
|
|
1221
1223
|
}
|
|
1222
1224
|
for (const node of inputNodes) {
|
|
@@ -1296,8 +1298,8 @@ coreml.Context.Graph = class {
|
|
|
1296
1298
|
break;
|
|
1297
1299
|
}
|
|
1298
1300
|
case 'float16':
|
|
1299
|
-
case 'int1': case 'int2': case 'int3': case 'int4': case 'int6': case 'int8':
|
|
1300
|
-
case 'uint1': case 'uint2': case 'uint3': case 'uint4': case 'uint6': case 'uint8': {
|
|
1301
|
+
case 'int1': case 'int2': case 'int3': case 'int4': case 'int6': case 'int8': case 'int32':
|
|
1302
|
+
case 'uint1': case 'uint2': case 'uint3': case 'uint4': case 'uint6': case 'uint8': case 'uint16': {
|
|
1301
1303
|
data = stream.read(size);
|
|
1302
1304
|
break;
|
|
1303
1305
|
}
|
|
@@ -1346,9 +1348,7 @@ coreml.Context.Graph = class {
|
|
|
1346
1348
|
for (const op of operations) {
|
|
1347
1349
|
if (op.type === 'const' && op.inputs.length === 0 &&
|
|
1348
1350
|
op.outputs.length === 1 && op.outputs[0].value.length === 1) {
|
|
1349
|
-
|
|
1350
|
-
const value = op.outputs[0].value[0];
|
|
1351
|
-
/* eslint-enable prefer-destructuring */
|
|
1351
|
+
const [value] = op.outputs[0].value;
|
|
1352
1352
|
if (op.attributes && op.attributes.val) {
|
|
1353
1353
|
const type = value.type;
|
|
1354
1354
|
const data = op.attributes.val;
|
|
@@ -1483,6 +1483,9 @@ coreml.Utility = class {
|
|
|
1483
1483
|
case ArrayDataType.INT32:
|
|
1484
1484
|
dataType = 'int32';
|
|
1485
1485
|
break;
|
|
1486
|
+
case ArrayDataType.INT8:
|
|
1487
|
+
dataType = 'int8';
|
|
1488
|
+
break;
|
|
1486
1489
|
default:
|
|
1487
1490
|
throw new coreml.Error(`Unsupported array data type '${arrayType.dataType}'.`);
|
|
1488
1491
|
}
|
|
@@ -920,7 +920,7 @@ dagre.layout = (nodes, edges, layout, state) => {
|
|
|
920
920
|
}
|
|
921
921
|
const sourceSet = Array.from(mappedEntries.values()).filter((entry) => !entry.indegree);
|
|
922
922
|
const results = [];
|
|
923
|
-
|
|
923
|
+
const handleIn = function(vEntry) {
|
|
924
924
|
return function(uEntry) {
|
|
925
925
|
if (uEntry.merged) {
|
|
926
926
|
return;
|
|
@@ -943,15 +943,15 @@ dagre.layout = (nodes, edges, layout, state) => {
|
|
|
943
943
|
uEntry.merged = true;
|
|
944
944
|
}
|
|
945
945
|
};
|
|
946
|
-
}
|
|
947
|
-
|
|
946
|
+
};
|
|
947
|
+
const handleOut = (vEntry) => {
|
|
948
948
|
return function(wEntry) {
|
|
949
949
|
wEntry.in.push(vEntry);
|
|
950
950
|
if (--wEntry.indegree === 0) {
|
|
951
951
|
sourceSet.push(wEntry);
|
|
952
952
|
}
|
|
953
953
|
};
|
|
954
|
-
}
|
|
954
|
+
};
|
|
955
955
|
while (sourceSet.length) {
|
|
956
956
|
const entry = sourceSet.pop();
|
|
957
957
|
results.push(entry);
|
|
@@ -2441,4 +2441,4 @@ dagre.Graph = class {
|
|
|
2441
2441
|
}
|
|
2442
2442
|
};
|
|
2443
2443
|
|
|
2444
|
-
export const { layout, Graph } = dagre;
|
|
2444
|
+
export const { layout, Graph } = dagre;
|
|
@@ -5,7 +5,7 @@ darknet.ModelFactory = class {
|
|
|
5
5
|
|
|
6
6
|
async match(context) {
|
|
7
7
|
const identifier = context.identifier;
|
|
8
|
-
const extension = identifier.split('.').pop().toLowerCase();
|
|
8
|
+
const extension = identifier.lastIndexOf('.') > 0 ? identifier.split('.').pop().toLowerCase() : '';
|
|
9
9
|
if (extension === 'weights' && !identifier.toLowerCase().endsWith('.espresso.weights')) {
|
|
10
10
|
const weights = await darknet.Weights.open(context);
|
|
11
11
|
if (weights) {
|
|
@@ -51,7 +51,7 @@ darknet.ModelFactory = class {
|
|
|
51
51
|
try {
|
|
52
52
|
const name = `${basename}.weights`;
|
|
53
53
|
const content = await context.fetch(name);
|
|
54
|
-
const weights = darknet.Weights.open(content);
|
|
54
|
+
const weights = await darknet.Weights.open(content);
|
|
55
55
|
const reader = await context.read('text');
|
|
56
56
|
const configuration = new darknet.Configuration(reader, context.identifier);
|
|
57
57
|
return new darknet.Model(metadata, configuration, weights);
|
|
@@ -72,7 +72,7 @@ darknet.Model = class {
|
|
|
72
72
|
|
|
73
73
|
constructor(metadata, configuration, weights) {
|
|
74
74
|
this.format = 'Darknet';
|
|
75
|
-
this.
|
|
75
|
+
this.modules = [new darknet.Graph(metadata, configuration, weights)];
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
|
qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/electron.mjs → desktop.mjs}
RENAMED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
|
|
2
|
+
import * as base from './base.js';
|
|
2
3
|
import * as electron from 'electron';
|
|
3
4
|
import * as fs from 'fs';
|
|
4
5
|
import * as http from 'http';
|
|
5
6
|
import * as https from 'https';
|
|
7
|
+
import * as node from './node.js';
|
|
6
8
|
import * as os from 'os';
|
|
7
9
|
import * as path from 'path';
|
|
8
10
|
import * as url from 'url';
|
|
9
|
-
import * as base from './base.js';
|
|
10
11
|
import * as view from './view.js';
|
|
11
12
|
|
|
12
|
-
const
|
|
13
|
+
const desktop = {};
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
desktop.Host = class {
|
|
15
16
|
|
|
16
17
|
constructor() {
|
|
17
18
|
this._document = window.document;
|
|
@@ -38,8 +39,11 @@ host.ElectronHost = class {
|
|
|
38
39
|
});
|
|
39
40
|
this._environment = electron.ipcRenderer.sendSync('get-environment', {});
|
|
40
41
|
this._environment.menu = this._environment.titlebar && this._environment.platform !== 'darwin';
|
|
41
|
-
this._element('menu-button').style.opacity = 0;
|
|
42
42
|
this._files = [];
|
|
43
|
+
electron.ipcRenderer.on('open', (sender, data) => {
|
|
44
|
+
this._open(data);
|
|
45
|
+
});
|
|
46
|
+
this._element('menu-button').style.opacity = 0;
|
|
43
47
|
if (!/^\d\.\d\.\d$/.test(this.version)) {
|
|
44
48
|
throw new Error('Invalid version.');
|
|
45
49
|
}
|
|
@@ -77,9 +81,6 @@ host.ElectronHost = class {
|
|
|
77
81
|
|
|
78
82
|
async view(view) {
|
|
79
83
|
this._view = view;
|
|
80
|
-
electron.ipcRenderer.on('open', (_, data) => {
|
|
81
|
-
this._open(data);
|
|
82
|
-
});
|
|
83
84
|
const age = async () => {
|
|
84
85
|
const days = (new Date() - new Date(this._environment.date)) / (24 * 60 * 60 * 1000);
|
|
85
86
|
if (days > 180) {
|
|
@@ -137,8 +138,7 @@ host.ElectronHost = class {
|
|
|
137
138
|
}
|
|
138
139
|
};
|
|
139
140
|
await age();
|
|
140
|
-
|
|
141
|
-
// await consent();
|
|
141
|
+
await consent();
|
|
142
142
|
await telemetry();
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -160,10 +160,10 @@ host.ElectronHost = class {
|
|
|
160
160
|
if (this._document.hasFocus()) {
|
|
161
161
|
this._document.body.classList.add('active');
|
|
162
162
|
}
|
|
163
|
-
electron.ipcRenderer.on('recents', (
|
|
163
|
+
electron.ipcRenderer.on('recents', (sender, data) => {
|
|
164
164
|
this._view.recents(data);
|
|
165
165
|
});
|
|
166
|
-
electron.ipcRenderer.on('export', (
|
|
166
|
+
electron.ipcRenderer.on('export', (sender, data) => {
|
|
167
167
|
this._view.export(data.file);
|
|
168
168
|
});
|
|
169
169
|
electron.ipcRenderer.on('cut', () => {
|
|
@@ -197,7 +197,7 @@ host.ElectronHost = class {
|
|
|
197
197
|
this._view.resetZoom();
|
|
198
198
|
});
|
|
199
199
|
electron.ipcRenderer.on('show-properties', () => {
|
|
200
|
-
this._element('sidebar-button').click();
|
|
200
|
+
this._element('sidebar-target-button').click();
|
|
201
201
|
});
|
|
202
202
|
electron.ipcRenderer.on('find', () => {
|
|
203
203
|
this._view.find();
|
|
@@ -214,10 +214,10 @@ host.ElectronHost = class {
|
|
|
214
214
|
this._element('titlebar-minimize').addEventListener('click', () => {
|
|
215
215
|
electron.ipcRenderer.sendSync('window-minimize', {});
|
|
216
216
|
});
|
|
217
|
-
electron.ipcRenderer.on('window-state', (
|
|
217
|
+
electron.ipcRenderer.on('window-state', (sender, data) => {
|
|
218
218
|
if (this._environment.titlebar) {
|
|
219
|
-
this._element('
|
|
220
|
-
this._element('
|
|
219
|
+
this._element('target').style.marginTop = '32px';
|
|
220
|
+
this._element('target').style.height = 'calc(100% - 32px)';
|
|
221
221
|
this._element('sidebar-title').style.marginTop = '24px';
|
|
222
222
|
this._element('sidebar-closebutton').style.marginTop = '24px';
|
|
223
223
|
this._element('titlebar').classList.add('titlebar-visible');
|
|
@@ -351,7 +351,8 @@ host.ElectronHost = class {
|
|
|
351
351
|
} else if (encoding) {
|
|
352
352
|
reject(new Error(`The file '${file}' size (${stat.size.toString()}) for encoding '${encoding}' is greater than 2 GB.`));
|
|
353
353
|
} else {
|
|
354
|
-
|
|
354
|
+
const stream = new node.FileStream(pathname, 0, stat.size, stat.mtimeMs);
|
|
355
|
+
resolve(stream);
|
|
355
356
|
}
|
|
356
357
|
});
|
|
357
358
|
});
|
|
@@ -421,7 +422,7 @@ host.ElectronHost = class {
|
|
|
421
422
|
if (stat.isFile()) {
|
|
422
423
|
const dirname = path.dirname(location);
|
|
423
424
|
const stream = await this.request(basename, null, dirname);
|
|
424
|
-
return new
|
|
425
|
+
return new desktop.Context(this, dirname, basename, stream);
|
|
425
426
|
} else if (stat.isDirectory()) {
|
|
426
427
|
const entries = new Map();
|
|
427
428
|
const walk = (dir) => {
|
|
@@ -431,14 +432,14 @@ host.ElectronHost = class {
|
|
|
431
432
|
if (stat.isDirectory()) {
|
|
432
433
|
walk(pathname);
|
|
433
434
|
} else if (stat.isFile()) {
|
|
434
|
-
const stream = new
|
|
435
|
+
const stream = new node.FileStream(pathname, 0, stat.size, stat.mtimeMs);
|
|
435
436
|
const name = pathname.split(path.sep).join(path.posix.sep);
|
|
436
437
|
entries.set(name, stream);
|
|
437
438
|
}
|
|
438
439
|
}
|
|
439
440
|
};
|
|
440
441
|
walk(location);
|
|
441
|
-
return new
|
|
442
|
+
return new desktop.Context(this, location, basename, null, entries);
|
|
442
443
|
}
|
|
443
444
|
throw new Error(`Unsupported path stat '${JSON.stringify(stat)}'.`);
|
|
444
445
|
}
|
|
@@ -463,17 +464,23 @@ host.ElectronHost = class {
|
|
|
463
464
|
return;
|
|
464
465
|
}
|
|
465
466
|
try {
|
|
466
|
-
const
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if (model) {
|
|
470
|
-
options.path = path;
|
|
471
|
-
this._title(location.label);
|
|
467
|
+
const attachment = await this._view.attach(context);
|
|
468
|
+
if (attachment) {
|
|
469
|
+
this._view.show(null);
|
|
472
470
|
} else {
|
|
473
|
-
|
|
474
|
-
this.
|
|
471
|
+
const model = await this._view.open(context);
|
|
472
|
+
this._view.show(null);
|
|
473
|
+
const options = { ...this._view.options };
|
|
474
|
+
if (model) {
|
|
475
|
+
options.path = path;
|
|
476
|
+
this._title(location.label);
|
|
477
|
+
} else {
|
|
478
|
+
options.path = path;
|
|
479
|
+
this._title('');
|
|
480
|
+
}
|
|
481
|
+
electron.ipcRenderer.send('update-recents', { path });
|
|
482
|
+
this.update(options);
|
|
475
483
|
}
|
|
476
|
-
this.update(options);
|
|
477
484
|
} catch (error) {
|
|
478
485
|
const options = { ...this._view.options };
|
|
479
486
|
if (error) {
|
|
@@ -499,7 +506,7 @@ host.ElectronHost = class {
|
|
|
499
506
|
response.on('data', (chunk) => {
|
|
500
507
|
data += chunk;
|
|
501
508
|
});
|
|
502
|
-
response.on('
|
|
509
|
+
response.on('error', (err) => {
|
|
503
510
|
reject(err);
|
|
504
511
|
});
|
|
505
512
|
response.on('end', () => {
|
|
@@ -602,103 +609,7 @@ host.ElectronHost = class {
|
|
|
602
609
|
}
|
|
603
610
|
};
|
|
604
611
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
constructor(file, start, length, mtime) {
|
|
608
|
-
this._file = file;
|
|
609
|
-
this._start = start;
|
|
610
|
-
this._length = length;
|
|
611
|
-
this._position = 0;
|
|
612
|
-
this._mtime = mtime;
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
get position() {
|
|
616
|
-
return this._position;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
get length() {
|
|
620
|
-
return this._length;
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
stream(length) {
|
|
624
|
-
const file = new host.ElectronHost.FileStream(this._file, this._position, length, this._mtime);
|
|
625
|
-
this.skip(length);
|
|
626
|
-
return file;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
seek(position) {
|
|
630
|
-
this._position = position >= 0 ? position : this._length + position;
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
skip(offset) {
|
|
634
|
-
this._position += offset;
|
|
635
|
-
if (this._position > this._length) {
|
|
636
|
-
const offset = this._position - this._length;
|
|
637
|
-
throw new Error(`Expected ${offset} more bytes. The file might be corrupted. Unexpected end of file.`);
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
peek(length) {
|
|
642
|
-
length = length === undefined ? this._length - this._position : length;
|
|
643
|
-
if (length < 0x1000000) {
|
|
644
|
-
const position = this._fill(length);
|
|
645
|
-
this._position -= length;
|
|
646
|
-
return this._buffer.subarray(position, position + length);
|
|
647
|
-
}
|
|
648
|
-
const position = this._position;
|
|
649
|
-
this.skip(length);
|
|
650
|
-
this.seek(position);
|
|
651
|
-
const buffer = new Uint8Array(length);
|
|
652
|
-
this._read(buffer, position);
|
|
653
|
-
return buffer;
|
|
654
|
-
}
|
|
655
|
-
|
|
656
|
-
read(length) {
|
|
657
|
-
length = length === undefined ? this._length - this._position : length;
|
|
658
|
-
if (length < 0x10000000) {
|
|
659
|
-
const position = this._fill(length);
|
|
660
|
-
return this._buffer.slice(position, position + length);
|
|
661
|
-
}
|
|
662
|
-
const position = this._position;
|
|
663
|
-
this.skip(length);
|
|
664
|
-
const buffer = new Uint8Array(length);
|
|
665
|
-
this._read(buffer, position);
|
|
666
|
-
return buffer;
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
_fill(length) {
|
|
670
|
-
if (this._position + length > this._length) {
|
|
671
|
-
const offset = this._position + length - this._length;
|
|
672
|
-
throw new Error(`Expected ${offset} more bytes. The file might be corrupted. Unexpected end of file.`);
|
|
673
|
-
}
|
|
674
|
-
if (!this._buffer || this._position < this._offset || this._position + length > this._offset + this._buffer.length) {
|
|
675
|
-
this._offset = this._position;
|
|
676
|
-
const length = Math.min(0x10000000, this._length - this._offset);
|
|
677
|
-
if (!this._buffer || length !== this._buffer.length) {
|
|
678
|
-
this._buffer = new Uint8Array(length);
|
|
679
|
-
}
|
|
680
|
-
this._read(this._buffer, this._offset);
|
|
681
|
-
}
|
|
682
|
-
const position = this._position;
|
|
683
|
-
this._position += length;
|
|
684
|
-
return position - this._offset;
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
_read(buffer, offset) {
|
|
688
|
-
const descriptor = fs.openSync(this._file, 'r');
|
|
689
|
-
const stat = fs.statSync(this._file);
|
|
690
|
-
if (stat.mtimeMs !== this._mtime) {
|
|
691
|
-
throw new Error(`File '${this._file}' last modified time changed.`);
|
|
692
|
-
}
|
|
693
|
-
try {
|
|
694
|
-
fs.readSync(descriptor, buffer, 0, buffer.length, offset + this._start);
|
|
695
|
-
} finally {
|
|
696
|
-
fs.closeSync(descriptor);
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
};
|
|
700
|
-
|
|
701
|
-
host.ElectronHost.Context = class {
|
|
612
|
+
desktop.Context = class {
|
|
702
613
|
|
|
703
614
|
constructor(host, folder, identifier, stream, entries) {
|
|
704
615
|
this._host = host;
|
|
@@ -733,8 +644,10 @@ host.ElectronHost.Context = class {
|
|
|
733
644
|
}
|
|
734
645
|
};
|
|
735
646
|
|
|
736
|
-
window
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
647
|
+
if (typeof window !== 'undefined') {
|
|
648
|
+
window.addEventListener('load', () => {
|
|
649
|
+
const value = new desktop.Host();
|
|
650
|
+
window.__view__ = new view.View(value);
|
|
651
|
+
window.__view__.start();
|
|
652
|
+
});
|
|
653
|
+
}
|