@cuemath/leap 4.1.1-gg4 → 4.1.1-j2
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.
- package/dist/_virtual/___vite-browser-external.js +7 -0
- package/dist/_virtual/___vite-browser-external.js.map +1 -0
- package/dist/_virtual/__vite-browser-external.js +5 -0
- package/dist/_virtual/__vite-browser-external.js.map +1 -0
- package/dist/_virtual/_commonjsHelpers.js +24 -4
- package/dist/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/_virtual/alea.js +5 -0
- package/dist/_virtual/alea.js.map +1 -0
- package/dist/_virtual/seedrandom.js +5 -0
- package/dist/_virtual/seedrandom.js.map +1 -0
- package/dist/_virtual/tychei.js +5 -0
- package/dist/_virtual/tychei.js.map +1 -0
- package/dist/_virtual/xor128.js +5 -0
- package/dist/_virtual/xor128.js.map +1 -0
- package/dist/_virtual/xor4096.js +5 -0
- package/dist/_virtual/xor4096.js.map +1 -0
- package/dist/_virtual/xorshift7.js +5 -0
- package/dist/_virtual/xorshift7.js.map +1 -0
- package/dist/_virtual/xorwow.js +5 -0
- package/dist/_virtual/xorwow.js.map +1 -0
- package/dist/features/av/av-preview/av-preview.js +144 -108
- package/dist/features/av/av-preview/av-preview.js.map +1 -1
- package/dist/features/av/video-analysis/hooks/use-video-analysis.js +143 -0
- package/dist/features/av/video-analysis/hooks/use-video-analysis.js.map +1 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js +89 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js.map +1 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js +126 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js.map +1 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js +86 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js.map +1 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-model.js +404 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-model.js.map +1 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-types.js +20 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-types.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-helpers.js +40 -0
- package/dist/features/av/video-analysis/video-analysis-helpers.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js +64 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js +73 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js +78 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-styled.js +40 -0
- package/dist/features/av/video-analysis/video-analysis-styled.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis.js +316 -0
- package/dist/features/av/video-analysis/video-analysis.js.map +1 -0
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +27 -25
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapters-list.js +53 -43
- package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +17 -15
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
- package/dist/features/chapters-v2/chapter-details/chapter-details.js +66 -62
- package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
- package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js +97 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js +105 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js +64 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js +64 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js +65 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js.map +1 -0
- package/dist/features/journey/journey-id/journey-id-teacher.js +1 -1
- package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +105 -93
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +42 -40
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +36 -34
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +126 -107
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +107 -95
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +116 -104
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +99 -91
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +89 -83
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js +40 -0
- package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js +55 -0
- package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js +48 -0
- package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js +145 -0
- package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js +30 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js +17 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan.js +93 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js +81 -0
- package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js +41 -0
- package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js.map +1 -0
- package/dist/features/trial-session/comps/worksheet/worksheet.js +41 -34
- package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
- package/dist/features/trial-session/right-panel/index.js +26 -26
- package/dist/features/trial-session/right-panel/index.js.map +1 -1
- package/dist/features/trial-session/right-panel/right-panel-styled.js +27 -31
- package/dist/features/trial-session/right-panel/right-panel-styled.js.map +1 -1
- package/dist/features/trial-session/right-panel/slide-components-map.js +1 -1
- package/dist/features/trial-session/right-panel/slide-components-map.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/ui/buttons/button/button.js +51 -50
- package/dist/features/ui/buttons/button/button.js.map +1 -1
- package/dist/features/ui/buttons/icon-button/icon-button.js +21 -20
- package/dist/features/ui/buttons/icon-button/icon-button.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +76 -66
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +44 -48
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js +72 -73
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js +31 -33
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-view.js +39 -39
- package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +51 -41
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +47 -34
- package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +27 -24
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +47 -41
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +28 -26
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
- package/dist/index.d.ts +161 -4
- package/dist/index.js +452 -446
- package/dist/index.js.map +1 -1
- package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js +3713 -0
- package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js +155 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js +68 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js +66 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js +66 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js +91 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js +66 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js +114 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js +275 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js +53 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js +55 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js +116 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js +127 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js +367 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js +120 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js +108 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js +166 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js +103 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js +133 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js +583 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js +95 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js +84 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js +240 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js +115 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js +104 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js +260 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js +253 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js +246 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js +106 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js +53 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js +82 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js +83 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js +295 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js +230 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js +139 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js +88 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js +101 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js +71 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js +85 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js +155 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js +94 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js +93 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js +80 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js +92 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js +145 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js +90 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js +96 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js +365 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js +128 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js +363 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js +114 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js +113 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js +103 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js +77 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js +80 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js +138 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js +1266 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js +110 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js +79 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js +147 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js +106 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js +157 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js +351 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js +99 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js +139 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js +105 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js +101 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js +595 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js +111 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js +25 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js +55 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js +100 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js +20 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js +131 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js +169 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js +281 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js +156 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js +179 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js +16 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js +16 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js +16 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js +9 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js +25 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js +14 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js +10 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js +10 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js +10 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js +18 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js +12 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js +12 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js +242 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js +99 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js +55 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js +95 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js +73 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js +83 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js +268 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js +21 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js +98 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js +87 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js +82 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js +106 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js +175 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js +107 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js +92 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js +228 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js +94 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js +320 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js +123 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js +80 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js +120 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js +340 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js +244 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js +292 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js +314 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js +68 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js +118 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js +640 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js +239 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js +81 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js +780 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js +1184 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js +192 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js +84 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js +25 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js +386 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js +18 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js +15 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js +184 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js +452 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js +77 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js +197 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js +328 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js +87 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js +439 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js +102 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js +186 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js +308 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js +81 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js +682 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js +19 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js +243 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js +184 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js +116 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js +558 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js +76 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js +180 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js +118 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js +19 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js +87 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js.map +1 -0
- package/dist/node_modules/long/src/long.js +675 -0
- package/dist/node_modules/long/src/long.js.map +1 -0
- package/dist/node_modules/seedrandom/index.js +19 -0
- package/dist/node_modules/seedrandom/index.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/alea.js +48 -0
- package/dist/node_modules/seedrandom/lib/alea.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/tychei.js +41 -0
- package/dist/node_modules/seedrandom/lib/tychei.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xor128.js +41 -0
- package/dist/node_modules/seedrandom/lib/xor128.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xor4096.js +50 -0
- package/dist/node_modules/seedrandom/lib/xor4096.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xorshift7.js +53 -0
- package/dist/node_modules/seedrandom/lib/xorshift7.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xorwow.js +41 -0
- package/dist/node_modules/seedrandom/lib/xorwow.js.map +1 -0
- package/dist/node_modules/seedrandom/seedrandom.js +99 -0
- package/dist/node_modules/seedrandom/seedrandom.js.map +1 -0
- package/package.json +4 -1
- package/dist/features/trial-session/comps/learning-plan/index.js +0 -353
- package/dist/features/trial-session/comps/learning-plan/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sources":["../../../../../node_modules/@tensorflow/tfjs-core/dist/engine.js"],"sourcesContent":["/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport { KernelBackend } from './backends/backend';\nimport { Environment, setEnvironmentGlobal } from './environment';\nimport { getGlobalNamespace } from './global_util';\nimport { Add, Cast, Identity } from './kernel_names';\nimport { getGradient, getKernel, getKernelsForBackend } from './kernel_registry';\nimport * as log from './log';\nimport { Profiler } from './profiler';\nimport { backpropagateGradients, getFilteredNodesXToY } from './tape';\nimport { setTensorTracker, Tensor, Variable } from './tensor';\nimport { getTensorsInContainer } from './tensor_util';\nimport * as util from './util';\nimport { bytesFromStringArray, makeOnesTypedArray, now, sizeFromShape } from './util';\nfunction isRegisteredKernelInvocation(kernelInvocation) {\n return kernelInvocation.kernelName != null;\n}\nclass EngineState {\n constructor() {\n // Public since optimizers will use it.\n this.registeredVariables = {};\n this.nextTapeNodeId = 0;\n this.numBytes = 0;\n this.numTensors = 0;\n this.numStringTensors = 0;\n this.numDataBuffers = 0;\n // Number of nested tf.grad() statements when computing higher-order\n // gradients. E.g. `1` for first-order gradients and `2` for second-order\n // gradients. Used to track if the tape should be removed after a backprop.\n this.gradientDepth = 0;\n // Number of nested kernel calls. When kernel depth is greater than 1, we turn\n // off the tape.\n this.kernelDepth = 0;\n this.scopeStack = [];\n /**\n * Keeps track of the number of data moves during a kernel execution. We\n * maintain a stack since kernels can call other kernels, recursively.\n */\n this.numDataMovesStack = [];\n this.nextScopeId = 0;\n this.tensorInfo = new WeakMap();\n this.profiling = false;\n this.activeProfile = {\n newBytes: 0,\n newTensors: 0,\n peakBytes: 0,\n kernels: [],\n result: null,\n get kernelNames() {\n return Array.from(new Set(this.kernels.map(k => k.name)));\n }\n };\n }\n dispose() {\n for (const variableName in this.registeredVariables) {\n this.registeredVariables[variableName].dispose();\n }\n }\n}\nclass Engine {\n constructor(ENV) {\n this.ENV = ENV;\n this.registry = {};\n this.registryFactory = {};\n this.pendingBackendInitId = 0;\n this.state = new EngineState();\n }\n async ready() {\n if (this.pendingBackendInit != null) {\n return this.pendingBackendInit.then(() => { });\n }\n if (this.backendInstance != null) {\n return;\n }\n const sortedBackends = this.getSortedBackends();\n for (let i = 0; i < sortedBackends.length; i++) {\n const backendName = sortedBackends[i];\n const success = await this.initializeBackend(backendName).success;\n if (success) {\n await this.setBackend(backendName);\n return;\n }\n }\n throw new Error(`Could not initialize any backends, all backend initializations ` +\n `failed.`);\n }\n get backend() {\n if (this.pendingBackendInit != null) {\n throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make ` +\n `sure to await tf.ready() or await tf.setBackend() before calling ` +\n `other methods`);\n }\n if (this.backendInstance == null) {\n const { name, asyncInit } = this.initializeBackendsAndReturnBest();\n if (asyncInit) {\n throw new Error(`The highest priority backend '${name}' has not yet been ` +\n `initialized. Make sure to await tf.ready() or ` +\n `await tf.setBackend() before calling other methods`);\n }\n this.setBackend(name);\n }\n return this.backendInstance;\n }\n backendNames() {\n return Object.keys(this.registryFactory);\n }\n findBackend(backendName) {\n if (!(backendName in this.registry)) {\n // If the backend hasn't been initialized but we have a registry entry for\n // it, initialize it and return it.\n if (backendName in this.registryFactory) {\n const { asyncInit } = this.initializeBackend(backendName);\n if (asyncInit) {\n // Backend is not ready yet.\n return null;\n }\n }\n else {\n return null;\n }\n }\n return this.registry[backendName];\n }\n findBackendFactory(backendName) {\n if (!(backendName in this.registryFactory)) {\n return null;\n }\n return this.registryFactory[backendName].factory;\n }\n registerBackend(backendName, factory, priority = 1) {\n if (backendName in this.registryFactory) {\n log.warn(`${backendName} backend was already registered. ` +\n `Reusing existing backend factory.`);\n return false;\n }\n this.registryFactory[backendName] = { factory, priority };\n return true;\n }\n async setBackend(backendName) {\n if (this.registryFactory[backendName] == null) {\n throw new Error(`Backend name '${backendName}' not found in registry`);\n }\n this.backendName = backendName;\n if (this.registry[backendName] == null) {\n this.backendInstance = null;\n const { success, asyncInit } = this.initializeBackend(backendName);\n const result = asyncInit ? await success : success;\n if (!result) {\n return false;\n }\n }\n this.backendInstance = this.registry[backendName];\n this.setupRegisteredKernels();\n // Reset the profiler.\n this.profiler = new Profiler(this.backendInstance);\n return true;\n }\n setupRegisteredKernels() {\n const kernels = getKernelsForBackend(this.backendName);\n kernels.forEach(kernel => {\n if (kernel.setupFunc != null) {\n kernel.setupFunc(this.backendInstance);\n }\n });\n }\n disposeRegisteredKernels(backendName) {\n const kernels = getKernelsForBackend(backendName);\n kernels.forEach(kernel => {\n if (kernel.disposeFunc != null) {\n kernel.disposeFunc(this.registry[backendName]);\n }\n });\n }\n /**\n * Initializes a backend by looking up the backend name in the factory\n * registry and calling the factory method. Returns a boolean representing\n * whether the initialization of the backend succeeded. Throws an error if\n * there is no backend in the factory registry.\n */\n initializeBackend(backendName) {\n const registryFactoryEntry = this.registryFactory[backendName];\n if (registryFactoryEntry == null) {\n throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);\n }\n try {\n const backend = registryFactoryEntry.factory();\n /* Test if the factory returns a promise.\n Done in a more liberal way than\n previous 'Promise.resolve(backend)===backend'\n as we needed to account for custom Promise\n implementations (e.g. Angular) */\n if (backend && !(backend instanceof KernelBackend) &&\n typeof backend.then === 'function') {\n const promiseId = ++this.pendingBackendInitId;\n const success = backend\n .then(backendInstance => {\n // Outdated promise. Another backend was set in the meantime.\n if (promiseId < this.pendingBackendInitId) {\n return false;\n }\n this.registry[backendName] = backendInstance;\n this.pendingBackendInit = null;\n return true;\n })\n .catch(err => {\n // Outdated promise. Another backend was set in the meantime.\n if (promiseId < this.pendingBackendInitId) {\n return false;\n }\n this.pendingBackendInit = null;\n log.warn(`Initialization of backend ${backendName} failed`);\n log.warn(err.stack || err.message);\n return false;\n });\n this.pendingBackendInit = success;\n return { success, asyncInit: true };\n }\n else {\n this.registry[backendName] = backend;\n return { success: true, asyncInit: false };\n }\n }\n catch (err) {\n log.warn(`Initialization of backend ${backendName} failed`);\n log.warn(err.stack || err.message);\n return { success: false, asyncInit: false };\n }\n }\n removeBackend(backendName) {\n if (!(backendName in this.registryFactory)) {\n throw new Error(`${backendName} backend not found in registry`);\n }\n if (this.backendName === backendName && this.pendingBackendInit != null) {\n // There is a pending promise of the backend we want to remove. Make it\n // obsolete.\n this.pendingBackendInitId++;\n }\n if (backendName in this.registry) {\n this.disposeRegisteredKernels(backendName);\n this.registry[backendName].dispose();\n delete this.registry[backendName];\n }\n delete this.registryFactory[backendName];\n // Unset the backend if it is active.\n if (this.backendName === backendName) {\n this.pendingBackendInit = null;\n this.backendName = null;\n this.backendInstance = null;\n }\n }\n getSortedBackends() {\n if (Object.keys(this.registryFactory).length === 0) {\n throw new Error('No backend found in registry.');\n }\n return Object.keys(this.registryFactory).sort((a, b) => {\n // Highest priority comes first.\n return this.registryFactory[b].priority -\n this.registryFactory[a].priority;\n });\n }\n initializeBackendsAndReturnBest() {\n const sortedBackends = this.getSortedBackends();\n for (let i = 0; i < sortedBackends.length; i++) {\n const backendName = sortedBackends[i];\n const { success, asyncInit } = this.initializeBackend(backendName);\n if (asyncInit || success) {\n return { name: backendName, asyncInit };\n }\n }\n throw new Error(`Could not initialize any backends, all backend initializations ` +\n `failed.`);\n }\n moveData(backend, dataId) {\n const info = this.state.tensorInfo.get(dataId);\n const srcBackend = info.backend;\n const values = this.readSync(dataId);\n const refCount = srcBackend.refCount(dataId);\n // Delete the tensor from the old backend and move it to the new\n // backend.\n srcBackend.disposeData(dataId, true);\n info.backend = backend;\n backend.move(dataId, values, info.shape, info.dtype, refCount);\n if (this.shouldCheckForMemLeaks()) {\n // Track the number of moves during a kernel execution to correctly\n // detect memory leaks.\n this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++;\n }\n }\n tidy(nameOrFn, fn) {\n let name = null;\n if (fn == null) {\n // Called with only 1 argument.\n if (typeof nameOrFn !== 'function') {\n throw new Error('Please provide a function to tidy()');\n }\n fn = nameOrFn;\n }\n else {\n // Called with 2 arguments.\n if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) {\n throw new Error('When calling with two arguments, the first argument ' +\n 'to tidy() must be a string');\n }\n if (typeof fn !== 'function') {\n throw new Error('When calling with two arguments, the 2nd argument ' +\n 'to tidy() must be a function');\n }\n name = nameOrFn;\n // TODO(nsthorat,smilkov): Do operation logging and performance\n // profiling.\n }\n let result;\n return this.scopedRun(() => this.startScope(name), () => this.endScope(result), () => {\n result = fn();\n if (result instanceof Promise) {\n console.error('Cannot return a Promise inside of tidy.');\n }\n return result;\n });\n }\n scopedRun(start, end, f) {\n start();\n try {\n const res = f();\n end();\n return res;\n }\n catch (ex) {\n end();\n throw ex;\n }\n }\n nextTensorId() {\n return Engine.nextTensorId++;\n }\n nextVariableId() {\n return Engine.nextVariableId++;\n }\n /**\n * This method is called instead of the public-facing tensor.clone() when\n * saving a tensor for backwards pass. It makes sure to add the clone\n * operation to the tape regardless of being called inside a kernel\n * execution.\n */\n clone(x) {\n const y = ENGINE.runKernel(Identity, { x });\n const inputs = { x };\n const grad = (dy) => ({\n x: () => {\n const dtype = 'float32';\n const gradInputs = { x: dy };\n const attrs = { dtype };\n return ENGINE.runKernel(Cast, gradInputs, \n // tslint:disable-next-line: no-unnecessary-type-assertion\n attrs);\n }\n });\n const saved = [];\n this.addTapeNode(this.state.activeScope.name, inputs, [y], grad, saved, {});\n return y;\n }\n /**\n * Execute a kernel with the given name and return the output tensor.\n *\n * @param kernelName The name of the kernel to execute.\n * @param inputs A map of input names to tensors.\n * @param attrs A map of attribute names to their values. An attribute is a\n * primitive (non-tensor) input to the kernel.\n * @param inputsToSave A list of tensors, inputs to save for the backprop\n * computation.\n * @param outputsToSave A list of booleans, specifying which output to save\n * for the backprop computation. These are booleans since the output\n * tensors are not visible to the user.\n */\n runKernel(kernelName, inputs, attrs) {\n if (this.backendName == null) {\n // backend has not been initialized yet (backend initialization is lazy\n // can be deferred until an op/ kernel is run).\n // The below getter has side effects that will try to initialize the\n // backend and set properties like this.backendName\n // tslint:disable-next-line: no-unused-expression\n this.backend;\n }\n const hasKernel = getKernel(kernelName, this.backendName) != null;\n if (!hasKernel) {\n throw new Error(`Kernel '${kernelName}' not registered for backend '${this.backendName}'`);\n }\n return this.runKernelFunc({ kernelName, inputs, attrs });\n }\n shouldCheckForMemLeaks() {\n return this.ENV.getBool('IS_TEST');\n }\n checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos) {\n const numDataIdsAfter = this.backend.numDataIds();\n // Count the number of data ids associated with the result of the kernel.\n let numOutputDataIds = 0;\n outInfos.forEach(info => {\n // Complex numbers allocate 3 data ids, one for 'real', one for\n // 'imaginary', and one for the container that holds the former two.\n numOutputDataIds += (info.dtype === 'complex64' ? 3 : 1);\n });\n // Account for the number of moves during kernel execution. A \"data move\"\n // can happen in the middle of a kernel execution, placing a new (key,value)\n // pair in the data storage. Since data moves have net zero effect (we\n // always remove the data from the old backend), we have to cancel them out\n // when detecting memory leaks.\n const numMoves = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1];\n const dataIdsLeaked = numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves;\n if (dataIdsLeaked > 0) {\n throw new Error(`Backend '${this.backendName}' has an internal memory leak ` +\n `(${dataIdsLeaked} data ids) after running '${kernelName}'`);\n }\n }\n /**\n * Internal helper method to execute a kernel Func\n *\n * Use `runKernel` to execute kernels from outside of engine.\n */\n runKernelFunc(kernelParams) {\n let outputs;\n let saved = [];\n const isTapeOn = this.isTapeOn();\n const startingBytecount = this.state.numBytes;\n const startingNumTensors = this.state.numTensors;\n if (this.shouldCheckForMemLeaks()) {\n this.state.numDataMovesStack.push(0);\n }\n let kernelFunc;\n if (this.backendName == null) {\n // backend has not been initialized yet (backend initialization is lazy\n // can be deferred until an op/ kernel is run).\n // The below getter has side effects that will try to initialize the\n // backend and set properties like this.backendName\n // tslint:disable-next-line: no-unused-expression\n this.backend;\n }\n let out;\n const kernelOrScopeName = isRegisteredKernelInvocation(kernelParams) ?\n kernelParams.kernelName :\n this.state.activeScope != null ? this.state.activeScope.name : '';\n // Create the kernelFunc from either a registered kernel OR passed in\n // forward/backward functions (used by custom grad). In this context a\n // kernelFunc wraps a kernel implementation with some bookkeeping.\n if (isRegisteredKernelInvocation(kernelParams)) {\n const { kernelName, inputs, attrs } = kernelParams;\n if (this.backendName == null) {\n // backend has not been initialized yet (backend initialization is lazy\n // can be deferred until an op/ kernel is run).\n // The below getter has side effects that will try to initialize the\n // backend and set properties like this.backendName\n // tslint:disable-next-line: no-unused-expression\n this.backend;\n }\n const kernel = getKernel(kernelName, this.backendName);\n util.assert(kernel != null, () => `Cannot find registered kernel '${kernelName}' for backend '${this.backendName}'`);\n kernelFunc = () => {\n const numDataIdsBefore = this.backend.numDataIds();\n out = kernel.kernelFunc({ inputs, attrs, backend: this.backend });\n const outInfos = Array.isArray(out) ? out : [out];\n if (this.shouldCheckForMemLeaks()) {\n this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos);\n }\n const outTensors = outInfos.map((outInfo) => {\n // todo (yassogba) remove this option (Tensor) when node backend\n // methods have been modularized and they all return tensorInfo.\n // TensorInfos do not have a rank attribute.\n if (outInfo.rank != null) {\n return outInfo;\n }\n return this.makeTensorFromTensorInfo(outInfo);\n });\n // Save any required inputs and outputs.\n // Do not save unless we are recording to the tape. Otherwise it would\n // cause a mem leak since there would be no backprop for these tensors\n // (which would otherwise dispose them).\n if (isTapeOn) {\n const tensorsToSave = this.getTensorsForGradient(kernelName, inputs, outTensors);\n saved = this.saveTensorsForBackwardMode(tensorsToSave);\n }\n return outTensors;\n };\n }\n else {\n const { forwardFunc } = kernelParams;\n // Running a customGrad op.\n const saveFunc = (tensors) => {\n // Do not save unless we are recording to the tape. Otherwise it would\n // cause a mem leak since we would never run backprop, which disposes\n // the kept tensors.\n if (!isTapeOn) {\n return;\n }\n saved = tensors.map(tensor => this.keep(this.clone(tensor)));\n };\n kernelFunc = () => {\n const numDataIdsBefore = this.backend.numDataIds();\n out = this.tidy(() => forwardFunc(this.backend, saveFunc));\n const outs = (Array.isArray(out) ? out : [out]);\n if (this.shouldCheckForMemLeaks()) {\n // Scope name is used to print a more helpful error message if needed.\n this.checkKernelForMemLeak(kernelOrScopeName, numDataIdsBefore, outs);\n }\n return outs;\n };\n }\n //\n // Run the kernelFunc. Optionally profiling it.\n //\n const { inputs, attrs } = kernelParams;\n const backwardsFunc = isRegisteredKernelInvocation(kernelParams) ?\n null :\n kernelParams.backwardsFunc;\n let kernelProfile;\n this.scopedRun(\n // Stop recording to a tape when running a kernel.\n () => this.state.kernelDepth++, () => this.state.kernelDepth--, () => {\n if (!this.ENV.getBool('DEBUG') && !this.state.profiling) {\n outputs = kernelFunc();\n }\n else {\n kernelProfile = this.profiler.profileKernel(kernelOrScopeName, inputs, () => kernelFunc());\n if (this.ENV.getBool('DEBUG')) {\n this.profiler.logKernelProfile(kernelProfile);\n }\n outputs = kernelProfile.outputs;\n }\n });\n if (isTapeOn) {\n this.addTapeNode(kernelOrScopeName, inputs, outputs, backwardsFunc, saved, attrs);\n }\n if (this.state.profiling) {\n this.state.activeProfile.kernels.push({\n name: kernelOrScopeName,\n bytesAdded: this.state.numBytes - startingBytecount,\n totalBytesSnapshot: this.state.numBytes,\n tensorsAdded: this.state.numTensors - startingNumTensors,\n totalTensorsSnapshot: this.state.numTensors,\n inputShapes: Object.keys(inputs).map(key => inputs[key] != null ? inputs[key].shape : null),\n outputShapes: outputs.map(item => item.shape),\n kernelTimeMs: kernelProfile.timeMs,\n extraInfo: kernelProfile.extraInfo\n });\n }\n return (Array.isArray(out) ? outputs : outputs[0]);\n }\n /**\n * Saves tensors used in forward mode for use in backward mode.\n *\n * @param tensors the list of tensors to save.\n */\n saveTensorsForBackwardMode(tensors) {\n const saved = tensors.map(tensor => this.keep(this.clone(tensor)));\n return saved;\n }\n /**\n * Returns a list of tensors to save for a given gradient calculation.\n *\n * @param kernelName name of kernel to look up gradient for.\n * @param inputs a map of input tensors.\n * @param outputs an array of output tensors from forward mode of kernel.\n */\n getTensorsForGradient(kernelName, inputs, outputs) {\n const gradConfig = getGradient(kernelName);\n if (gradConfig != null) {\n const inputsToSave = gradConfig.inputsToSave || [];\n const outputsToSave = gradConfig.outputsToSave || [];\n // If saveAllInputs is true, all inputs will be saved. Otherwise, inputs\n // specified in inputsToSave will be saved.\n let inputTensorsToSave;\n if (gradConfig.saveAllInputs) {\n util.assert(Array.isArray(inputs), () => 'saveAllInputs is true, expected inputs to be an array.');\n inputTensorsToSave = Object.keys(inputs).map((key) => inputs[key]);\n }\n else {\n inputTensorsToSave = inputsToSave.map((inputName) => inputs[inputName]);\n }\n const outputTensorsToSave = outputs.filter((_, i) => outputsToSave[i]);\n return inputTensorsToSave.concat(outputTensorsToSave);\n }\n // We return an empty list rather than throw an error because the kernel we\n // are looking up may not actually be relevant to backproping through the\n // overall function\n //\n // See 'does not error if irrelevant (pruned) ops are missing grads' test\n // in gradients_test.ts for an example.\n return [];\n }\n /**\n * Internal method used by public APIs for tensor creation. Makes a new\n * tensor with the provided shape, dtype and values. It always\n * creates a new data id and writes the values to the underlying backend.\n */\n makeTensor(values, shape, dtype, backend) {\n if (values == null) {\n throw new Error('Values passed to engine.makeTensor() are null');\n }\n dtype = dtype || 'float32';\n backend = backend || this.backend;\n let backendVals = values;\n if (dtype === 'string' && util.isString(values[0])) {\n backendVals = values.map(d => util.encodeString(d));\n }\n const dataId = backend.write(backendVals, shape, dtype);\n const t = new Tensor(shape, dtype, dataId, this.nextTensorId());\n this.trackTensor(t, backend);\n // Count bytes for string tensors.\n if (dtype === 'string') {\n const info = this.state.tensorInfo.get(dataId);\n const newBytes = bytesFromStringArray(backendVals);\n this.state.numBytes += newBytes - info.bytes;\n info.bytes = newBytes;\n }\n return t;\n }\n /**\n * Internal method used by backends. Makes a new tensor\n * that is a wrapper around an existing data id. It doesn't create\n * a new data id, only increments the ref count used in memory tracking.\n * @deprecated\n */\n makeTensorFromDataId(dataId, shape, dtype, backend) {\n dtype = dtype || 'float32';\n const tensorInfo = { dataId, shape, dtype };\n return this.makeTensorFromTensorInfo(tensorInfo, backend);\n }\n /**\n * Internal method used by backends. Makes a new tensor that is a wrapper\n * around an existing data id in TensorInfo. It doesn't create a new data id,\n * only increments the ref count used in memory tracking.\n */\n makeTensorFromTensorInfo(tensorInfo, backend) {\n const { dataId, shape, dtype } = tensorInfo;\n const t = new Tensor(shape, dtype, dataId, this.nextTensorId());\n this.trackTensor(t, backend);\n return t;\n }\n makeVariable(initialValue, trainable = true, name, dtype) {\n name = name || this.nextVariableId().toString();\n if (dtype != null && dtype !== initialValue.dtype) {\n initialValue = initialValue.cast(dtype);\n }\n const v = new Variable(initialValue, trainable, name, this.nextTensorId());\n if (this.state.registeredVariables[v.name] != null) {\n throw new Error(`Variable with name ${v.name} was already registered`);\n }\n this.state.registeredVariables[v.name] = v;\n this.incRef(v, this.backend);\n return v;\n }\n trackTensor(a, backend) {\n this.state.numTensors++;\n if (a.dtype === 'string') {\n this.state.numStringTensors++;\n }\n // Bytes for complex numbers are counted by their components. Bytes for\n // string tensors are counted when writing values.\n let bytes = 0;\n if (a.dtype !== 'complex64' && a.dtype !== 'string') {\n bytes = a.size * util.bytesPerElement(a.dtype);\n }\n this.state.numBytes += bytes;\n if (!this.state.tensorInfo.has(a.dataId)) {\n this.state.numDataBuffers++;\n this.state.tensorInfo.set(a.dataId, {\n backend: backend || this.backend,\n dtype: a.dtype,\n shape: a.shape,\n bytes\n });\n }\n if (!(a instanceof Variable)) {\n this.track(a);\n }\n }\n // Track the tensor by dataId and increase the refCount for the dataId in the\n // backend.\n // TODO(pyu10055): This is currently used by makeVariable method, to increase\n // refCount on the backend for the dataId. It can potentially be replaced with\n // Identity op indead of calling backend directly.\n incRef(a, backend) {\n this.trackTensor(a, backend);\n this.backend.incRef(a.dataId);\n }\n removeDataId(dataId, backend) {\n if (this.state.tensorInfo.has(dataId) &&\n this.state.tensorInfo.get(dataId).backend === backend) {\n this.state.tensorInfo.delete(dataId);\n this.state.numDataBuffers--;\n }\n }\n disposeTensor(a) {\n if (!this.state.tensorInfo.has(a.dataId)) {\n return;\n }\n const info = this.state.tensorInfo.get(a.dataId);\n this.state.numTensors--;\n if (a.dtype === 'string') {\n this.state.numStringTensors--;\n this.state.numBytes -= info.bytes;\n }\n // Don't count bytes for complex numbers as they are counted by their\n // components.\n if (a.dtype !== 'complex64' && a.dtype !== 'string') {\n const bytes = a.size * util.bytesPerElement(a.dtype);\n this.state.numBytes -= bytes;\n }\n // Remove the reference to dataId if backend dispose the data successfully\n if (info.backend.disposeData(a.dataId)) {\n this.removeDataId(a.dataId, info.backend);\n }\n // TODO(nsthorat): Construct an error and save the stack trace for\n // debugging when in debug mode. Creating a stack trace is too expensive\n // to do unconditionally.\n }\n disposeVariables() {\n for (const varName in this.state.registeredVariables) {\n const v = this.state.registeredVariables[varName];\n this.disposeVariable(v);\n }\n }\n disposeVariable(v) {\n this.disposeTensor(v);\n if (this.state.registeredVariables[v.name] != null) {\n delete this.state.registeredVariables[v.name];\n }\n }\n memory() {\n const info = this.backend.memory();\n info.numTensors = this.state.numTensors;\n info.numDataBuffers = this.state.numDataBuffers;\n info.numBytes = this.state.numBytes;\n if (this.state.numStringTensors > 0) {\n info.unreliable = true;\n if (info.reasons == null) {\n info.reasons = [];\n }\n info.reasons.push('Memory usage by string tensors is approximate ' +\n '(2 bytes per character)');\n }\n return info;\n }\n async profile(query) {\n this.state.profiling = true;\n const startBytes = this.state.numBytes;\n const startNumTensors = this.state.numTensors;\n this.state.activeProfile.kernels = [];\n this.state.activeProfile.result = await query();\n this.state.profiling = false;\n this.state.activeProfile.peakBytes = Math.max(...this.state.activeProfile.kernels.map(d => d.totalBytesSnapshot));\n this.state.activeProfile.newBytes = this.state.numBytes - startBytes;\n this.state.activeProfile.newTensors =\n this.state.numTensors - startNumTensors;\n for (const kernel of this.state.activeProfile.kernels) {\n kernel.kernelTimeMs = await kernel.kernelTimeMs;\n kernel.extraInfo = await kernel.extraInfo;\n }\n return this.state.activeProfile;\n }\n isTapeOn() {\n return this.state.gradientDepth > 0 && this.state.kernelDepth === 0;\n }\n addTapeNode(kernelName, inputs, outputs, gradientsFunc, saved, attrs) {\n const tapeNode = { id: this.state.nextTapeNodeId++, kernelName, inputs, outputs, saved };\n const gradConfig = getGradient(kernelName);\n if (gradConfig != null) {\n gradientsFunc = gradConfig.gradFunc;\n }\n if (gradientsFunc != null) {\n tapeNode.gradient = (dys) => {\n // TODO(smilkov): To optimize back-prop, pass dys that are not used in\n // the backprop graph to the user as null instead of zeros\n dys = dys.map((dy, i) => {\n if (dy == null) {\n const output = outputs[i];\n const vals = util.makeZerosTypedArray(output.size, output.dtype);\n return this.makeTensor(vals, output.shape, output.dtype);\n }\n return dy;\n });\n // Grad functions of ops with single outputs expect a dy, while ops\n // with multiple outputs expect dys (array of dy).\n return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs);\n };\n }\n this.state.activeTape.push(tapeNode);\n }\n keep(result) {\n result.kept = true;\n return result;\n }\n startTape() {\n if (this.state.gradientDepth === 0) {\n this.state.activeTape = [];\n }\n this.state.gradientDepth++;\n }\n endTape() {\n this.state.gradientDepth--;\n }\n /**\n * Start a scope. Use this with endScope() to achieve the same functionality\n * as scope() without the need for a function closure.\n */\n startScope(name) {\n const scopeInfo = {\n track: [],\n name: 'unnamed scope',\n id: this.state.nextScopeId++\n };\n if (name) {\n scopeInfo.name = name;\n }\n this.state.scopeStack.push(scopeInfo);\n this.state.activeScope = scopeInfo;\n }\n /**\n * End a scope. Use this with startScope() to achieve the same functionality\n * as scope() without the need for a function closure.\n */\n endScope(result) {\n const tensorsToTrackInParent = getTensorsInContainer(result);\n const tensorsToTrackInParentSet = new Set(tensorsToTrackInParent.map(t => t.id));\n // Dispose the arrays tracked in this scope.\n for (let i = 0; i < this.state.activeScope.track.length; i++) {\n const tensor = this.state.activeScope.track[i];\n if (!tensor.kept && !tensorsToTrackInParentSet.has(tensor.id)) {\n tensor.dispose();\n }\n }\n const oldScope = this.state.scopeStack.pop();\n this.state.activeScope = this.state.scopeStack.length === 0 ?\n null :\n this.state.scopeStack[this.state.scopeStack.length - 1];\n // Track the current result in the parent scope.\n tensorsToTrackInParent.forEach(tensor => {\n // Only track the tensor if was allocated in the inner scope and is not\n // globally kept.\n if (!tensor.kept && tensor.scopeId === oldScope.id) {\n this.track(tensor);\n }\n });\n }\n /**\n * Returns gradients of `f` with respect to each of the `xs`. The gradients\n * returned are of the same length as `xs`, but some might be null if `f`\n * was not a function of that `x`. It also takes optional dy to multiply the\n * gradient, which defaults to `1`.\n */\n gradients(f, xs, dy, allowNoGradients = false) {\n util.assert(xs.length > 0, () => 'gradients() received an empty list of xs.');\n if (dy != null && dy.dtype !== 'float32') {\n throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);\n }\n const y = this.scopedRun(() => this.startTape(), () => this.endTape(), () => this.tidy('forward', f));\n util.assert(y instanceof Tensor, () => 'The result y returned by f() must be a tensor.');\n // Filter out the nodes that don't connect x => y.\n const filteredTape = getFilteredNodesXToY(this.state.activeTape, xs, y);\n if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) {\n throw new Error('Cannot compute gradient of y=f(x) with respect to x. Make sure ' +\n 'that the f you passed encloses all operations that lead from x ' +\n 'to y.');\n }\n return this.tidy('backward', () => {\n const accumulatedGradientMap = {};\n accumulatedGradientMap[y.id] = (dy == null) ? ones(y.shape) : dy;\n // Backprop gradients through the filtered nodes.\n backpropagateGradients(accumulatedGradientMap, filteredTape, \n // Pass the tidy function to avoid circular dep with `tape.ts`.\n f => this.tidy(f), \n // Pass an add function to avoide a circular dep with `tape.ts`.\n add);\n const grads = xs.map(x => accumulatedGradientMap[x.id]);\n if (this.state.gradientDepth === 0) {\n // This means that we are not computing higher-order gradients\n // and can clean up the tape.\n this.state.activeTape.forEach(node => {\n for (const tensor of node.saved) {\n tensor.dispose();\n }\n });\n this.state.activeTape = null;\n }\n return { value: y, grads };\n });\n }\n customGrad(f) {\n util.assert(util.isFunction(f), () => 'The f passed in customGrad(f) must be a function.');\n return (...inputs) => {\n util.assert(inputs.every(t => t instanceof Tensor), () => 'The args passed in customGrad(f)(x1, x2,...) must all be ' +\n 'tensors');\n let res;\n const inputMap = {};\n inputs.forEach((input, i) => {\n inputMap[i] = input;\n });\n const forwardFunc = (_, save) => {\n res = f(...[...inputs, save]);\n util.assert(res.value instanceof Tensor, () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.value` is a tensor');\n util.assert(util.isFunction(res.gradFunc), () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function.');\n return res.value;\n };\n const backwardsFunc = (dy, saved) => {\n const gradRes = res.gradFunc(dy, saved);\n const grads = Array.isArray(gradRes) ? gradRes : [gradRes];\n util.assert(grads.length === inputs.length, () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function that returns ' +\n 'the same number of tensors as inputs passed to f(...).');\n util.assert(grads.every(t => t instanceof Tensor), () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function that returns ' +\n 'a list of only tensors.');\n const gradMap = {};\n grads.forEach((grad, i) => {\n gradMap[i] = () => grad;\n });\n return gradMap;\n };\n return this.runKernelFunc({\n forwardFunc,\n backwardsFunc,\n inputs: inputMap,\n });\n };\n }\n readSync(dataId) {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.readSync(dataId);\n }\n read(dataId) {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.read(dataId);\n }\n readToGPU(dataId, options) {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.readToGPU(dataId, options);\n }\n async time(query) {\n const start = now();\n const timingInfo = await this.backend.time(query);\n timingInfo.wallMs = now() - start;\n return timingInfo;\n }\n /**\n * Tracks a Tensor in the current scope to be automatically cleaned up\n * when the current scope ends, and returns the value.\n *\n * @param result The Tensor to track in the current scope.\n */\n track(result) {\n if (this.state.activeScope != null) {\n result.scopeId = this.state.activeScope.id;\n this.state.activeScope.track.push(result);\n }\n return result;\n }\n get registeredVariables() {\n return this.state.registeredVariables;\n }\n /**\n * Resets the engine state. Removes all backends but does not remove\n * registered backend factories.\n */\n reset() {\n // Make any pending promise obsolete.\n this.pendingBackendInitId++;\n this.state.dispose();\n this.ENV.reset();\n this.state = new EngineState();\n for (const backendName in this.registry) {\n this.disposeRegisteredKernels(backendName);\n this.registry[backendName].dispose();\n delete this.registry[backendName];\n }\n this.backendName = null;\n this.backendInstance = null;\n this.pendingBackendInit = null;\n }\n}\nEngine.nextTensorId = 0;\nEngine.nextVariableId = 0;\nexport { Engine };\nfunction ones(shape) {\n const values = makeOnesTypedArray(sizeFromShape(shape), 'float32');\n return ENGINE.makeTensor(values, shape, 'float32');\n}\nexport function getOrMakeEngine() {\n const ns = getGlobalNamespace();\n if (ns._tfengine == null) {\n const environment = new Environment(ns);\n ns._tfengine = new Engine(environment);\n }\n setEnvironmentGlobal(ns._tfengine.ENV);\n // Tell the current tensor interface that the global engine is responsible\n // for tracking.\n setTensorTracker(() => ns._tfengine);\n return ns._tfengine;\n}\nexport const ENGINE = getOrMakeEngine();\n/**\n * A implementation of the add op for use within engine and tape.\n *\n * This allows us to avoid a circular dependency between add.ts and engine.\n * It is exported to be available in tape tests.\n */\nexport function add(a, b) {\n // We duplicate Add here to avoid a circular dependency with add.ts.\n const inputs = { a, b };\n return ENGINE.runKernel(Add, inputs);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGZqcy1jb3JlL3NyYy9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUErQixhQUFhLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsV0FBVyxFQUFFLG9CQUFvQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RyxPQUFPLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQWdCLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxRQUFRLENBQUM7QUFDOUUsT0FBTyxFQUE0QixnQkFBZ0IsRUFBRSxNQUFNLEVBQWlCLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUd0RyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUMsTUFBTSxRQUFRLENBQUM7QUF1RXBGLFNBQVMsNEJBQTRCLENBRWpDLGdCQUNnQztJQUVsQyxPQUFRLGdCQUFrRCxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7QUFDaEYsQ0FBQztBQUVELE1BQU0sV0FBVztJQUFqQjtRQUNFLHVDQUF1QztRQUN2Qyx3QkFBbUIs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SztTQXRVdkIsTUFBTTtBQTRsQ25CLFNBQVMsSUFBSSxDQUFDLEtBQWU7SUFDM0IsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEVBQUUsR0FBRyxrQkFBa0IsRUFBb0MsQ0FBQztJQUNsRSxJQUFJLEVBQUUsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDeEM7SUFDRCxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZDLDBFQUEwRTtJQUMxRSxnQkFBZ0I7SUFDaEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLGVBQWUsRUFBRSxDQUFDO0FBRXhDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUN0QyxvRUFBb0U7SUFDcEUsTUFBTSxNQUFNLEdBQUcsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7SUFDdEIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFtQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDE4IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuaW1wb3J0IHtCYWNrZW5kVGltaW5nSW5mbywgRGF0YU1vdmVyLCBLZXJuZWxCYWNrZW5kfSBmcm9tICcuL2JhY2tlbmRzL2JhY2tlbmQnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgc2V0RW52aXJvbm1lbnRHbG9iYWx9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtnZXRHbG9iYWxOYW1lc3BhY2V9IGZyb20gJy4vZ2xvYmFsX3V0aWwnO1xuaW1wb3J0IHtBZGQsIENhc3QsIElkZW50aXR5fSBmcm9tICcuL2tlcm5lbF9uYW1lcyc7XG5pbXBvcnQgeyBnZXRHcmFkaWVudCwgZ2V0S2VybmVsLCBnZXRLZXJuZWxzRm9yQmFja2VuZCwgR3JhZEZ1bmMsIE5hbWVkQXR0ck1hcCB9IGZyb20gJy4va2VybmVsX3JlZ2lzdHJ5JztcbmltcG9ydCB7IFRlbnNvckluZm8gfSBmcm9tICcuL3RlbnNvcl9pbmZvJztcbmltcG9ydCAqIGFzIGxvZyBmcm9tICcuL2xvZyc7XG5pbXBvcnQge0tlcm5lbFByb2ZpbGUsIFByb2ZpbGVyfSBmcm9tICcuL3Byb2ZpbGVyJztcbmltcG9ydCB7YmFja3Byb3BhZ2F0ZUdyYWRpZW50cywgZ2V0RmlsdGVyZWROb2Rlc1hUb1ksIFRhcGVOb2RlfSBmcm9tICcuL3RhcGUnO1xuaW1wb3J0IHtEYXRhVG9HUFVPcHRpb25zLCBHUFVEYXRhLCBzZXRUZW5zb3JUcmFja2VyLCBUZW5zb3IsIFRlbnNvclRyYWNrZXIsIFZhcmlhYmxlfSBmcm9tICcuL3RlbnNvcic7XG5pbXBvcnQge0RhdGFJZH0gZnJvbSAnLi90ZW5zb3JfaW5mbyc7XG5pbXBvcnQge0dyYWRTYXZlRnVuYywgTmFtZWRUZW5zb3JNYXAsIE5hbWVkVmFyaWFibGVNYXAsIFRlbnNvckNvbnRhaW5lcn0gZnJvbSAnLi90ZW5zb3JfdHlwZXMnO1xuaW1wb3J0IHtnZXRUZW5zb3JzSW5Db250YWluZXJ9IGZyb20gJy4vdGVuc29yX3V0aWwnO1xuaW1wb3J0IHtCYWNrZW5kVmFsdWVzLCBEYXRhVHlwZSwgRGF0YVZhbHVlc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge2J5dGVzRnJvbVN0cmluZ0FycmF5LCBtYWtlT25lc1R5cGVkQXJyYXksIG5vdywgc2l6ZUZyb21TaGFwZX0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgYW4gb3V0cHV0LiBUaGUgc2F2ZSBmdW5jdGlvbiBpcyBmb3Igc2F2aW5nIHRlbnNvcnNcbiAqIGNvbXB1dGVkIGluIHRoZSBmb3J3YXJkIHBhc3MsIHRoYXQgd2UgbmVlZCBpbiB0aGUgYmFja3dhcmQgcGFzcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9yd2FyZEZ1bmM8VD4gPSAoYmFja2VuZDogS2VybmVsQmFja2VuZCwgc2F2ZT86IEdyYWRTYXZlRnVuYykgPT4gVDtcblxuLyoqXG4gKiBAZG9jYWxpYXMgKGE6IFRlbnNvciwgYjogVGVuc29yLC4uLiwgc2F2ZT86IEZ1bmN0aW9uKSA9PiB7XG4gKiAgIHZhbHVlOiBUZW5zb3IsXG4gKiAgIGdyYWRGdW5jOiAoZHk6IFRlbnNvciwgc2F2ZWQ/OiBOYW1lZFRlbnNvck1hcCkgPT4gVGVuc29yIHwgVGVuc29yW11cbiAqIH1cbiAqL1xuZXhwb3J0IHR5cGUgQ3VzdG9tR3JhZGllbnRGdW5jPFQgZXh0ZW5kcyBUZW5zb3I+ID1cbiAgICAoLi4uaW5wdXRzOiBBcnJheTxUZW5zb3J8R3JhZFNhdmVGdW5jPikgPT4ge1xuICAgICAgdmFsdWU6IFQ7XG4gICAgICBncmFkRnVuYzogKGR5OiBULCBzYXZlZDogVGVuc29yW10pID0+IFRlbnNvciB8IFRlbnNvcltdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIE1lbW9yeUluZm8gPSB7XG4gIG51bVRlbnNvcnM6IG51bWJlcjsgbnVtRGF0YUJ1ZmZlcnM6IG51bWJlcjsgbnVtQnl0ZXM6IG51bWJlcjtcbiAgdW5yZWxpYWJsZT86IGJvb2xlYW47IHJlYXNvbnM6IHN0cmluZ1tdO1xufTtcblxudHlwZSBLZXJuZWxJbmZvID0ge1xuICBuYW1lOiBzdHJpbmc7IGJ5dGVzQWRkZWQ6IG51bWJlcjsgdG90YWxCeXRlc1NuYXBzaG90OiBudW1iZXI7XG4gIHRlbnNvcnNBZGRlZDogbnVtYmVyO1xuICB0b3RhbFRlbnNvcnNTbmFwc2hvdDogbnVtYmVyO1xuICBpbnB1dFNoYXBlczogbnVtYmVyW11bXTtcbiAgb3V0cHV0U2hhcGVzOiBudW1iZXJbXVtdO1xuICBrZXJuZWxUaW1lTXM6IG51bWJlciB8IHtlcnJvcjogc3RyaW5nfSB8IFByb21pc2U8bnVtYmVyfHtlcnJvcjogc3RyaW5nfT47XG4gIGV4dHJhSW5mbzogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvZmlsZUluZm8gPSB7XG4gIG5ld0J5dGVzOiBudW1iZXI7IG5ld1RlbnNvcnM6IG51bWJlcjsgcGVha0J5dGVzOiBudW1iZXI7XG4gIGtlcm5lbHM6IEtlcm5lbEluZm9bXTtcbiAgcmVzdWx0OiBUZW5zb3JDb250YWluZXI7XG4gIGtlcm5lbE5hbWVzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltaW5nSW5mbyBleHRlbmRzIEJhY2tlbmRUaW1pbmdJbmZvIHtcbiAgd2FsbE1zOiBudW1iZXI7XG59XG5cbi8qKiBAZG9jYWxpYXMgRnVuY3Rpb24gKi9cbmV4cG9ydCB0eXBlIFNjb3BlRm48VCBleHRlbmRzIFRlbnNvckNvbnRhaW5lcj4gPSAoKSA9PiBUO1xuXG5pbnRlcmZhY2UgU2NvcGVTdGF0ZSB7XG4gIHRyYWNrOiBUZW5zb3JbXTtcbiAgbmFtZTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVnaXN0ZXJlZEtlcm5lbEludm9jYXRpb248SSBleHRlbmRzIE5hbWVkVGVuc29yTWFwPiB7XG4gIGtlcm5lbE5hbWU6IHN0cmluZztcbiAgaW5wdXRzOiBJO1xuICBhdHRycz86IE5hbWVkQXR0ck1hcDtcbn1cblxuaW50ZXJmYWNlIEN1c3RvbUdyYWRLZXJuZWxJbnZvY2F0aW9uPFQgZXh0ZW5kcyBUZW5zb3J8VGVuc29yW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgZXh0ZW5kcyBOYW1lZFRlbnNvck1hcD4ge1xuICBmb3J3YXJkRnVuYzogRm9yd2FyZEZ1bmM8VD47XG4gIGJhY2t3YXJkc0Z1bmM6IChkeTogVCwgc2F2ZWQ6IFRlbnNvcltdKSA9PiB7XG4gICAgW1AgaW4ga2V5b2YgSV06ICgpID0+IElbUF1cbiAgfTtcbiAgaW5wdXRzOiBJO1xuICBhdHRycz86IE5hbWVkQXR0ck1hcDtcbn1cblxuZnVuY3Rpb24gaXNSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxUIGV4dGVuZHMgVGVuc29yfFRlbnNvcltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBleHRlbmRzIE5hbWVkVGVuc29yTWFwPihcbiAgICBrZXJuZWxJbnZvY2F0aW9uOiBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPnxcbiAgICBDdXN0b21HcmFkS2VybmVsSW52b2NhdGlvbjxULCBJPik6XG4gICAga2VybmVsSW52b2NhdGlvbiBpcyBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPiB7XG4gIHJldHVybiAoa2VybmVsSW52b2NhdGlvbiBhcyBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPikua2VybmVsTmFtZSAhPSBudWxsO1xufVxuXG5jbGFzcyBFbmdpbmVTdGF0ZSB7XG4gIC8vIFB1YmxpYyBzaW5jZSBvcHRpbWl6ZXJzIHdpbGwgdXNlIGl0LlxuICByZWdpc3RlcmVkVmFyaWFibGVzOiBOYW1lZFZhcmlhYmxlTWFwID0ge307XG5cbiAgbmV4dFRhcGVOb2RlSWQgPSAwO1xuICBudW1CeXRlcyA9IDA7XG4gIG51bVRlbnNvcnMgPSAwO1xuICBudW1TdHJpbmdUZW5zb3JzID0gMDtcbiAgbnVtRGF0YUJ1ZmZlcnMgPSAwO1xuXG4gIGFjdGl2ZVRhcGU6IFRhcGVOb2RlW107XG4gIC8vIE51bWJlciBvZiBuZXN0ZWQgdGYuZ3JhZCgpIHN0YXRlbWVudHMgd2hlbiBjb21wdXRpbmcgaGlnaGVyLW9yZGVyXG4gIC8vIGdyYWRpZW50cy4gRS5nLiBgMWAgZm9yIGZpcnN0LW9yZGVyIGdyYWRpZW50cyBhbmQgYDJgIGZvciBzZWNvbmQtb3JkZXJcbiAgLy8gZ3JhZGllbnRzLiBVc2VkIHRvIHRyYWNrIGlmIHRoZSB0YXBlIHNob3VsZCBiZSByZW1vdmVkIGFmdGVyIGEgYmFja3Byb3AuXG4gIGdyYWRpZW50RGVwdGggPSAwO1xuICAvLyBOdW1iZXIgb2YgbmVzdGVkIGtlcm5lbCBjYWxscy4gV2hlbiBrZXJuZWwgZGVwdGggaXMgZ3JlYXRlciB0aGFuIDEsIHdlIHR1cm5cbiAgLy8gb2ZmIHRoZSB0YXBlLlxuICBrZXJuZWxEZXB0aCA9IDA7XG5cbiAgLy8gS2VlcCBUZW5zb3JzIHRoYXQgcGFyYWxsZWwgdGhlIHRhcGVzLlxuICBhY3RpdmVTY29wZTogU2NvcGVTdGF0ZTtcbiAgc2NvcGVTdGFjazogU2NvcGVTdGF0ZVtdID0gW107XG4gIC8qKlxuICAgKiBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGRhdGEgbW92ZXMgZHVyaW5nIGEga2VybmVsIGV4ZWN1dGlvbi4gV2VcbiAgICogbWFpbnRhaW4gYSBzdGFjayBzaW5jZSBrZXJuZWxzIGNhbiBjYWxsIG90aGVyIGtlcm5lbHMsIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgbnVtRGF0YU1vdmVzU3RhY2s6IG51bWJlcltdID0gW107XG4gIG5leHRTY29wZUlkID0gMDtcblxuICB0ZW5zb3JJbmZvID0gbmV3IFdlYWtNYXA8RGF0YUlkLCB7XG4gICAgYmFja2VuZDogS2VybmVsQmFja2VuZCxcbiAgICBieXRlczogbnVtYmVyLFxuICAgIGR0eXBlOiBEYXRhVHlwZSxcbiAgICBzaGFwZTogbnVtYmVyW11cbiAgfT4oKTtcblxuICBwcm9maWxpbmcgPSBmYWxzZTtcbiAgYWN0aXZlUHJvZmlsZTogUHJvZmlsZUluZm8gPSB7XG4gICAgbmV3Qnl0ZXM6IDAsXG4gICAgbmV3VGVuc29yczogMCxcbiAgICBwZWFrQnl0ZXM6IDAsXG4gICAga2VybmVsczogW10sXG4gICAgcmVzdWx0OiBudWxsLFxuICAgIGdldCBrZXJuZWxOYW1lcygpOlxuICAgICAgICBzdHJpbmdbXSB7XG4gICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLmtlcm5lbHMubWFwKGsgPT4gay5uYW1lKSkpO1xuICAgICAgICB9XG4gIH07XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBmb3IgKGNvbnN0IHZhcmlhYmxlTmFtZSBpbiB0aGlzLnJlZ2lzdGVyZWRWYXJpYWJsZXMpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJlZFZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVuZ2luZSBpbXBsZW1lbnRzIFRlbnNvclRyYWNrZXIsIERhdGFNb3ZlciB7XG4gIHN0YXRlOiBFbmdpbmVTdGF0ZTtcbiAgYmFja2VuZE5hbWU6IHN0cmluZztcbiAgcmVnaXN0cnk6IHtbaWQ6IHN0cmluZ106IEtlcm5lbEJhY2tlbmR9ID0ge307XG4gIHJlZ2lzdHJ5RmFjdG9yeToge1xuICAgIFtpZDogc3RyaW5nXToge1xuICAgICAgZmFjdG9yeTogKCkgPT4gS2VybmVsQmFja2VuZCB8IFByb21pc2U8S2VybmVsQmFja2VuZD4sXG4gICAgICBwcmlvcml0eTogbnVtYmVyXG4gICAgfVxuICB9ID0ge307XG5cbiAgcHJpdmF0ZSBwcm9maWxlcjogUHJvZmlsZXI7XG4gIHByaXZhdGUgYmFja2VuZEluc3RhbmNlOiBLZXJuZWxCYWNrZW5kO1xuICBwcml2YXRlIHBlbmRpbmdCYWNrZW5kSW5pdDogUHJvbWlzZTxib29sZWFuPjtcbiAgcHJpdmF0ZSBwZW5kaW5nQmFja2VuZEluaXRJZCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIEVOVjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLnN0YXRlID0gbmV3IEVuZ2luZVN0YXRlKCk7XG4gIH1cblxuICBhc3luYyByZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5wZW5kaW5nQmFja2VuZEluaXQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0JhY2tlbmRJbml0LnRoZW4oKCkgPT4ge30pO1xuICAgIH1cbiAgICBpZiAodGhpcy5iYWNrZW5kSW5zdGFuY2UgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3J0ZWRCYWNrZW5kcyA9IHRoaXMuZ2V0U29ydGVkQmFja2VuZHMoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkQmFja2VuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGJhY2tlbmROYW1lID0gc29ydGVkQmFja2VuZHNbaV07XG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy5pbml0aWFsaXplQmFja2VuZChiYWNrZW5kTmFtZSkuc3VjY2VzcztcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0QmFja2VuZChiYWNrZW5kTmFtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhbnkgYmFja2VuZHMsIGFsbCBiYWNrZW5kIGluaXRpYWxpemF0aW9ucyBgICtcbiAgICAgICAgYGZhaWxlZC5gKTtcbiAgfVxuXG4gIGdldCBiYWNrZW5kKCk6IEtlcm5lbEJhY2tlbmQge1xuICAgIGlmICh0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEJhY2tlbmQgJyR7dGhpcy5iYWNrZW5kTmFtZX0nIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuIE1ha2UgYCArXG4gICAgICAgICAgYHN1cmUgdG8gYXdhaXQgdGYucmVhZHkoKSBvciBhd2FpdCB0Zi5zZXRCYWNrZW5kKCkgYmVmb3JlIGNhbGxpbmcgYCArXG4gICAgICAgICAgYG90aGVyIG1ldGhvZHNgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYmFja2VuZEluc3RhbmNlID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHtuYW1lLCBhc3luY0luaXR9ID0gdGhpcy5pbml0aWFsaXplQmFja2VuZHNBbmRSZXR1cm5CZXN0KCk7XG4gICAgICBpZiAoYXN5bmNJbml0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgaGlnaGVzdCBwcmlvcml0eSBiYWNrZW5kICcke25hbWV9JyBoYXMgbm90IHlldCBiZWVuIGAgK1xuICAgICAgICAgICAgYGluaXRpYWxpemVkLiBNYWtlIHN1cmUgdG8gYXdhaXQgdGYucmVhZHkoKSBvciBgICtcbiAgICAgICAgICAgIGBhd2FpdCB0Zi5zZXRCYWNrZW5kKCkgYmVmb3JlIGNhbGxpbmcgb3RoZXIgbWV0aG9kc2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRCYWNrZW5kKG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kSW5zdGFuY2U7XG4gIH1cblxuICBiYWNrZW5kTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJ5RmFjdG9yeSk7XG4gIH1cblxuICBmaW5kQmFja2VuZChiYWNrZW5kTmFtZTogc3RyaW5nKTogS2VybmVsQmFja2VuZCB7XG4gICAgaWYgKCEoYmFja2VuZE5hbWUgaW4gdGhpcy5yZWdpc3RyeSkpIHtcbiAgICAgIC8vIElmIHRoZSBiYWNrZW5kIGhhc24ndCBiZWVuIGluaXRpYWxpemVkIGJ1dCB3ZSBoYXZlIGEgcmVnaXN0cnkgZW50cnkgZm9yXG4gICAgICAvLyBpdCwgaW5pdGlhbGl6ZSBpdCBhbmQgcmV0dXJuIGl0LlxuICAgICAgaWYgKGJhY2tlbmROYW1lIGluIHRoaXMucmVnaXN0cnlGYWN0b3J5KSB7XG4gICAgICAgIGNvbnN0IHthc3luY0luaXR9ID0gdGhpcy5pbml0aWFsaXplQmFja2VuZChiYWNrZW5kTmFtZSk7XG4gICAgICAgIGlmIChhc3luY0luaXQpIHtcbiAgICAgICAgICAvLyBCYWNrZW5kIGlzIG5vdCByZWFkeSB5ZXQuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV07XG4gIH1cblxuICBmaW5kQmFja2VuZEZhY3RvcnkoYmFja2VuZE5hbWU6IHN0cmluZyk6XG4gICAgICAoKSA9PiBLZXJuZWxCYWNrZW5kIHwgUHJvbWlzZTxLZXJuZWxCYWNrZW5kPiB7XG4gICAgaWYgKCEoYmFja2VuZE5hbWUgaW4gdGhpcy5yZWdpc3RyeUZhY3RvcnkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXS5mYWN0b3J5O1xuICB9XG5cbiAgcmVnaXN0ZXJCYWNrZW5kKFxuICAgICAgYmFja2VuZE5hbWU6IHN0cmluZyxcbiAgICAgIGZhY3Rvcnk6ICgpID0+IEtlcm5lbEJhY2tlbmQgfCBQcm9taXNlPEtlcm5lbEJhY2tlbmQ+LFxuICAgICAgcHJpb3JpdHkgPSAxKTogYm9vbGVhbiB7XG4gICAgaWYgKGJhY2tlbmROYW1lIGluIHRoaXMucmVnaXN0cnlGYWN0b3J5KSB7XG4gICAgICBsb2cud2FybihcbiAgICAgICAgICBgJHtiYWNrZW5kTmFtZX0gYmFja2VuZCB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLiBgICtcbiAgICAgICAgICBgUmV1c2luZyBleGlzdGluZyBiYWNrZW5kIGZhY3RvcnkuYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXSA9IHtmYWN0b3J5LCBwcmlvcml0eX07XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBzZXRCYWNrZW5kKGJhY2tlbmROYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5yZWdpc3RyeUZhY3RvcnlbYmFja2VuZE5hbWVdID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmFja2VuZCBuYW1lICcke2JhY2tlbmROYW1lfScgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCk7XG4gICAgfVxuICAgIHRoaXMuYmFja2VuZE5hbWUgPSBiYWNrZW5kTmFtZTtcbiAgICBpZiAodGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV0gPT0gbnVsbCkge1xuICAgICAgdGhpcy5iYWNrZW5kSW5zdGFuY2UgPSBudWxsO1xuICAgICAgY29uc3Qge3N1Y2Nlc3MsIGFzeW5jSW5pdH0gPSB0aGlzLmluaXRpYWxpemVCYWNrZW5kKGJhY2tlbmROYW1lKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFzeW5jSW5pdCA/IGF3YWl0IHN1Y2Nlc3MgOiBzdWNjZXNzO1xuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmJhY2tlbmRJbnN0YW5jZSA9IHRoaXMucmVnaXN0cnlbYmFja2VuZE5hbWVdO1xuICAgIHRoaXMuc2V0dXBSZWdpc3RlcmVkS2VybmVscygpO1xuICAgIC8vIFJlc2V0IHRoZSBwcm9maWxlci5cbiAgICB0aGlzLnByb2ZpbGVyID0gbmV3IFByb2ZpbGVyKHRoaXMuYmFja2VuZEluc3RhbmNlKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlZ2lzdGVyZWRLZXJuZWxzKCk6IHZvaWQge1xuICAgIGNvbnN0IGtlcm5lbHMgPSBnZXRLZXJuZWxzRm9yQmFja2VuZCh0aGlzLmJhY2tlbmROYW1lKTtcbiAgICBrZXJuZWxzLmZvckVhY2goa2VybmVsID0+IHtcbiAgICAgIGlmIChrZXJuZWwuc2V0dXBGdW5jICE9IG51bGwpIHtcbiAgICAgICAga2VybmVsLnNldHVwRnVuYyh0aGlzLmJhY2tlbmRJbnN0YW5jZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3Bvc2VSZWdpc3RlcmVkS2VybmVscyhiYWNrZW5kTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2VybmVscyA9IGdldEtlcm5lbHNGb3JCYWNrZW5kKGJhY2tlbmROYW1lKTtcbiAgICBrZXJuZWxzLmZvckVhY2goa2VybmVsID0+IHtcbiAgICAgIGlmIChrZXJuZWwuZGlzcG9zZUZ1bmMgIT0gbnVsbCkge1xuICAgICAgICBrZXJuZWwuZGlzcG9zZUZ1bmModGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgYmFja2VuZCBieSBsb29raW5nIHVwIHRoZSBiYWNrZW5kIG5hbWUgaW4gdGhlIGZhY3RvcnlcbiAgICogcmVnaXN0cnkgYW5kIGNhbGxpbmcgdGhlIGZhY3RvcnkgbWV0aG9kLiBSZXR1cm5zIGEgYm9vbGVhbiByZXByZXNlbnRpbmdcbiAgICogd2hldGhlciB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGJhY2tlbmQgc3VjY2VlZGVkLiBUaHJvd3MgYW4gZXJyb3IgaWZcbiAgICogdGhlcmUgaXMgbm8gYmFja2VuZCBpbiB0aGUgZmFjdG9yeSByZWdpc3RyeS5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJhY2tlbmQoYmFja2VuZE5hbWU6IHN0cmluZyk6XG4gICAgICB7c3VjY2VzczogYm9vbGVhbnxQcm9taXNlPGJvb2xlYW4+LCBhc3luY0luaXQ6IGJvb2xlYW59IHtcbiAgICBjb25zdCByZWdpc3RyeUZhY3RvcnlFbnRyeSA9IHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXTtcbiAgICBpZiAocmVnaXN0cnlGYWN0b3J5RW50cnkgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW5ub3QgaW5pdGlhbGl6ZSBiYWNrZW5kICR7YmFja2VuZE5hbWV9LCBubyByZWdpc3RyYXRpb24gZm91bmQuYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhY2tlbmQgPSByZWdpc3RyeUZhY3RvcnlFbnRyeS5mYWN0b3J5KCk7XG4gICAgICAvKiBUZXN0IGlmIHRoZSBmYWN0b3J5IHJldHVybnMgYSBwcm9taXNlLlxuICAgICAgRG9uZSBpbiBhIG1vcmUgbGliZXJhbCB3YXkgdGhhblxuICAgICAgcHJldmlvdXMgJ1Byb21pc2UucmVzb2x2ZShiYWNrZW5kKT09PWJhY2tlbmQnXG4gICAgICBhcyB3ZSBuZWVkZWQgdG8gYWNjb3VudCBmb3IgY3VzdG9tIFByb21pc2VcbiAgICAgIGltcGxlbWVudGF0aW9ucyAoZS5nLiBBbmd1bGFyKSAqL1xuICAgICAgaWYgKGJhY2tlbmQgJiYgIShiYWNrZW5kIGluc3RhbmNlb2YgS2VybmVsQmFja2VuZCkgJiZcbiAgICAgICAgICB0eXBlb2YgYmFja2VuZC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VJZCA9ICsrdGhpcy5wZW5kaW5nQmFja2VuZEluaXRJZDtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9XG4gICAgICAgICAgICBiYWNrZW5kXG4gICAgICAgICAgICAgICAgLnRoZW4oYmFja2VuZEluc3RhbmNlID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIE91dGRhdGVkIHByb21pc2UuIEFub3RoZXIgYmFja2VuZCB3YXMgc2V0IGluIHRoZSBtZWFudGltZS5cbiAgICAgICAgICAgICAgICAgIGlmIChwcm9taXNlSWQgPCB0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0cnlbYmFja2VuZE5hbWVdID0gYmFja2VuZEluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIE91dGRhdGVkIHByb21pc2UuIEFub3RoZXIgYmFja2VuZCB3YXMgc2V0IGluIHRoZSBtZWFudGltZS5cbiAgICAgICAgICAgICAgICAgIGlmIChwcm9taXNlSWQgPCB0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0JhY2tlbmRJbml0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGxvZy53YXJuKGBJbml0aWFsaXphdGlvbiBvZiBiYWNrZW5kICR7YmFja2VuZE5hbWV9IGZhaWxlZGApO1xuICAgICAgICAgICAgICAgICAgbG9nLndhcm4oZXJyLnN0YWNrIHx8IGVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgPSBzdWNjZXNzO1xuICAgICAgICByZXR1cm4ge3N1Y2Nlc3MsIGFzeW5jSW5pdDogdHJ1ZX07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5W2JhY2tlbmROYW1lXSA9IGJhY2tlbmQgYXMgS2VybmVsQmFja2VuZDtcbiAgICAgICAgcmV0dXJuIHtzdWNjZXNzOiB0cnVlLCBhc3luY0luaXQ6IGZhbHNlfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKGBJbml0aWFsaXphdGlvbiBvZiBiYWNrZW5kICR7YmFja2VuZE5hbWV9IGZhaWxlZGApO1xuICAgICAgbG9nLndhcm4oZXJyLnN0YWNrIHx8IGVyci5tZXNzYWdlKTtcbiAgICAgIHJldHVybiB7c3VjY2VzczogZmFsc2UsIGFzeW5jSW5pdDogZmFsc2V9O1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUJhY2tlbmQoYmFja2VuZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghKGJhY2tlbmROYW1lIGluIHRoaXMucmVnaXN0cnlGYWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2JhY2tlbmROYW1lfSBiYWNrZW5kIG5vdCBmb3VuZCBpbiByZWdpc3RyeWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5iYWNrZW5kTmFtZSA9PT0gYmFja2VuZE5hbWUgJiYgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgIT0gbnVsbCkge1xuICAgICAgLy8gVGhlcmUgaXMgYSBwZW5kaW5nIHByb21pc2Ugb2YgdGhlIGJhY2tlbmQgd2Ugd2FudCB0byByZW1vdmUuIE1ha2UgaXRcbiAgICAgIC8vIG9ic29sZXRlLlxuICAgICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXRJZCsrO1xuICAgIH1cblxuICAgIGlmIChiYWNrZW5kTmFtZSBpbiB0aGlzLnJlZ2lzdHJ5KSB7XG4gICAgICB0aGlzLmRpc3Bvc2VSZWdpc3RlcmVkS2VybmVscyhiYWNrZW5kTmFtZSk7XG4gICAgICB0aGlzLnJlZ2lzdHJ5W2JhY2tlbmROYW1lXS5kaXNwb3NlKCk7XG4gICAgICBkZWxldGUgdGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV07XG4gICAgfVxuXG4gICAgZGVsZXRlIHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXTtcblxuICAgIC8vIFVuc2V0IHRoZSBiYWNrZW5kIGlmIGl0IGlzIGFjdGl2ZS5cbiAgICBpZiAodGhpcy5iYWNrZW5kTmFtZSA9PT0gYmFja2VuZE5hbWUpIHtcbiAgICAgIHRoaXMucGVuZGluZ0JhY2tlbmRJbml0ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFja2VuZE5hbWUgPSBudWxsO1xuICAgICAgdGhpcy5iYWNrZW5kSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydGVkQmFja2VuZHMoKTogc3RyaW5nW10ge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJ5RmFjdG9yeSkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJhY2tlbmQgZm91bmQgaW4gcmVnaXN0cnkuJyk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJ5RmFjdG9yeSkuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIEhpZ2hlc3QgcHJpb3JpdHkgY29tZXMgZmlyc3QuXG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeUZhY3RvcnlbYl0ucHJpb3JpdHkgLVxuICAgICAgICAgIHRoaXMucmVnaXN0cnlGYWN0b3J5W2FdLnByaW9yaXR5O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQmFja2VuZHNBbmRSZXR1cm5CZXN0KCk6XG4gICAgICB7bmFtZTogc3RyaW5nLCBhc3luY0luaXQ6IGJvb2xlYW59IHtcbiAgICBjb25zdCBzb3J0ZWRCYWNrZW5kcyA9IHRoaXMuZ2V0U29ydGVkQmFja2VuZHMoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkQmFja2VuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGJhY2tlbmROYW1lID0gc29ydGVkQmFja2VuZHNbaV07XG4gICAgICBjb25zdCB7c3VjY2VzcywgYXN5bmNJbml0fSA9IHRoaXMuaW5pdGlhbGl6ZUJhY2tlbmQoYmFja2VuZE5hbWUpO1xuICAgICAgaWYgKGFzeW5jSW5pdCB8fCBzdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7bmFtZTogYmFja2VuZE5hbWUsIGFzeW5jSW5pdH07XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBpbml0aWFsaXplIGFueSBiYWNrZW5kcywgYWxsIGJhY2tlbmQgaW5pdGlhbGl6YXRpb25zIGAgK1xuICAgICAgICBgZmFpbGVkLmApO1xuICB9XG5cbiAgbW92ZURhdGEoYmFja2VuZDogS2VybmVsQmFja2VuZCwgZGF0YUlkOiBEYXRhSWQpIHtcbiAgICBjb25zdCBpbmZvID0gdGhpcy5zdGF0ZS50ZW5zb3JJbmZvLmdldChkYXRhSWQpO1xuICAgIGNvbnN0IHNyY0JhY2tlbmQgPSBpbmZvLmJhY2tlbmQ7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5yZWFkU3luYyhkYXRhSWQpO1xuICAgIGNvbnN0IHJlZkNvdW50ID0gc3JjQmFja2VuZC5yZWZDb3VudChkYXRhSWQpO1xuICAgIC8vIERlbGV0ZSB0aGUgdGVuc29yIGZyb20gdGhlIG9sZCBiYWNrZW5kIGFuZCBtb3ZlIGl0IHRvIHRoZSBuZXdcbiAgICAvLyBiYWNrZW5kLlxuICAgIHNyY0JhY2tlbmQuZGlzcG9zZURhdGEoZGF0YUlkLCB0cnVlKTtcbiAgICBpbmZvLmJhY2tlbmQgPSBiYWNrZW5kO1xuICAgIGJhY2tlbmQubW92ZShkYXRhSWQsIHZhbHVlcywgaW5mby5zaGFwZSwgaW5mby5kdHlwZSwgcmVmQ291bnQpO1xuICAgIGlmICh0aGlzLnNob3VsZENoZWNrRm9yTWVtTGVha3MoKSkge1xuICAgICAgLy8gVHJhY2sgdGhlIG51bWJlciBvZiBtb3ZlcyBkdXJpbmcgYSBrZXJuZWwgZXhlY3V0aW9uIHRvIGNvcnJlY3RseVxuICAgICAgLy8gZGV0ZWN0IG1lbW9yeSBsZWFrcy5cbiAgICAgIHRoaXMuc3RhdGUubnVtRGF0YU1vdmVzU3RhY2tbdGhpcy5zdGF0ZS5udW1EYXRhTW92ZXNTdGFjay5sZW5ndGggLSAxXSsrO1xuICAgIH1cbiAgfVxuXG4gIHRpZHk8VCBleHRlbmRzIFRlbnNvckNvbnRhaW5lcj4obmFtZU9yRm46IHN0cmluZ3xTY29wZUZuPFQ+LCBmbj86IFNjb3BlRm48VD4pOlxuICAgICAgVCB7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IG51bGw7XG4gICAgaWYgKGZuID09IG51bGwpIHtcbiAgICAgIC8vIENhbGxlZCB3aXRoIG9ubHkgMSBhcmd1bWVudC5cbiAgICAgIGlmICh0eXBlb2YgbmFtZU9yRm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIHRpZHkoKScpO1xuICAgICAgfVxuICAgICAgZm4gPSBuYW1lT3JGbjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FsbGVkIHdpdGggMiBhcmd1bWVudHMuXG4gICAgICBpZiAodHlwZW9mIG5hbWVPckZuICE9PSAnc3RyaW5nJyAmJiAhKG5hbWVPckZuIGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnV2hlbiBjYWxsaW5nIHdpdGggdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGFyZ3VtZW50ICcgK1xuICAgICAgICAgICAgJ3RvIHRpZHkoKSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdXaGVuIGNhbGxpbmcgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgMm5kIGFyZ3VtZW50ICcgK1xuICAgICAgICAgICAgJ3RvIHRpZHkoKSBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIG5hbWUgPSBuYW1lT3JGbiBhcyBzdHJpbmc7XG4gICAgICAvLyBUT0RPKG5zdGhvcmF0LHNtaWxrb3YpOiBEbyBvcGVyYXRpb24gbG9nZ2luZyBhbmQgcGVyZm9ybWFuY2VcbiAgICAgIC8vIHByb2ZpbGluZy5cbiAgICB9XG4gICAgbGV0IHJlc3VsdDogVDtcbiAgICByZXR1cm4gdGhpcy5zY29wZWRSdW4oXG4gICAgICAgICgpID0+IHRoaXMuc3RhcnRTY29wZShuYW1lKSwgKCkgPT4gdGhpcy5lbmRTY29wZShyZXN1bHQpLCAoKSA9PiB7XG4gICAgICAgICAgcmVzdWx0ID0gZm4oKTtcbiAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJldHVybiBhIFByb21pc2UgaW5zaWRlIG9mIHRpZHkuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY29wZWRSdW48VD4oc3RhcnQ6ICgpID0+IHZvaWQsIGVuZDogKCkgPT4gdm9pZCwgZjogKCkgPT4gVCk6IFQge1xuICAgIHN0YXJ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGYoKTtcbiAgICAgIGVuZCgpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgZW5kKCk7XG4gICAgICB0aHJvdyBleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBuZXh0VGVuc29ySWQgPSAwO1xuICBwcml2YXRlIG5leHRUZW5zb3JJZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBFbmdpbmUubmV4dFRlbnNvcklkKys7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBuZXh0VmFyaWFibGVJZCA9IDA7XG4gIHByaXZhdGUgbmV4dFZhcmlhYmxlSWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRW5naW5lLm5leHRWYXJpYWJsZUlkKys7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluc3RlYWQgb2YgdGhlIHB1YmxpYy1mYWNpbmcgdGVuc29yLmNsb25lKCkgd2hlblxuICAgKiBzYXZpbmcgYSB0ZW5zb3IgZm9yIGJhY2t3YXJkcyBwYXNzLiBJdCBtYWtlcyBzdXJlIHRvIGFkZCB0aGUgY2xvbmVcbiAgICogb3BlcmF0aW9uIHRvIHRoZSB0YXBlIHJlZ2FyZGxlc3Mgb2YgYmVpbmcgY2FsbGVkIGluc2lkZSBhIGtlcm5lbFxuICAgKiBleGVjdXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNsb25lKHg6IFRlbnNvcik6IFRlbnNvciB7XG4gICAgY29uc3QgeTogVGVuc29yID0gRU5HSU5FLnJ1bktlcm5lbChJZGVudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt4fSBhcyB1bmtub3duIGFzIE5hbWVkVGVuc29yTWFwKTtcbiAgICBjb25zdCBpbnB1dHMgPSB7eH07XG4gICAgY29uc3QgZ3JhZCA9IChkeTogVGVuc29yKSA9PiAoe1xuICAgICAgeDogKCkgPT4ge1xuICAgICAgICBjb25zdCBkdHlwZSA9ICdmbG9hdDMyJztcbiAgICAgICAgY29uc3QgZ3JhZElucHV0cyA9IHt4OiBkeX07XG4gICAgICAgIGNvbnN0IGF0dHJzID0ge2R0eXBlfTtcblxuICAgICAgICByZXR1cm4gRU5HSU5FLnJ1bktlcm5lbChcbiAgICAgICAgICAgICAgICAgICBDYXN0LCBncmFkSW5wdXRzIGFzIHVua25vd24gYXMgTmFtZWRUZW5zb3JNYXAsXG4gICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11bm5lY2Vzc2FyeS10eXBlLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgIGF0dHJzIGFzIHVua25vd24gYXMgTmFtZWRBdHRyTWFwKSBhcyBUZW5zb3I7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2F2ZWQ6IFRlbnNvcltdID0gW107XG4gICAgdGhpcy5hZGRUYXBlTm9kZSh0aGlzLnN0YXRlLmFjdGl2ZVNjb3BlLm5hbWUsIGlucHV0cywgW3ldLCBncmFkLCBzYXZlZCwge30pO1xuICAgIHJldHVybiB5O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBrZXJuZWwgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgcmV0dXJuIHRoZSBvdXRwdXQgdGVuc29yLlxuICAgKlxuICAgKiBAcGFyYW0ga2VybmVsTmFtZSBUaGUgbmFtZSBvZiB0aGUga2VybmVsIHRvIGV4ZWN1dGUuXG4gICAqIEBwYXJhbSBpbnB1dHMgQSBtYXAgb2YgaW5wdXQgbmFtZXMgdG8gdGVuc29ycy5cbiAgICogQHBhcmFtIGF0dHJzIEEgbWFwIG9mIGF0dHJpYnV0ZSBuYW1lcyB0byB0aGVpciB2YWx1ZXMuIEFuIGF0dHJpYnV0ZSBpcyBhXG4gICAqICAgICBwcmltaXRpdmUgKG5vbi10ZW5zb3IpIGlucHV0IHRvIHRoZSBrZXJuZWwuXG4gICAqIEBwYXJhbSBpbnB1dHNUb1NhdmUgQSBsaXN0IG9mIHRlbnNvcnMsIGlucHV0cyB0byBzYXZlIGZvciB0aGUgYmFja3Byb3BcbiAgICogICAgIGNvbXB1dGF0aW9uLlxuICAgKiBAcGFyYW0gb3V0cHV0c1RvU2F2ZSBBIGxpc3Qgb2YgYm9vbGVhbnMsIHNwZWNpZnlpbmcgd2hpY2ggb3V0cHV0IHRvIHNhdmVcbiAgICogICAgIGZvciB0aGUgYmFja3Byb3AgY29tcHV0YXRpb24uIFRoZXNlIGFyZSBib29sZWFucyBzaW5jZSB0aGUgb3V0cHV0XG4gICAqIHRlbnNvcnMgYXJlIG5vdCB2aXNpYmxlIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcnVuS2VybmVsPFQgZXh0ZW5kcyBUZW5zb3J8VGVuc29yW10+KFxuICAgICAga2VybmVsTmFtZTogc3RyaW5nLCBpbnB1dHM6IE5hbWVkVGVuc29yTWFwLCBhdHRycz86IE5hbWVkQXR0ck1hcCk6IFQge1xuICAgIGlmICh0aGlzLmJhY2tlbmROYW1lID09IG51bGwpIHtcbiAgICAgIC8vIGJhY2tlbmQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldCAoYmFja2VuZCBpbml0aWFsaXphdGlvbiBpcyBsYXp5XG4gICAgICAvLyBjYW4gYmUgZGVmZXJyZWQgdW50aWwgYW4gb3AvIGtlcm5lbCBpcyBydW4pLlxuICAgICAgLy8gVGhlIGJlbG93IGdldHRlciBoYXMgc2lkZSBlZmZlY3RzIHRoYXQgd2lsbCB0cnkgdG8gaW5pdGlhbGl6ZSB0aGVcbiAgICAgIC8vIGJhY2tlbmQgYW5kIHNldCBwcm9wZXJ0aWVzIGxpa2UgdGhpcy5iYWNrZW5kTmFtZVxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11bnVzZWQtZXhwcmVzc2lvblxuICAgICAgdGhpcy5iYWNrZW5kO1xuICAgIH1cbiAgICBjb25zdCBoYXNLZXJuZWwgPSBnZXRLZXJuZWwoa2VybmVsTmFtZSwgdGhpcy5iYWNrZW5kTmFtZSkgIT0gbnVsbDtcbiAgICBpZiAoIWhhc0tlcm5lbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXJuZWwgJyR7a2VybmVsTmFtZX0nIG5vdCByZWdpc3RlcmVkIGZvciBiYWNrZW5kICcke1xuICAgICAgICAgIHRoaXMuYmFja2VuZE5hbWV9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ydW5LZXJuZWxGdW5jKHtrZXJuZWxOYW1lLCBpbnB1dHMsIGF0dHJzfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZENoZWNrRm9yTWVtTGVha3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuRU5WLmdldEJvb2woJ0lTX1RFU1QnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tLZXJuZWxGb3JNZW1MZWFrKFxuICAgICAga2VybmVsTmFtZTogc3RyaW5nLCBudW1EYXRhSWRzQmVmb3JlOiBudW1iZXIsXG4gICAgICBvdXRJbmZvczogVGVuc29ySW5mb1tdKTogdm9pZCB7XG4gICAgY29uc3QgbnVtRGF0YUlkc0FmdGVyID0gdGhpcy5iYWNrZW5kLm51bURhdGFJZHMoKTtcblxuICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgZGF0YSBpZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGtlcm5lbC5cbiAgICBsZXQgbnVtT3V0cHV0RGF0YUlkcyA9IDA7XG4gICAgb3V0SW5mb3MuZm9yRWFjaChpbmZvID0+IHtcbiAgICAgIC8vIENvbXBsZXggbnVtYmVycyBhbGxvY2F0ZSAzIGRhdGEgaWRzLCBvbmUgZm9yICdyZWFsJywgb25lIGZvclxuICAgICAgLy8gJ2ltYWdpbmFyeScsIGFuZCBvbmUgZm9yIHRoZSBjb250YWluZXIgdGhhdCBob2xkcyB0aGUgZm9ybWVyIHR3by5cbiAgICAgIG51bU91dHB1dERhdGFJZHMgKz0gKGluZm8uZHR5cGUgPT09ICdjb21wbGV4NjQnID8gMyA6IDEpO1xuICAgIH0pO1xuXG4gICAgLy8gQWNjb3VudCBmb3IgdGhlIG51bWJlciBvZiBtb3ZlcyBkdXJpbmcga2VybmVsIGV4ZWN1dGlvbi4gQSBcImRhdGEgbW92ZVwiXG4gICAgLy8gY2FuIGhhcHBlbiBpbiB0aGUgbWlkZGxlIG9mIGEga2VybmVsIGV4ZWN1dGlvbiwgcGxhY2luZyBhIG5ldyAoa2V5LHZhbHVlKVxuICAgIC8vIHBhaXIgaW4gdGhlIGRhdGEgc3RvcmFnZS4gU2luY2UgZGF0YSBtb3ZlcyBoYXZlIG5ldCB6ZXJvIGVmZmVjdCAod2VcbiAgICAvLyBhbHdheXMgcmVtb3ZlIHRoZSBkYXRhIGZyb20gdGhlIG9sZCBiYWNrZW5kKSwgd2UgaGF2ZSB0byBjYW5jZWwgdGhlbSBvdXRcbiAgICAvLyB3aGVuIGRldGVjdGluZyBtZW1vcnkgbGVha3MuXG4gICAgY29uc3QgbnVtTW92ZXMgPVxuICAgICAgICB0aGlzLnN0YXRlLm51bURhdGFNb3Zlc1N0YWNrW3RoaXMuc3RhdGUubnVtRGF0YU1vdmVzU3RhY2subGVuZ3RoIC0gMV07XG4gICAgY29uc3QgZGF0YUlkc0xlYWtlZCA9XG4gICAgICAgIG51bURhdGFJZHNBZnRlciAtIG51bURhdGFJZHNCZWZvcmUgLSBudW1PdXRwdXREYXRhSWRzIC0gbnVtTW92ZXM7XG4gICAgaWYgKGRhdGFJZHNMZWFrZWQgPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEJhY2tlbmQgJyR7dGhpcy5iYWNrZW5kTmFtZX0nIGhhcyBhbiBpbnRlcm5hbCBtZW1vcnkgbGVhayBgICtcbiAgICAgICAgICBgKCR7ZGF0YUlkc0xlYWtlZH0gZGF0YSBpZHMpIGFmdGVyIHJ1bm5pbmcgJyR7a2VybmVsTmFtZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIGhlbHBlciBtZXRob2QgdG8gZXhlY3V0ZSBhIGtlcm5lbCBGdW5jXG4gICAqXG4gICAqIFVzZSBgcnVuS2VybmVsYCB0byBleGVjdXRlIGtlcm5lbHMgZnJvbSBvdXRzaWRlIG9mIGVuZ2luZS5cbiAgICovXG4gIHByaXZhdGUgcnVuS2VybmVsRnVuYzxUIGV4dGVuZHMgVGVuc29yfFRlbnNvcltdLCBJIGV4dGVuZHMgTmFtZWRUZW5zb3JNYXA+KFxuICAgICAga2VybmVsUGFyYW1zOiBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPnxcbiAgICAgIEN1c3RvbUdyYWRLZXJuZWxJbnZvY2F0aW9uPFQsIEk+KTogVCB7XG4gICAgbGV0IG91dHB1dHM6IFRlbnNvcltdO1xuICAgIGxldCBzYXZlZDogVGVuc29yW10gPSBbXTtcbiAgICBjb25zdCBpc1RhcGVPbiA9IHRoaXMuaXNUYXBlT24oKTtcblxuICAgIGNvbnN0IHN0YXJ0aW5nQnl0ZWNvdW50ID0gdGhpcy5zdGF0ZS5udW1CeXRlcztcbiAgICBjb25zdCBzdGFydGluZ051bVRlbnNvcnMgPSB0aGlzLnN0YXRlLm51bVRlbnNvcnM7XG5cbiAgICBpZiAodGhpcy5zaG91bGRDaGVja0Zvck1lbUxlYWtzKCkpIHtcbiAgICAgIHRoaXMuc3RhdGUubnVtRGF0YU1vdmVzU3RhY2sucHVzaCgwKTtcbiAgICB9XG5cbiAgICBsZXQga2VybmVsRnVuYzogKCkgPT4gVGVuc29yW107XG4gICAgaWYgKHRoaXMuYmFja2VuZE5hbWUgPT0gbnVsbCkge1xuICAgICAgLy8gYmFja2VuZCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0IChiYWNrZW5kIGluaXRpYWxpemF0aW9uIGlzIGxhenlcbiAgICAgIC8vIGNhbiBiZSBkZWZlcnJlZCB1bnRpbCBhbiBvcC8ga2VybmVsIGlzIHJ1bikuXG4gICAgICAvLyBUaGUgYmVsb3cgZ2V0dGVyIGhhcyBzaWRlIGVmZmVjdHMgdGhhdCB3aWxsIHRyeSB0byBpbml0aWFsaXplIHRoZVxuICAgICAgLy8gYmFja2VuZCBhbmQgc2V0IHByb3BlcnRpZXMgbGlrZSB0aGlzLmJhY2tlbmROYW1lXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICB0aGlzLmJhY2tlbmQ7XG4gICAgfVxuXG4gICAgbGV0IG91dDogVGVuc29ySW5mb3xUZW5zb3JJbmZvW107XG5cbiAgICBjb25zdCBrZXJuZWxPclNjb3BlTmFtZSA9IGlzUmVnaXN0ZXJlZEtlcm5lbEludm9jYXRpb24oa2VybmVsUGFyYW1zKSA/XG4gICAgICAgIGtlcm5lbFBhcmFtcy5rZXJuZWxOYW1lIDpcbiAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZSAhPSBudWxsID8gdGhpcy5zdGF0ZS5hY3RpdmVTY29wZS5uYW1lIDogJyc7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGtlcm5lbEZ1bmMgZnJvbSBlaXRoZXIgYSByZWdpc3RlcmVkIGtlcm5lbCBPUiBwYXNzZWQgaW5cbiAgICAvLyBmb3J3YXJkL2JhY2t3YXJkIGZ1bmN0aW9ucyAodXNlZCBieSBjdXN0b20gZ3JhZCkuIEluIHRoaXMgY29udGV4dCBhXG4gICAgLy8ga2VybmVsRnVuYyB3cmFwcyBhIGtlcm5lbCBpbXBsZW1lbnRhdGlvbiB3aXRoIHNvbWUgYm9va2tlZXBpbmcuXG5cbiAgICBpZiAoaXNSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbihrZXJuZWxQYXJhbXMpKSB7XG4gICAgICBjb25zdCB7a2VybmVsTmFtZSwgaW5wdXRzLCBhdHRyc30gPSBrZXJuZWxQYXJhbXM7XG4gICAgICBpZiAodGhpcy5iYWNrZW5kTmFtZSA9PSBudWxsKSB7XG4gICAgICAgIC8vIGJhY2tlbmQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldCAoYmFja2VuZCBpbml0aWFsaXphdGlvbiBpcyBsYXp5XG4gICAgICAgIC8vIGNhbiBiZSBkZWZlcnJlZCB1bnRpbCBhbiBvcC8ga2VybmVsIGlzIHJ1bikuXG4gICAgICAgIC8vIFRoZSBiZWxvdyBnZXR0ZXIgaGFzIHNpZGUgZWZmZWN0cyB0aGF0IHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgdGhlXG4gICAgICAgIC8vIGJhY2tlbmQgYW5kIHNldCBwcm9wZXJ0aWVzIGxpa2UgdGhpcy5iYWNrZW5kTmFtZVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICAgIHRoaXMuYmFja2VuZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtlcm5lbCA9IGdldEtlcm5lbChrZXJuZWxOYW1lLCB0aGlzLmJhY2tlbmROYW1lKTtcbiAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgIGtlcm5lbCAhPSBudWxsLFxuICAgICAgICAgICgpID0+IGBDYW5ub3QgZmluZCByZWdpc3RlcmVkIGtlcm5lbCAnJHtrZXJuZWxOYW1lfScgZm9yIGJhY2tlbmQgJyR7XG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZE5hbWV9J2ApO1xuXG4gICAgICBrZXJuZWxGdW5jID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBudW1EYXRhSWRzQmVmb3JlID0gdGhpcy5iYWNrZW5kLm51bURhdGFJZHMoKTtcbiAgICAgICAgb3V0ID0ga2VybmVsLmtlcm5lbEZ1bmMoe2lucHV0cywgYXR0cnMsIGJhY2tlbmQ6IHRoaXMuYmFja2VuZH0pO1xuICAgICAgICBjb25zdCBvdXRJbmZvcyA9IEFycmF5LmlzQXJyYXkob3V0KSA/IG91dCA6IFtvdXRdO1xuICAgICAgICBpZiAodGhpcy5zaG91bGRDaGVja0Zvck1lbUxlYWtzKCkpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrS2VybmVsRm9yTWVtTGVhayhrZXJuZWxOYW1lLCBudW1EYXRhSWRzQmVmb3JlLCBvdXRJbmZvcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvdXRUZW5zb3JzID0gb3V0SW5mb3MubWFwKChvdXRJbmZvOiBUZW5zb3JJbmZvfFRlbnNvcikgPT4ge1xuICAgICAgICAgIC8vIHRvZG8gKHlhc3NvZ2JhKSByZW1vdmUgdGhpcyBvcHRpb24gKFRlbnNvcikgd2hlbiBub2RlIGJhY2tlbmRcbiAgICAgICAgICAvLyBtZXRob2RzIGhhdmUgYmVlbiBtb2R1bGFyaXplZCBhbmQgdGhleSBhbGwgcmV0dXJuIHRlbnNvckluZm8uXG4gICAgICAgICAgLy8gVGVuc29ySW5mb3MgZG8gbm90IGhhdmUgYSByYW5rIGF0dHJpYnV0ZS5cbiAgICAgICAgICBpZiAoKG91dEluZm8gYXMgVGVuc29yKS5yYW5rICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvdXRJbmZvIGFzIFRlbnNvcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVRlbnNvckZyb21UZW5zb3JJbmZvKG91dEluZm8pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIGFueSByZXF1aXJlZCBpbnB1dHMgYW5kIG91dHB1dHMuXG5cbiAgICAgICAgLy8gRG8gbm90IHNhdmUgdW5sZXNzIHdlIGFyZSByZWNvcmRpbmcgdG8gdGhlIHRhcGUuIE90aGVyd2lzZSBpdCB3b3VsZFxuICAgICAgICAvLyBjYXVzZSBhIG1lbSBsZWFrIHNpbmNlIHRoZXJlIHdvdWxkIGJlIG5vIGJhY2twcm9wIGZvciB0aGVzZSB0ZW5zb3JzXG4gICAgICAgIC8vICh3aGljaCB3b3VsZCBvdGhlcndpc2UgZGlzcG9zZSB0aGVtKS5cbiAgICAgICAgaWYgKGlzVGFwZU9uKSB7XG4gICAgICAgICAgY29uc3QgdGVuc29yc1RvU2F2ZSA9XG4gICAgICAgICAgICAgIHRoaXMuZ2V0VGVuc29yc0ZvckdyYWRpZW50KGtlcm5lbE5hbWUsIGlucHV0cywgb3V0VGVuc29ycyk7XG4gICAgICAgICAgc2F2ZWQgPSB0aGlzLnNhdmVUZW5zb3JzRm9yQmFja3dhcmRNb2RlKHRlbnNvcnNUb1NhdmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRUZW5zb3JzO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge2ZvcndhcmRGdW5jfSA9IGtlcm5lbFBhcmFtcztcbiAgICAgIC8vIFJ1bm5pbmcgYSBjdXN0b21HcmFkIG9wLlxuICAgICAgY29uc3Qgc2F2ZUZ1bmM6IEdyYWRTYXZlRnVuYyA9ICh0ZW5zb3JzKSA9PiB7XG4gICAgICAgIC8vIERvIG5vdCBzYXZlIHVubGVzcyB3ZSBhcmUgcmVjb3JkaW5nIHRvIHRoZSB0YXBlLiBPdGhlcndpc2UgaXQgd291bGRcbiAgICAgICAgLy8gY2F1c2UgYSBtZW0gbGVhayBzaW5jZSB3ZSB3b3VsZCBuZXZlciBydW4gYmFja3Byb3AsIHdoaWNoIGRpc3Bvc2VzXG4gICAgICAgIC8vIHRoZSBrZXB0IHRlbnNvcnMuXG4gICAgICAgIGlmICghaXNUYXBlT24pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2F2ZWQgPSB0ZW5zb3JzLm1hcCh0ZW5zb3IgPT4gdGhpcy5rZWVwKHRoaXMuY2xvbmUodGVuc29yKSkpO1xuICAgICAgfTtcblxuICAgICAga2VybmVsRnVuYyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgbnVtRGF0YUlkc0JlZm9yZSA9IHRoaXMuYmFja2VuZC5udW1EYXRhSWRzKCk7XG4gICAgICAgIG91dCA9IHRoaXMudGlkeSgoKSA9PiBmb3J3YXJkRnVuYyh0aGlzLmJhY2tlbmQsIHNhdmVGdW5jKSk7XG4gICAgICAgIGNvbnN0IG91dHMgPSAoQXJyYXkuaXNBcnJheShvdXQpID8gb3V0IDogW291dF0pIGFzIFRlbnNvcltdO1xuICAgICAgICBpZiAodGhpcy5zaG91bGRDaGVja0Zvck1lbUxlYWtzKCkpIHtcbiAgICAgICAgICAvLyBTY29wZSBuYW1lIGlzIHVzZWQgdG8gcHJpbnQgYSBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSBpZiBuZWVkZWQuXG4gICAgICAgICAgdGhpcy5jaGVja0tlcm5lbEZvck1lbUxlYWsoa2VybmVsT3JTY29wZU5hbWUsIG51bURhdGFJZHNCZWZvcmUsIG91dHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRzO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIFJ1biB0aGUga2VybmVsRnVuYy4gT3B0aW9uYWxseSBwcm9maWxpbmcgaXQuXG4gICAgLy9cbiAgICBjb25zdCB7aW5wdXRzLCBhdHRyc30gPSBrZXJuZWxQYXJhbXM7XG4gICAgY29uc3QgYmFja3dhcmRzRnVuYyA9IGlzUmVnaXN0ZXJlZEtlcm5lbEludm9jYXRpb24oa2VybmVsUGFyYW1zKSA/XG4gICAgICAgIG51bGwgOlxuICAgICAgICBrZXJuZWxQYXJhbXMuYmFja3dhcmRzRnVuYztcblxuICAgIGxldCBrZXJuZWxQcm9maWxlOiBLZXJuZWxQcm9maWxlO1xuICAgIHRoaXMuc2NvcGVkUnVuKFxuICAgICAgICAvLyBTdG9wIHJlY29yZGluZyB0byBhIHRhcGUgd2hlbiBydW5uaW5nIGEga2VybmVsLlxuICAgICAgICAoKSA9PiB0aGlzLnN0YXRlLmtlcm5lbERlcHRoKyssICgpID0+IHRoaXMuc3RhdGUua2VybmVsRGVwdGgtLSwgKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5FTlYuZ2V0Qm9vbCgnREVCVUcnKSAmJiAhdGhpcy5zdGF0ZS5wcm9maWxpbmcpIHtcbiAgICAgICAgICAgIG91dHB1dHMgPSBrZXJuZWxGdW5jKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtlcm5lbFByb2ZpbGUgPSB0aGlzLnByb2ZpbGVyLnByb2ZpbGVLZXJuZWwoXG4gICAgICAgICAgICAgICAga2VybmVsT3JTY29wZU5hbWUsIGlucHV0cywgKCkgPT4ga2VybmVsRnVuYygpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLkVOVi5nZXRCb29sKCdERUJVRycpKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZXIubG9nS2VybmVsUHJvZmlsZShrZXJuZWxQcm9maWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dHB1dHMgPSBrZXJuZWxQcm9maWxlLm91dHB1dHM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIGlmIChpc1RhcGVPbikge1xuICAgICAgdGhpcy5hZGRUYXBlTm9kZShcbiAgICAgICAgICBrZXJuZWxPclNjb3BlTmFtZSwgaW5wdXRzLCBvdXRwdXRzLCBiYWNrd2FyZHNGdW5jLCBzYXZlZCwgYXR0cnMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlLnByb2ZpbGluZykge1xuICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlLmtlcm5lbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGtlcm5lbE9yU2NvcGVOYW1lLFxuICAgICAgICBieXRlc0FkZGVkOiB0aGlzLnN0YXRlLm51bUJ5dGVzIC0gc3RhcnRpbmdCeXRlY291bnQsXG4gICAgICAgIHRvdGFsQnl0ZXNTbmFwc2hvdDogdGhpcy5zdGF0ZS5udW1CeXRlcyxcbiAgICAgICAgdGVuc29yc0FkZGVkOiB0aGlzLnN0YXRlLm51bVRlbnNvcnMgLSBzdGFydGluZ051bVRlbnNvcnMsXG4gICAgICAgIHRvdGFsVGVuc29yc1NuYXBzaG90OiB0aGlzLnN0YXRlLm51bVRlbnNvcnMsXG4gICAgICAgIGlucHV0U2hhcGVzOiBPYmplY3Qua2V5cyhpbnB1dHMpLm1hcChcbiAgICAgICAgICAgIGtleSA9PiBpbnB1dHNba2V5XSAhPSBudWxsID8gaW5wdXRzW2tleV0uc2hhcGUgOiBudWxsKSxcbiAgICAgICAgb3V0cHV0U2hhcGVzOiBvdXRwdXRzLm1hcChpdGVtID0+IGl0ZW0uc2hhcGUpLFxuICAgICAgICBrZXJuZWxUaW1lTXM6IGtlcm5lbFByb2ZpbGUudGltZU1zLFxuICAgICAgICBleHRyYUluZm86IGtlcm5lbFByb2ZpbGUuZXh0cmFJbmZvXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIChBcnJheS5pc0FycmF5KG91dCkgPyBvdXRwdXRzIDogb3V0cHV0c1swXSkgYXMgVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0ZW5zb3JzIHVzZWQgaW4gZm9yd2FyZCBtb2RlIGZvciB1c2UgaW4gYmFja3dhcmQgbW9kZS5cbiAgICpcbiAgICogQHBhcmFtIHRlbnNvcnMgdGhlIGxpc3Qgb2YgdGVuc29ycyB0byBzYXZlLlxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlVGVuc29yc0ZvckJhY2t3YXJkTW9kZSh0ZW5zb3JzOiBUZW5zb3JbXSk6IFRlbnNvcltdIHtcbiAgICBjb25zdCBzYXZlZCA9IHRlbnNvcnMubWFwKHRlbnNvciA9PiB0aGlzLmtlZXAodGhpcy5jbG9uZSh0ZW5zb3IpKSk7XG4gICAgcmV0dXJuIHNhdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIHRlbnNvcnMgdG8gc2F2ZSBmb3IgYSBnaXZlbiBncmFkaWVudCBjYWxjdWxhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGtlcm5lbE5hbWUgbmFtZSBvZiBrZXJuZWwgdG8gbG9vayB1cCBncmFkaWVudCBmb3IuXG4gICAqIEBwYXJhbSBpbnB1dHMgYSBtYXAgb2YgaW5wdXQgdGVuc29ycy5cbiAgICogQHBhcmFtIG91dHB1dHMgYW4gYXJyYXkgb2Ygb3V0cHV0IHRlbnNvcnMgZnJvbSBmb3J3YXJkIG1vZGUgb2Yga2VybmVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUZW5zb3JzRm9yR3JhZGllbnQoXG4gICAgICBrZXJuZWxOYW1lOiBzdHJpbmcsIGlucHV0czogTmFtZWRUZW5zb3JNYXAsXG4gICAgICBvdXRwdXRzOiBUZW5zb3JbXSk6IFRlbnNvcltdfG51bGwge1xuICAgIGNvbnN0IGdyYWRDb25maWcgPSBnZXRHcmFkaWVudChrZXJuZWxOYW1lKTtcbiAgICBpZiAoZ3JhZENvbmZpZyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpbnB1dHNUb1NhdmU6IHN0cmluZ1tdID0gZ3JhZENvbmZpZy5pbnB1dHNUb1NhdmUgfHwgW107XG4gICAgICBjb25zdCBvdXRwdXRzVG9TYXZlOiBib29sZWFuW10gPSBncmFkQ29uZmlnLm91dHB1dHNUb1NhdmUgfHwgW107XG5cbiAgICAgIC8vIElmIHNhdmVBbGxJbnB1dHMgaXMgdHJ1ZSwgYWxsIGlucHV0cyB3aWxsIGJlIHNhdmVkLiBPdGhlcndpc2UsIGlucHV0c1xuICAgICAgLy8gc3BlY2lmaWVkIGluIGlucHV0c1RvU2F2ZSB3aWxsIGJlIHNhdmVkLlxuICAgICAgbGV0IGlucHV0VGVuc29yc1RvU2F2ZTogVGVuc29yW107XG4gICAgICBpZiAoZ3JhZENvbmZpZy5zYXZlQWxsSW5wdXRzKSB7XG4gICAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpbnB1dHMpLFxuICAgICAgICAgICAgKCkgPT4gJ3NhdmVBbGxJbnB1dHMgaXMgdHJ1ZSwgZXhwZWN0ZWQgaW5wdXRzIHRvIGJlIGFuIGFycmF5LicpO1xuXG4gICAgICAgIGlucHV0VGVuc29yc1RvU2F2ZSA9IE9iamVjdC5rZXlzKGlucHV0cykubWFwKChrZXkpID0+IGlucHV0c1trZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlucHV0VGVuc29yc1RvU2F2ZSA9IGlucHV0c1RvU2F2ZS5tYXAoKGlucHV0TmFtZSkgPT4gaW5wdXRzW2lucHV0TmFtZV0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdXRwdXRUZW5zb3JzVG9TYXZlOiBUZW5zb3JbXSA9XG4gICAgICAgICAgb3V0cHV0cy5maWx0ZXIoKF8sIGkpID0+IG91dHB1dHNUb1NhdmVbaV0pO1xuXG4gICAgICByZXR1cm4gaW5wdXRUZW5zb3JzVG9TYXZlLmNvbmNhdChvdXRwdXRUZW5zb3JzVG9TYXZlKTtcbiAgICB9XG4gICAgLy8gV2UgcmV0dXJuIGFuIGVtcHR5IGxpc3QgcmF0aGVyIHRoYW4gdGhyb3cgYW4gZXJyb3IgYmVjYXVzZSB0aGUga2VybmVsIHdlXG4gICAgLy8gYXJlIGxvb2tpbmcgdXAgbWF5IG5vdCBhY3R1YWxseSBiZSByZWxldmFudCB0byBiYWNrcHJvcGluZyB0aHJvdWdoIHRoZVxuICAgIC8vIG92ZXJhbGwgZnVuY3Rpb25cbiAgICAvL1xuICAgIC8vIFNlZSAnZG9lcyBub3QgZXJyb3IgaWYgaXJyZWxldmFudCAocHJ1bmVkKSBvcHMgYXJlIG1pc3NpbmcgZ3JhZHMnIHRlc3RcbiAgICAvLyBpbiBncmFkaWVudHNfdGVzdC50cyBmb3IgYW4gZXhhbXBsZS5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgYnkgcHVibGljIEFQSXMgZm9yIHRlbnNvciBjcmVhdGlvbi4gTWFrZXMgYSBuZXdcbiAgICogdGVuc29yIHdpdGggdGhlIHByb3ZpZGVkIHNoYXBlLCBkdHlwZSBhbmQgdmFsdWVzLiBJdCBhbHdheXNcbiAgICogY3JlYXRlcyBhIG5ldyBkYXRhIGlkIGFuZCB3cml0ZXMgdGhlIHZhbHVlcyB0byB0aGUgdW5kZXJseWluZyBiYWNrZW5kLlxuICAgKi9cbiAgbWFrZVRlbnNvcihcbiAgICAgIHZhbHVlczogRGF0YVZhbHVlcywgc2hhcGU6IG51bWJlcltdLCBkdHlwZTogRGF0YVR5cGUsXG4gICAgICBiYWNrZW5kPzogS2VybmVsQmFja2VuZCk6IFRlbnNvciB7XG4gICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlcyBwYXNzZWQgdG8gZW5naW5lLm1ha2VUZW5zb3IoKSBhcmUgbnVsbCcpO1xuICAgIH1cbiAgICBkdHlwZSA9IGR0eXBlIHx8ICdmbG9hdDMyJztcbiAgICBiYWNrZW5kID0gYmFja2VuZCB8fCB0aGlzLmJhY2tlbmQ7XG4gICAgbGV0IGJhY2tlbmRWYWxzID0gdmFsdWVzIGFzIEJhY2tlbmRWYWx1ZXM7XG4gICAgaWYgKGR0eXBlID09PSAnc3RyaW5nJyAmJiB1dGlsLmlzU3RyaW5nKHZhbHVlc1swXSkpIHtcbiAgICAgIGJhY2tlbmRWYWxzID0gKHZhbHVlcyBhcyBzdHJpbmdbXSkubWFwKGQgPT4gdXRpbC5lbmNvZGVTdHJpbmcoZCkpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhSWQgPSBiYWNrZW5kLndyaXRlKGJhY2tlbmRWYWxzLCBzaGFwZSwgZHR5cGUpO1xuICAgIGNvbnN0IHQgPSBuZXcgVGVuc29yKHNoYXBlLCBkdHlwZSwgZGF0YUlkLCB0aGlzLm5leHRUZW5zb3JJZCgpKTtcbiAgICB0aGlzLnRyYWNrVGVuc29yKHQsIGJhY2tlbmQpO1xuXG4gICAgLy8gQ291bnQgYnl0ZXMgZm9yIHN0cmluZyB0ZW5zb3JzLlxuICAgIGlmIChkdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGRhdGFJZCk7XG4gICAgICBjb25zdCBuZXdCeXRlcyA9IGJ5dGVzRnJvbVN0cmluZ0FycmF5KGJhY2tlbmRWYWxzIGFzIFVpbnQ4QXJyYXlbXSk7XG4gICAgICB0aGlzLnN0YXRlLm51bUJ5dGVzICs9IG5ld0J5dGVzIC0gaW5mby5ieXRlcztcbiAgICAgIGluZm8uYnl0ZXMgPSBuZXdCeXRlcztcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgYnkgYmFja2VuZHMuIE1ha2VzIGEgbmV3IHRlbnNvclxuICAgKiB0aGF0IGlzIGEgd3JhcHBlciBhcm91bmQgYW4gZXhpc3RpbmcgZGF0YSBpZC4gSXQgZG9lc24ndCBjcmVhdGVcbiAgICogYSBuZXcgZGF0YSBpZCwgb25seSBpbmNyZW1lbnRzIHRoZSByZWYgY291bnQgdXNlZCBpbiBtZW1vcnkgdHJhY2tpbmcuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBtYWtlVGVuc29yRnJvbURhdGFJZChcbiAgICBkYXRhSWQ6IERhdGFJZCwgc2hhcGU6IG51bWJlcltdLCBkdHlwZTogRGF0YVR5cGUsXG4gICAgYmFja2VuZD86IEtlcm5lbEJhY2tlbmQpOiBUZW5zb3Ige1xuICAgIGR0eXBlID0gZHR5cGUgfHwgJ2Zsb2F0MzInO1xuICAgIGNvbnN0IHRlbnNvckluZm86IFRlbnNvckluZm8gPSB7ZGF0YUlkLCBzaGFwZSwgZHR5cGV9O1xuICAgIHJldHVybiB0aGlzLm1ha2VUZW5zb3JGcm9tVGVuc29ySW5mbyh0ZW5zb3JJbmZvLCBiYWNrZW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdXNlZCBieSBiYWNrZW5kcy4gTWFrZXMgYSBuZXcgdGVuc29yIHRoYXQgaXMgYSB3cmFwcGVyXG4gICAqIGFyb3VuZCBhbiBleGlzdGluZyBkYXRhIGlkIGluIFRlbnNvckluZm8uIEl0IGRvZXNuJ3QgY3JlYXRlIGEgbmV3IGRhdGEgaWQsXG4gICAqIG9ubHkgaW5jcmVtZW50cyB0aGUgcmVmIGNvdW50IHVzZWQgaW4gbWVtb3J5IHRyYWNraW5nLlxuICAgKi9cbiAgbWFrZVRlbnNvckZyb21UZW5zb3JJbmZvKHRlbnNvckluZm86IFRlbnNvckluZm8sIGJhY2tlbmQ/OiBLZXJuZWxCYWNrZW5kKTpcbiAgICAgIFRlbnNvciB7XG4gICAgY29uc3Qge2RhdGFJZCwgc2hhcGUsIGR0eXBlfSA9IHRlbnNvckluZm87XG4gICAgY29uc3QgdCA9IG5ldyBUZW5zb3Ioc2hhcGUsIGR0eXBlLCBkYXRhSWQsIHRoaXMubmV4dFRlbnNvcklkKCkpO1xuICAgIHRoaXMudHJhY2tUZW5zb3IodCwgYmFja2VuZCk7XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICBtYWtlVmFyaWFibGUoXG4gICAgICBpbml0aWFsVmFsdWU6IFRlbnNvciwgdHJhaW5hYmxlID0gdHJ1ZSwgbmFtZT86IHN0cmluZyxcbiAgICAgIGR0eXBlPzogRGF0YVR5cGUpOiBWYXJpYWJsZSB7XG4gICAgbmFtZSA9IG5hbWUgfHwgdGhpcy5uZXh0VmFyaWFibGVJZCgpLnRvU3RyaW5nKCk7XG4gICAgaWYgKGR0eXBlICE9IG51bGwgJiYgZHR5cGUgIT09IGluaXRpYWxWYWx1ZS5kdHlwZSkge1xuICAgICAgaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlLmNhc3QoZHR5cGUpO1xuICAgIH1cbiAgICBjb25zdCB2ID0gbmV3IFZhcmlhYmxlKGluaXRpYWxWYWx1ZSwgdHJhaW5hYmxlLCBuYW1lLCB0aGlzLm5leHRUZW5zb3JJZCgpKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5yZWdpc3RlcmVkVmFyaWFibGVzW3YubmFtZV0gIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYXJpYWJsZSB3aXRoIG5hbWUgJHt2Lm5hbWV9IHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5yZWdpc3RlcmVkVmFyaWFibGVzW3YubmFtZV0gPSB2O1xuICAgIHRoaXMuaW5jUmVmKHYsIHRoaXMuYmFja2VuZCk7XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICB0cmFja1RlbnNvcihhOiBUZW5zb3IsIGJhY2tlbmQ6IEtlcm5lbEJhY2tlbmQpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLm51bVRlbnNvcnMrKztcbiAgICBpZiAoYS5kdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUubnVtU3RyaW5nVGVuc29ycysrO1xuICAgIH1cbiAgICAvLyBCeXRlcyBmb3IgY29tcGxleCBudW1iZXJzIGFyZSBjb3VudGVkIGJ5IHRoZWlyIGNvbXBvbmVudHMuIEJ5dGVzIGZvclxuICAgIC8vIHN0cmluZyB0ZW5zb3JzIGFyZSBjb3VudGVkIHdoZW4gd3JpdGluZyB2YWx1ZXMuXG4gICAgbGV0IGJ5dGVzID0gMDtcbiAgICBpZiAoYS5kdHlwZSAhPT0gJ2NvbXBsZXg2NCcgJiYgYS5kdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGJ5dGVzID0gYS5zaXplICogdXRpbC5ieXRlc1BlckVsZW1lbnQoYS5kdHlwZSk7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUubnVtQnl0ZXMgKz0gYnl0ZXM7XG5cbiAgICBpZiAoIXRoaXMuc3RhdGUudGVuc29ySW5mby5oYXMoYS5kYXRhSWQpKSB7XG4gICAgICB0aGlzLnN0YXRlLm51bURhdGFCdWZmZXJzKys7XG4gICAgICB0aGlzLnN0YXRlLnRlbnNvckluZm8uc2V0KGEuZGF0YUlkLCB7XG4gICAgICAgIGJhY2tlbmQ6IGJhY2tlbmQgfHwgdGhpcy5iYWNrZW5kLFxuICAgICAgICBkdHlwZTogYS5kdHlwZSxcbiAgICAgICAgc2hhcGU6IGEuc2hhcGUsXG4gICAgICAgIGJ5dGVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIShhIGluc3RhbmNlb2YgVmFyaWFibGUpKSB7XG4gICAgICB0aGlzLnRyYWNrKGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRyYWNrIHRoZSB0ZW5zb3IgYnkgZGF0YUlkIGFuZCBpbmNyZWFzZSB0aGUgcmVmQ291bnQgZm9yIHRoZSBkYXRhSWQgaW4gdGhlXG4gIC8vIGJhY2tlbmQuXG4gIC8vIFRPRE8ocHl1MTAwNTUpOiBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGJ5IG1ha2VWYXJpYWJsZSBtZXRob2QsIHRvIGluY3JlYXNlXG4gIC8vIHJlZkNvdW50IG9uIHRoZSBiYWNrZW5kIGZvciB0aGUgZGF0YUlkLiBJdCBjYW4gcG90ZW50aWFsbHkgYmUgcmVwbGFjZWQgd2l0aFxuICAvLyBJZGVudGl0eSBvcCBpbmRlYWQgb2YgY2FsbGluZyBiYWNrZW5kIGRpcmVjdGx5LlxuICBpbmNSZWYoYTogVGVuc29yLCBiYWNrZW5kOiBLZXJuZWxCYWNrZW5kKTogdm9pZCB7XG4gICAgdGhpcy50cmFja1RlbnNvcihhLCBiYWNrZW5kKTtcbiAgICB0aGlzLmJhY2tlbmQuaW5jUmVmKGEuZGF0YUlkKTtcbiAgfVxuXG4gIHJlbW92ZURhdGFJZChkYXRhSWQ6IERhdGFJZCwgYmFja2VuZDogS2VybmVsQmFja2VuZCkge1xuICAgIGlmICh0aGlzLnN0YXRlLnRlbnNvckluZm8uaGFzKGRhdGFJZCkgJiZcbiAgICAgICAgdGhpcy5zdGF0ZS50ZW5zb3JJbmZvLmdldChkYXRhSWQpLmJhY2tlbmQgPT09IGJhY2tlbmQpIHtcbiAgICAgIHRoaXMuc3RhdGUudGVuc29ySW5mby5kZWxldGUoZGF0YUlkKTtcbiAgICAgIHRoaXMuc3RhdGUubnVtRGF0YUJ1ZmZlcnMtLTtcbiAgICB9XG4gIH1cbiAgZGlzcG9zZVRlbnNvcihhOiBUZW5zb3IpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUudGVuc29ySW5mby5oYXMoYS5kYXRhSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGEuZGF0YUlkKTtcblxuICAgIHRoaXMuc3RhdGUubnVtVGVuc29ycy0tO1xuICAgIGlmIChhLmR0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zdGF0ZS5udW1TdHJpbmdUZW5zb3JzLS07XG4gICAgICB0aGlzLnN0YXRlLm51bUJ5dGVzIC09IGluZm8uYnl0ZXM7XG4gICAgfVxuICAgIC8vIERvbid0IGNvdW50IGJ5dGVzIGZvciBjb21wbGV4IG51bWJlcnMgYXMgdGhleSBhcmUgY291bnRlZCBieSB0aGVpclxuICAgIC8vIGNvbXBvbmVudHMuXG4gICAgaWYgKGEuZHR5cGUgIT09ICdjb21wbGV4NjQnICYmIGEuZHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBieXRlcyA9IGEuc2l6ZSAqIHV0aWwuYnl0ZXNQZXJFbGVtZW50KGEuZHR5cGUpO1xuICAgICAgdGhpcy5zdGF0ZS5udW1CeXRlcyAtPSBieXRlcztcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBkYXRhSWQgaWYgYmFja2VuZCBkaXNwb3NlIHRoZSBkYXRhIHN1Y2Nlc3NmdWxseVxuICAgIGlmIChpbmZvLmJhY2tlbmQuZGlzcG9zZURhdGEoYS5kYXRhSWQpKSB7XG4gICAgICB0aGlzLnJlbW92ZURhdGFJZChhLmRhdGFJZCwgaW5mby5iYWNrZW5kKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKG5zdGhvcmF0KTogQ29uc3RydWN0IGFuIGVycm9yIGFuZCBzYXZlIHRoZSBzdGFjayB0cmFjZSBmb3JcbiAgICAvLyBkZWJ1Z2dpbmcgd2hlbiBpbiBkZWJ1ZyBtb2RlLiBDcmVhdGluZyBhIHN0YWNrIHRyYWNlIGlzIHRvbyBleHBlbnNpdmVcbiAgICAvLyB0byBkbyB1bmNvbmRpdGlvbmFsbHkuXG4gIH1cblxuICBkaXNwb3NlVmFyaWFibGVzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdmFyTmFtZSBpbiB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXMpIHtcbiAgICAgIGNvbnN0IHYgPSB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXNbdmFyTmFtZV07XG4gICAgICB0aGlzLmRpc3Bvc2VWYXJpYWJsZSh2KTtcbiAgICB9XG4gIH1cblxuICBkaXNwb3NlVmFyaWFibGUodjogVmFyaWFibGUpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2VUZW5zb3Iodik7XG4gICAgaWYgKHRoaXMuc3RhdGUucmVnaXN0ZXJlZFZhcmlhYmxlc1t2Lm5hbWVdICE9IG51bGwpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXNbdi5uYW1lXTtcbiAgICB9XG4gIH1cblxuICBtZW1vcnkoKTogTWVtb3J5SW5mbyB7XG4gICAgY29uc3QgaW5mbyA9IHRoaXMuYmFja2VuZC5tZW1vcnkoKSBhcyBNZW1vcnlJbmZvO1xuICAgIGluZm8ubnVtVGVuc29ycyA9IHRoaXMuc3RhdGUubnVtVGVuc29ycztcbiAgICBpbmZvLm51bURhdGFCdWZmZXJzID0gdGhpcy5zdGF0ZS5udW1EYXRhQnVmZmVycztcbiAgICBpbmZvLm51bUJ5dGVzID0gdGhpcy5zdGF0ZS5udW1CeXRlcztcbiAgICBpZiAodGhpcy5zdGF0ZS5udW1TdHJpbmdUZW5zb3JzID4gMCkge1xuICAgICAgaW5mby51bnJlbGlhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChpbmZvLnJlYXNvbnMgPT0gbnVsbCkge1xuICAgICAgICBpbmZvLnJlYXNvbnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGluZm8ucmVhc29ucy5wdXNoKFxuICAgICAgICAgICdNZW1vcnkgdXNhZ2UgYnkgc3RyaW5nIHRlbnNvcnMgaXMgYXBwcm94aW1hdGUgJyArXG4gICAgICAgICAgJygyIGJ5dGVzIHBlciBjaGFyYWN0ZXIpJyk7XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9XG5cbiAgYXN5bmMgcHJvZmlsZShxdWVyeTogKCkgPT4gKFRlbnNvckNvbnRhaW5lciB8IFByb21pc2U8VGVuc29yQ29udGFpbmVyPikpOlxuICAgICAgUHJvbWlzZTxQcm9maWxlSW5mbz4ge1xuICAgIHRoaXMuc3RhdGUucHJvZmlsaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IHN0YXJ0Qnl0ZXMgPSB0aGlzLnN0YXRlLm51bUJ5dGVzO1xuICAgIGNvbnN0IHN0YXJ0TnVtVGVuc29ycyA9IHRoaXMuc3RhdGUubnVtVGVuc29ycztcblxuICAgIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5rZXJuZWxzID0gW107XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlLnJlc3VsdCA9IGF3YWl0IHF1ZXJ5KCk7XG5cbiAgICB0aGlzLnN0YXRlLnByb2ZpbGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlLnBlYWtCeXRlcyA9IE1hdGgubWF4KFxuICAgICAgICAuLi50aGlzLnN0YXRlLmFjdGl2ZVByb2ZpbGUua2VybmVscy5tYXAoZCA9PiBkLnRvdGFsQnl0ZXNTbmFwc2hvdCkpO1xuICAgIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5uZXdCeXRlcyA9IHRoaXMuc3RhdGUubnVtQnl0ZXMgLSBzdGFydEJ5dGVzO1xuICAgIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5uZXdUZW5zb3JzID1cbiAgICAgICAgdGhpcy5zdGF0ZS5udW1UZW5zb3JzIC0gc3RhcnROdW1UZW5zb3JzO1xuICAgIGZvciAoY29uc3Qga2VybmVsIG9mIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5rZXJuZWxzKSB7XG4gICAgICBrZXJuZWwua2VybmVsVGltZU1zID0gYXdhaXQga2VybmVsLmtlcm5lbFRpbWVNcztcbiAgICAgIGtlcm5lbC5leHRyYUluZm8gPSBhd2FpdCBrZXJuZWwuZXh0cmFJbmZvO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlO1xuICB9XG5cbiAgaXNUYXBlT24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ3JhZGllbnREZXB0aCA+IDAgJiYgdGhpcy5zdGF0ZS5rZXJuZWxEZXB0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVGFwZU5vZGUoXG4gICAgICBrZXJuZWxOYW1lOiBzdHJpbmcsIGlucHV0czogTmFtZWRUZW5zb3JNYXAsIG91dHB1dHM6IFRlbnNvcltdLFxuICAgICAgZ3JhZGllbnRzRnVuYzogR3JhZEZ1bmMsIHNhdmVkOiBUZW5zb3JbXSwgYXR0cnM6IE5hbWVkQXR0ck1hcCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcGVOb2RlOiBUYXBlTm9kZSA9XG4gICAgICAgIHtpZDogdGhpcy5zdGF0ZS5uZXh0VGFwZU5vZGVJZCsrLCBrZXJuZWxOYW1lLCBpbnB1dHMsIG91dHB1dHMsIHNhdmVkfTtcblxuICAgIGNvbnN0IGdyYWRDb25maWcgPSBnZXRHcmFkaWVudChrZXJuZWxOYW1lKTtcbiAgICBpZiAoZ3JhZENvbmZpZyAhPSBudWxsKSB7XG4gICAgICBncmFkaWVudHNGdW5jID0gZ3JhZENvbmZpZy5ncmFkRnVuYztcbiAgICB9XG4gICAgaWYgKGdyYWRpZW50c0Z1bmMgIT0gbnVsbCkge1xuICAgICAgdGFwZU5vZGUuZ3JhZGllbnQgPSAoZHlzOiBUZW5zb3JbXSkgPT4ge1xuICAgICAgICAvLyBUT0RPKHNtaWxrb3YpOiBUbyBvcHRpbWl6ZSBiYWNrLXByb3AsIHBhc3MgZHlzIHRoYXQgYXJlIG5vdCB1c2VkIGluXG4gICAgICAgIC8vIHRoZSBiYWNrcHJvcCBncmFwaCB0byB0aGUgdXNlciBhcyBudWxsIGluc3RlYWQgb2YgemVyb3NcbiAgICAgICAgZHlzID0gZHlzLm1hcCgoZHksIGkpID0+IHtcbiAgICAgICAgICBpZiAoZHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB1dGlsLm1ha2VaZXJvc1R5cGVkQXJyYXkob3V0cHV0LnNpemUsIG91dHB1dC5kdHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlVGVuc29yKHZhbHMsIG91dHB1dC5zaGFwZSwgb3V0cHV0LmR0eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGR5O1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gR3JhZCBmdW5jdGlvbnMgb2Ygb3BzIHdpdGggc2luZ2xlIG91dHB1dHMgZXhwZWN0IGEgZHksIHdoaWxlIG9wc1xuICAgICAgICAvLyB3aXRoIG11bHRpcGxlIG91dHB1dHMgZXhwZWN0IGR5cyAoYXJyYXkgb2YgZHkpLlxuICAgICAgICByZXR1cm4gZ3JhZGllbnRzRnVuYyhkeXMubGVuZ3RoID4gMSA/IGR5cyA6IGR5c1swXSwgc2F2ZWQsIGF0dHJzKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuYWN0aXZlVGFwZS5wdXNoKHRhcGVOb2RlKTtcbiAgfVxuXG4gIGtlZXA8VCBleHRlbmRzIFRlbnNvcj4ocmVzdWx0OiBUKTogVCB7XG4gICAgcmVzdWx0LmtlcHQgPSB0cnVlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0VGFwZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoID09PSAwKSB7XG4gICAgICB0aGlzLnN0YXRlLmFjdGl2ZVRhcGUgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoKys7XG4gIH1cblxuICBwcml2YXRlIGVuZFRhcGUoKSB7XG4gICAgdGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoLS07XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYSBzY29wZS4gVXNlIHRoaXMgd2l0aCBlbmRTY29wZSgpIHRvIGFjaGlldmUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eVxuICAgKiBhcyBzY29wZSgpIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGEgZnVuY3Rpb24gY2xvc3VyZS5cbiAgICovXG4gIHN0YXJ0U2NvcGUobmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHNjb3BlSW5mbzogU2NvcGVTdGF0ZSA9IHtcbiAgICAgIHRyYWNrOiBbXSxcbiAgICAgIG5hbWU6ICd1bm5hbWVkIHNjb3BlJyxcbiAgICAgIGlkOiB0aGlzLnN0YXRlLm5leHRTY29wZUlkKytcbiAgICB9O1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBzY29wZUluZm8ubmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2NvcGVTdGFjay5wdXNoKHNjb3BlSW5mbyk7XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZSA9IHNjb3BlSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmQgYSBzY29wZS4gVXNlIHRoaXMgd2l0aCBzdGFydFNjb3BlKCkgdG8gYWNoaWV2ZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5XG4gICAqIGFzIHNjb3BlKCkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYSBmdW5jdGlvbiBjbG9zdXJlLlxuICAgKi9cbiAgZW5kU2NvcGUocmVzdWx0PzogVGVuc29yQ29udGFpbmVyKSB7XG4gICAgY29uc3QgdGVuc29yc1RvVHJhY2tJblBhcmVudCA9IGdldFRlbnNvcnNJbkNvbnRhaW5lcihyZXN1bHQpO1xuICAgIGNvbnN0IHRlbnNvcnNUb1RyYWNrSW5QYXJlbnRTZXQgPVxuICAgICAgICBuZXcgU2V0KHRlbnNvcnNUb1RyYWNrSW5QYXJlbnQubWFwKHQgPT4gdC5pZCkpO1xuXG4gICAgLy8gRGlzcG9zZSB0aGUgYXJyYXlzIHRyYWNrZWQgaW4gdGhpcyBzY29wZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RhdGUuYWN0aXZlU2NvcGUudHJhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRlbnNvciA9IHRoaXMuc3RhdGUuYWN0aXZlU2NvcGUudHJhY2tbaV07XG4gICAgICBpZiAoIXRlbnNvci5rZXB0ICYmICF0ZW5zb3JzVG9UcmFja0luUGFyZW50U2V0Lmhhcyh0ZW5zb3IuaWQpKSB7XG4gICAgICAgIHRlbnNvci5kaXNwb3NlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkU2NvcGUgPSB0aGlzLnN0YXRlLnNjb3BlU3RhY2sucG9wKCk7XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZSA9IHRoaXMuc3RhdGUuc2NvcGVTdGFjay5sZW5ndGggPT09IDAgP1xuICAgICAgICBudWxsIDpcbiAgICAgICAgdGhpcy5zdGF0ZS5zY29wZVN0YWNrW3RoaXMuc3RhdGUuc2NvcGVTdGFjay5sZW5ndGggLSAxXTtcblxuICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50IHJlc3VsdCBpbiB0aGUgcGFyZW50IHNjb3BlLlxuICAgIHRlbnNvcnNUb1RyYWNrSW5QYXJlbnQuZm9yRWFjaCh0ZW5zb3IgPT4ge1xuICAgICAgLy8gT25seSB0cmFjayB0aGUgdGVuc29yIGlmIHdhcyBhbGxvY2F0ZWQgaW4gdGhlIGlubmVyIHNjb3BlIGFuZCBpcyBub3RcbiAgICAgIC8vIGdsb2JhbGx5IGtlcHQuXG4gICAgICBpZiAoIXRlbnNvci5rZXB0ICYmIHRlbnNvci5zY29wZUlkID09PSBvbGRTY29wZS5pZCkge1xuICAgICAgICB0aGlzLnRyYWNrKHRlbnNvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBncmFkaWVudHMgb2YgYGZgIHdpdGggcmVzcGVjdCB0byBlYWNoIG9mIHRoZSBgeHNgLiBUaGUgZ3JhZGllbnRzXG4gICAqIHJldHVybmVkIGFyZSBvZiB0aGUgc2FtZSBsZW5ndGggYXMgYHhzYCwgYnV0IHNvbWUgbWlnaHQgYmUgbnVsbCBpZiBgZmBcbiAgICogd2FzIG5vdCBhIGZ1bmN0aW9uIG9mIHRoYXQgYHhgLiBJdCBhbHNvIHRha2VzIG9wdGlvbmFsIGR5IHRvIG11bHRpcGx5IHRoZVxuICAgKiBncmFkaWVudCwgd2hpY2ggZGVmYXVsdHMgdG8gYDFgLlxuICAgKi9cbiAgZ3JhZGllbnRzPFQgZXh0ZW5kcyBUZW5zb3I+KFxuICAgICAgZjogKCkgPT4gVCwgeHM6IFRlbnNvcltdLCBkeT86IFQsXG4gICAgICBhbGxvd05vR3JhZGllbnRzID0gZmFsc2UpOiB7dmFsdWU6IFQsIGdyYWRzOiBUZW5zb3JbXX0ge1xuICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICB4cy5sZW5ndGggPiAwLCAoKSA9PiAnZ3JhZGllbnRzKCkgcmVjZWl2ZWQgYW4gZW1wdHkgbGlzdCBvZiB4cy4nKTtcbiAgICBpZiAoZHkgIT0gbnVsbCAmJiBkeS5kdHlwZSAhPT0gJ2Zsb2F0MzInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGR5IG11c3QgaGF2ZSAnZmxvYXQzMicgZHR5cGUsIGJ1dCBoYXMgJyR7ZHkuZHR5cGV9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHkgPSB0aGlzLnNjb3BlZFJ1bihcbiAgICAgICAgKCkgPT4gdGhpcy5zdGFydFRhcGUoKSwgKCkgPT4gdGhpcy5lbmRUYXBlKCksXG4gICAgICAgICgpID0+IHRoaXMudGlkeSgnZm9yd2FyZCcsIGYpKTtcblxuICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICB5IGluc3RhbmNlb2YgVGVuc29yLFxuICAgICAgICAoKSA9PiAnVGhlIHJlc3VsdCB5IHJldHVybmVkIGJ5IGYoKSBtdXN0IGJlIGEgdGVuc29yLicpO1xuICAgIC8vIEZpbHRlciBvdXQgdGhlIG5vZGVzIHRoYXQgZG9uJ3QgY29ubmVjdCB4ID0+IHkuXG4gICAgY29uc3QgZmlsdGVyZWRUYXBlID0gZ2V0RmlsdGVyZWROb2Rlc1hUb1kodGhpcy5zdGF0ZS5hY3RpdmVUYXBlLCB4cywgeSk7XG4gICAgaWYgKCFhbGxvd05vR3JhZGllbnRzICYmIGZpbHRlcmVkVGFwZS5sZW5ndGggPT09IDAgJiYgeHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdDYW5ub3QgY29tcHV0ZSBncmFkaWVudCBvZiB5PWYoeCkgd2l0aCByZXNwZWN0IHRvIHguIE1ha2Ugc3VyZSAnICtcbiAgICAgICAgICAndGhhdCB0aGUgZiB5b3UgcGFzc2VkIGVuY2xvc2VzIGFsbCBvcGVyYXRpb25zIHRoYXQgbGVhZCBmcm9tIHggJyArXG4gICAgICAgICAgJ3RvIHkuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGlkeSgnYmFja3dhcmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhY2N1bXVsYXRlZEdyYWRpZW50TWFwOiB7W3RlbnNvcklkOiBudW1iZXJdOiBUZW5zb3J9ID0ge307XG4gICAgICBhY2N1bXVsYXRlZEdyYWRpZW50TWFwW3kuaWRdID0gKGR5ID09IG51bGwpID8gb25lcyh5LnNoYXBlKSA6IGR5O1xuXG4gICAgICAvLyBCYWNrcHJvcCBncmFkaWVudHMgdGhyb3VnaCB0aGUgZmlsdGVyZWQgbm9kZXMuXG4gICAgICBiYWNrcHJvcGFnYXRlR3JhZGllbnRzKFxuICAgICAgICAgIGFjY3VtdWxhdGVkR3JhZGllbnRNYXAsIGZpbHRlcmVkVGFwZSxcbiAgICAgICAgICAvLyBQYXNzIHRoZSB0aWR5IGZ1bmN0aW9uIHRvIGF2b2lkIGNpcmN1bGFyIGRlcCB3aXRoIGB0YXBlLnRzYC5cbiAgICAgICAgICBmID0+IHRoaXMudGlkeShmIGFzIFNjb3BlRm48VGVuc29yPiksXG4gICAgICAgICAgLy8gUGFzcyBhbiBhZGQgZnVuY3Rpb24gdG8gYXZvaWRlIGEgY2lyY3VsYXIgZGVwIHdpdGggYHRhcGUudHNgLlxuICAgICAgICAgIGFkZCk7XG4gICAgICBjb25zdCBncmFkcyA9IHhzLm1hcCh4ID0+IGFjY3VtdWxhdGVkR3JhZGllbnRNYXBbeC5pZF0pO1xuXG4gICAgICBpZiAodGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoID09PSAwKSB7XG4gICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgbm90IGNvbXB1dGluZyBoaWdoZXItb3JkZXIgZ3JhZGllbnRzXG4gICAgICAgIC8vIGFuZCBjYW4gY2xlYW4gdXAgdGhlIHRhcGUuXG4gICAgICAgIHRoaXMuc3RhdGUuYWN0aXZlVGFwZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgdGVuc29yIG9mIG5vZGUuc2F2ZWQpIHtcbiAgICAgICAgICAgIHRlbnNvci5kaXNwb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVUYXBlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7dmFsdWU6IHksIGdyYWRzfTtcbiAgICB9KTtcbiAgfVxuXG4gIGN1c3RvbUdyYWQ8VCBleHRlbmRzIFRlbnNvcj4oZjogQ3VzdG9tR3JhZGllbnRGdW5jPFQ+KTpcbiAgICAgICguLi5hcmdzOiBBcnJheTxUZW5zb3J8R3JhZFNhdmVGdW5jPikgPT4gVCB7XG4gICAgdXRpbC5hc3NlcnQoXG4gICAgICAgIHV0aWwuaXNGdW5jdGlvbihmKSxcbiAgICAgICAgKCkgPT4gJ1RoZSBmIHBhc3NlZCBpbiBjdXN0b21HcmFkKGYpIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICByZXR1cm4gKC4uLmlucHV0czogVGVuc29yW10pOiBUID0+IHtcbiAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgIGlucHV0cy5ldmVyeSh0ID0+IHQgaW5zdGFuY2VvZiBUZW5zb3IpLFxuICAgICAgICAgICgpID0+ICdUaGUgYXJncyBwYXNzZWQgaW4gY3VzdG9tR3JhZChmKSh4MSwgeDIsLi4uKSBtdXN0IGFsbCBiZSAnICtcbiAgICAgICAgICAgICAgJ3RlbnNvcnMnKTtcblxuICAgICAgbGV0IHJlczoge1xuICAgICAgICB2YWx1ZTogVCxcbiAgICAgICAgZ3JhZEZ1bmM6IChkeTogVCwgc2F2ZWQ6IFRlbnNvcltdKSA9PiBUZW5zb3IgfCBUZW5zb3JbXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBpbnB1dE1hcDogTmFtZWRUZW5zb3JNYXAgPSB7fTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBpbnB1dE1hcFtpXSA9IGlucHV0O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGZvcndhcmRGdW5jOiBGb3J3YXJkRnVuYzxUPiA9IChfLCBzYXZlKSA9PiB7XG4gICAgICAgIHJlcyA9IGYoLi4uWy4uLmlucHV0cywgc2F2ZV0pO1xuICAgICAgICB1dGlsLmFzc2VydChcbiAgICAgICAgICAgIHJlcy52YWx1ZSBpbnN0YW5jZW9mIFRlbnNvcixcbiAgICAgICAgICAgICgpID0+ICdUaGUgZnVuY3Rpb24gZiBwYXNzZWQgaW4gY3VzdG9tR3JhZChmKSBtdXN0IHJldHVybiBhbiAnICtcbiAgICAgICAgICAgICAgICAnb2JqZWN0IHdoZXJlIGBvYmoudmFsdWVgIGlzIGEgdGVuc29yJyk7XG4gICAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgICAgdXRpbC5pc0Z1bmN0aW9uKHJlcy5ncmFkRnVuYyksXG4gICAgICAgICAgICAoKSA9PiAnVGhlIGZ1bmN0aW9uIGYgcGFzc2VkIGluIGN1c3RvbUdyYWQoZikgbXVzdCByZXR1cm4gYW4gJyArXG4gICAgICAgICAgICAgICAgJ29iamVjdCB3aGVyZSBgb2JqLmdyYWRGdW5jYCBpcyBhIGZ1bmN0aW9uLicpO1xuICAgICAgICByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgYmFja3dhcmRzRnVuYyA9IChkeTogVCwgc2F2ZWQ6IFRlbnNvcltdKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyYWRSZXMgPSByZXMuZ3JhZEZ1bmMoZHksIHNhdmVkKTtcbiAgICAgICAgY29uc3QgZ3JhZHM6IFRlbnNvcltdID0gQXJyYXkuaXNBcnJheShncmFkUmVzKSA/IGdyYWRSZXMgOiBbZ3JhZFJlc107XG4gICAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgICAgZ3JhZHMubGVuZ3RoID09PSBpbnB1dHMubGVuZ3RoLFxuICAgICAgICAgICAgKCkgPT4gJ1RoZSBmdW5jdGlvbiBmIHBhc3NlZCBpbiBjdXN0b21HcmFkKGYpIG11c3QgcmV0dXJuIGFuICcgK1xuICAgICAgICAgICAgICAgICdvYmplY3Qgd2hlcmUgYG9iai5ncmFkRnVuY2AgaXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgJyArXG4gICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG51bWJlciBvZiB0ZW5zb3JzIGFzIGlucHV0cyBwYXNzZWQgdG8gZiguLi4pLicpO1xuICAgICAgICB1dGlsLmFzc2VydChcbiAgICAgICAgICAgIGdyYWRzLmV2ZXJ5KHQgPT4gdCBpbnN0YW5jZW9mIFRlbnNvciksXG4gICAgICAgICAgICAoKSA9PiAnVGhlIGZ1bmN0aW9uIGYgcGFzc2VkIGluIGN1c3RvbUdyYWQoZikgbXVzdCByZXR1cm4gYW4gJyArXG4gICAgICAgICAgICAgICAgJ29iamVjdCB3aGVyZSBgb2JqLmdyYWRGdW5jYCBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAnICtcbiAgICAgICAgICAgICAgICAnYSBsaXN0IG9mIG9ubHkgdGVuc29ycy4nKTtcbiAgICAgICAgY29uc3QgZ3JhZE1hcDoge1trZXk6IHN0cmluZ106ICgpID0+IFRlbnNvcn0gPSB7fTtcbiAgICAgICAgZ3JhZHMuZm9yRWFjaCgoZ3JhZCwgaSkgPT4ge1xuICAgICAgICAgIGdyYWRNYXBbaV0gPSAoKSA9PiBncmFkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdyYWRNYXA7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdGhpcy5ydW5LZXJuZWxGdW5jKHtcbiAgICAgICAgZm9yd2FyZEZ1bmMsXG4gICAgICAgIGJhY2t3YXJkc0Z1bmMsXG4gICAgICAgIGlucHV0czogaW5wdXRNYXAsXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmVhZFN5bmMoZGF0YUlkOiBEYXRhSWQpOiBCYWNrZW5kVmFsdWVzIHtcbiAgICAvLyBSb3V0ZSB0aGUgcmVhZCB0byB0aGUgY29ycmVjdCBiYWNrZW5kLlxuICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGRhdGFJZCk7XG4gICAgcmV0dXJuIGluZm8uYmFja2VuZC5yZWFkU3luYyhkYXRhSWQpO1xuICB9XG4gIHJlYWQoZGF0YUlkOiBEYXRhSWQpOiBQcm9taXNlPEJhY2tlbmRWYWx1ZXM+IHtcbiAgICAvLyBSb3V0ZSB0aGUgcmVhZCB0byB0aGUgY29ycmVjdCBiYWNrZW5kLlxuICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGRhdGFJZCk7XG4gICAgcmV0dXJuIGluZm8uYmFja2VuZC5yZWFkKGRhdGFJZCk7XG4gIH1cblxuICByZWFkVG9HUFUoZGF0YUlkOiBEYXRhSWQsIG9wdGlvbnM/OiBEYXRhVG9HUFVPcHRpb25zKTogR1BVRGF0YSB7XG4gICAgLy8gUm91dGUgdGhlIHJlYWQgdG8gdGhlIGNvcnJlY3QgYmFja2VuZC5cbiAgICBjb25zdCBpbmZvID0gdGhpcy5zdGF0ZS50ZW5zb3JJbmZvLmdldChkYXRhSWQpO1xuICAgIHJldHVybiBpbmZvLmJhY2tlbmQucmVhZFRvR1BVKGRhdGFJZCwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB0aW1lKHF1ZXJ5OiAoKSA9PiB2b2lkKTogUHJvbWlzZTxUaW1pbmdJbmZvPiB7XG4gICAgY29uc3Qgc3RhcnQgPSBub3coKTtcbiAgICBjb25zdCB0aW1pbmdJbmZvID0gYXdhaXQgdGhpcy5iYWNrZW5kLnRpbWUocXVlcnkpIGFzIFRpbWluZ0luZm87XG4gICAgdGltaW5nSW5mby53YWxsTXMgPSBub3coKSAtIHN0YXJ0O1xuICAgIHJldHVybiB0aW1pbmdJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrcyBhIFRlbnNvciBpbiB0aGUgY3VycmVudCBzY29wZSB0byBiZSBhdXRvbWF0aWNhbGx5IGNsZWFuZWQgdXBcbiAgICogd2hlbiB0aGUgY3VycmVudCBzY29wZSBlbmRzLCBhbmQgcmV0dXJucyB0aGUgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSByZXN1bHQgVGhlIFRlbnNvciB0byB0cmFjayBpbiB0aGUgY3VycmVudCBzY29wZS5cbiAgICovXG4gIHByaXZhdGUgdHJhY2s8VCBleHRlbmRzIFRlbnNvcj4ocmVzdWx0OiBUKTogVCB7XG4gICAgaWYgKHRoaXMuc3RhdGUuYWN0aXZlU2NvcGUgIT0gbnVsbCkge1xuICAgICAgcmVzdWx0LnNjb3BlSWQgPSB0aGlzLnN0YXRlLmFjdGl2ZVNjb3BlLmlkO1xuICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZS50cmFjay5wdXNoKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldCByZWdpc3RlcmVkVmFyaWFibGVzKCk6IE5hbWVkVmFyaWFibGVNYXAge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbmdpbmUgc3RhdGUuIFJlbW92ZXMgYWxsIGJhY2tlbmRzIGJ1dCBkb2VzIG5vdCByZW1vdmVcbiAgICogcmVnaXN0ZXJlZCBiYWNrZW5kIGZhY3Rvcmllcy5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIC8vIE1ha2UgYW55IHBlbmRpbmcgcHJvbWlzZSBvYnNvbGV0ZS5cbiAgICB0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdElkKys7XG5cbiAgICB0aGlzLnN0YXRlLmRpc3Bvc2UoKTtcbiAgICB0aGlzLkVOVi5yZXNldCgpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgRW5naW5lU3RhdGUoKTtcblxuICAgIGZvciAoY29uc3QgYmFja2VuZE5hbWUgaW4gdGhpcy5yZWdpc3RyeSkge1xuICAgICAgdGhpcy5kaXNwb3NlUmVnaXN0ZXJlZEtlcm5lbHMoYmFja2VuZE5hbWUpO1xuICAgICAgdGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV0uZGlzcG9zZSgpO1xuICAgICAgZGVsZXRlIHRoaXMucmVnaXN0cnlbYmFja2VuZE5hbWVdO1xuICAgIH1cbiAgICB0aGlzLmJhY2tlbmROYW1lID0gbnVsbDtcbiAgICB0aGlzLmJhY2tlbmRJbnN0YW5jZSA9IG51bGw7XG4gICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uZXMoc2hhcGU6IG51bWJlcltdKTogVGVuc29yIHtcbiAgY29uc3QgdmFsdWVzID0gbWFrZU9uZXNUeXBlZEFycmF5KHNpemVGcm9tU2hhcGUoc2hhcGUpLCAnZmxvYXQzMicpO1xuICByZXR1cm4gRU5HSU5FLm1ha2VUZW5zb3IodmFsdWVzLCBzaGFwZSwgJ2Zsb2F0MzInKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yTWFrZUVuZ2luZSgpOiBFbmdpbmUge1xuICBjb25zdCBucyA9IGdldEdsb2JhbE5hbWVzcGFjZSgpIGFzIHVua25vd24gYXMge190ZmVuZ2luZTogRW5naW5lfTtcbiAgaWYgKG5zLl90ZmVuZ2luZSA9PSBudWxsKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBuZXcgRW52aXJvbm1lbnQobnMpO1xuICAgIG5zLl90ZmVuZ2luZSA9IG5ldyBFbmdpbmUoZW52aXJvbm1lbnQpO1xuICB9XG4gIHNldEVudmlyb25tZW50R2xvYmFsKG5zLl90ZmVuZ2luZS5FTlYpO1xuXG4gIC8vIFRlbGwgdGhlIGN1cnJlbnQgdGVuc29yIGludGVyZmFjZSB0aGF0IHRoZSBnbG9iYWwgZW5naW5lIGlzIHJlc3BvbnNpYmxlXG4gIC8vIGZvciB0cmFja2luZy5cbiAgc2V0VGVuc29yVHJhY2tlcigoKSA9PiBucy5fdGZlbmdpbmUpO1xuICByZXR1cm4gbnMuX3RmZW5naW5lO1xufVxuXG5leHBvcnQgY29uc3QgRU5HSU5FID0gZ2V0T3JNYWtlRW5naW5lKCk7XG5cbi8qKlxuICogQSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWRkIG9wIGZvciB1c2Ugd2l0aGluIGVuZ2luZSBhbmQgdGFwZS5cbiAqXG4gKiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBhZGQudHMgYW5kIGVuZ2luZS5cbiAqIEl0IGlzIGV4cG9ydGVkIHRvIGJlIGF2YWlsYWJsZSBpbiB0YXBlIHRlc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkKGE6IFRlbnNvciwgYjogVGVuc29yKTogVGVuc29yIHtcbiAgLy8gV2UgZHVwbGljYXRlIEFkZCBoZXJlIHRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIGFkZC50cy5cbiAgY29uc3QgaW5wdXRzID0ge2EsIGJ9O1xuICByZXR1cm4gRU5HSU5FLnJ1bktlcm5lbChBZGQsIGlucHV0cyBhcyB1bmtub3duIGFzIE5hbWVkVGVuc29yTWFwKTtcbn1cbiJdfQ=="],"names":["isRegisteredKernelInvocation","kernelInvocation","EngineState","k","variableName","Engine","ENV","sortedBackends","i","backendName","name","asyncInit","factory","priority","log.warn","success","Profiler","getKernelsForBackend","kernel","registryFactoryEntry","backend","KernelBackend","promiseId","backendInstance","err","a","b","dataId","info","srcBackend","values","refCount","nameOrFn","fn","result","start","end","f","res","ex","x","y","ENGINE","Identity","inputs","grad","dy","dtype","gradInputs","attrs","Cast","saved","kernelName","getKernel","numDataIdsBefore","outInfos","numDataIdsAfter","numOutputDataIds","numMoves","dataIdsLeaked","kernelParams","outputs","isTapeOn","startingBytecount","startingNumTensors","kernelFunc","out","kernelOrScopeName","util.assert","outTensors","outInfo","tensorsToSave","forwardFunc","saveFunc","tensors","tensor","outs","backwardsFunc","kernelProfile","key","item","gradConfig","getGradient","inputsToSave","outputsToSave","inputTensorsToSave","inputName","outputTensorsToSave","_","shape","backendVals","util.isString","d","util.encodeString","t","Tensor","newBytes","bytesFromStringArray","tensorInfo","initialValue","trainable","v","Variable","bytes","util.bytesPerElement","varName","query","startBytes","startNumTensors","gradientsFunc","tapeNode","dys","output","vals","util.makeZerosTypedArray","scopeInfo","tensorsToTrackInParent","getTensorsInContainer","tensorsToTrackInParentSet","oldScope","xs","allowNoGradients","filteredTape","getFilteredNodesXToY","accumulatedGradientMap","ones","backpropagateGradients","add","grads","node","util.isFunction","inputMap","input","save","gradRes","gradMap","options","now","timingInfo","makeOnesTypedArray","sizeFromShape","getOrMakeEngine","ns","getGlobalNamespace","environment","Environment","setEnvironmentGlobal","setTensorTracker","Add"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { isPromise as u } from "./util_base.js";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2017 Google LLC. All Rights Reserved.
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
* =============================================================================
|
|
17
|
+
*/
|
|
18
|
+
const l = "tfjsflags";
|
|
19
|
+
class p {
|
|
20
|
+
// tslint:disable-next-line: no-any
|
|
21
|
+
constructor(t) {
|
|
22
|
+
this.global = t, this.flags = {}, this.flagRegistry = {}, this.urlFlags = {}, this.getQueryParams = g, this.populateURLFlags();
|
|
23
|
+
}
|
|
24
|
+
setPlatform(t, s) {
|
|
25
|
+
this.platform != null && (n().getBool("IS_TEST") || n().getBool("PROD") || console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${t}.`)), this.platformName = t, this.platform = s;
|
|
26
|
+
}
|
|
27
|
+
registerFlag(t, s, r) {
|
|
28
|
+
if (this.flagRegistry[t] = { evaluationFn: s, setHook: r }, this.urlFlags[t] != null) {
|
|
29
|
+
const i = this.urlFlags[t];
|
|
30
|
+
n().getBool("IS_TEST") || n().getBool("PROD") || console.warn(`Setting feature override from URL ${t}: ${i}.`), this.set(t, i);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async getAsync(t) {
|
|
34
|
+
return t in this.flags ? this.flags[t] : (this.flags[t] = await this.evaluateFlag(t), this.flags[t]);
|
|
35
|
+
}
|
|
36
|
+
get(t) {
|
|
37
|
+
if (t in this.flags)
|
|
38
|
+
return this.flags[t];
|
|
39
|
+
const s = this.evaluateFlag(t);
|
|
40
|
+
if (u(s))
|
|
41
|
+
throw new Error(`Flag ${t} cannot be synchronously evaluated. Please use getAsync() instead.`);
|
|
42
|
+
return this.flags[t] = s, this.flags[t];
|
|
43
|
+
}
|
|
44
|
+
getNumber(t) {
|
|
45
|
+
return this.get(t);
|
|
46
|
+
}
|
|
47
|
+
getBool(t) {
|
|
48
|
+
return this.get(t);
|
|
49
|
+
}
|
|
50
|
+
getString(t) {
|
|
51
|
+
return this.get(t);
|
|
52
|
+
}
|
|
53
|
+
getFlags() {
|
|
54
|
+
return this.flags;
|
|
55
|
+
}
|
|
56
|
+
// For backwards compatibility.
|
|
57
|
+
get features() {
|
|
58
|
+
return this.flags;
|
|
59
|
+
}
|
|
60
|
+
set(t, s) {
|
|
61
|
+
if (this.flagRegistry[t] == null)
|
|
62
|
+
throw new Error(`Cannot set flag ${t} as it has not been registered.`);
|
|
63
|
+
this.flags[t] = s, this.flagRegistry[t].setHook != null && this.flagRegistry[t].setHook(s);
|
|
64
|
+
}
|
|
65
|
+
evaluateFlag(t) {
|
|
66
|
+
if (this.flagRegistry[t] == null)
|
|
67
|
+
throw new Error(`Cannot evaluate flag '${t}': no evaluation function found.`);
|
|
68
|
+
return this.flagRegistry[t].evaluationFn();
|
|
69
|
+
}
|
|
70
|
+
setFlags(t) {
|
|
71
|
+
this.flags = Object.assign({}, t);
|
|
72
|
+
}
|
|
73
|
+
reset() {
|
|
74
|
+
this.flags = {}, this.urlFlags = {}, this.populateURLFlags();
|
|
75
|
+
}
|
|
76
|
+
populateURLFlags() {
|
|
77
|
+
if (typeof this.global > "u" || typeof this.global.location > "u" || typeof this.global.location.search > "u")
|
|
78
|
+
return;
|
|
79
|
+
const t = this.getQueryParams(this.global.location.search);
|
|
80
|
+
l in t && t[l].split(",").forEach((r) => {
|
|
81
|
+
const [i, a] = r.split(":");
|
|
82
|
+
this.urlFlags[i] = f(i, a);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function g(e) {
|
|
87
|
+
const t = {};
|
|
88
|
+
return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...r) => (h(t, r[0], r[1]), r.join("="))), t;
|
|
89
|
+
}
|
|
90
|
+
function h(e, t, s) {
|
|
91
|
+
e[decodeURIComponent(t)] = decodeURIComponent(s || "");
|
|
92
|
+
}
|
|
93
|
+
function f(e, t) {
|
|
94
|
+
const s = t.toLowerCase();
|
|
95
|
+
return s === "true" || s === "false" ? s === "true" : `${+s}` === s ? +s : t;
|
|
96
|
+
}
|
|
97
|
+
function n() {
|
|
98
|
+
return o;
|
|
99
|
+
}
|
|
100
|
+
let o = null;
|
|
101
|
+
function y(e) {
|
|
102
|
+
o = e;
|
|
103
|
+
}
|
|
104
|
+
export {
|
|
105
|
+
o as ENV,
|
|
106
|
+
p as Environment,
|
|
107
|
+
n as env,
|
|
108
|
+
g as getQueryParams,
|
|
109
|
+
y as setEnvironmentGlobal
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sources":["../../../../../node_modules/@tensorflow/tfjs-core/dist/environment.js"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport { isPromise } from './util_base';\n// Expects flags from URL in the format ?tfjsflags=FLAG1:1,FLAG2:true.\nconst TENSORFLOWJS_FLAGS_PREFIX = 'tfjsflags';\n/**\n * The environment contains evaluated flags as well as the registered platform.\n * This is always used as a global singleton and can be retrieved with\n * `tf.env()`.\n *\n * @doc {heading: 'Environment'}\n */\nexport class Environment {\n // tslint:disable-next-line: no-any\n constructor(global) {\n this.global = global;\n this.flags = {};\n this.flagRegistry = {};\n this.urlFlags = {};\n // Jasmine spies on this in 'environment_test.ts'\n this.getQueryParams = getQueryParams;\n this.populateURLFlags();\n }\n setPlatform(platformName, platform) {\n if (this.platform != null) {\n if (!(env().getBool('IS_TEST') || env().getBool('PROD'))) {\n console.warn(`Platform ${this.platformName} has already been set. ` +\n `Overwriting the platform with ${platformName}.`);\n }\n }\n this.platformName = platformName;\n this.platform = platform;\n }\n registerFlag(flagName, evaluationFn, setHook) {\n this.flagRegistry[flagName] = { evaluationFn, setHook };\n // Override the flag value from the URL. This has to happen here because\n // the environment is initialized before flags get registered.\n if (this.urlFlags[flagName] != null) {\n const flagValue = this.urlFlags[flagName];\n if (!(env().getBool('IS_TEST') || env().getBool('PROD'))) {\n console.warn(`Setting feature override from URL ${flagName}: ${flagValue}.`);\n }\n this.set(flagName, flagValue);\n }\n }\n async getAsync(flagName) {\n if (flagName in this.flags) {\n return this.flags[flagName];\n }\n this.flags[flagName] = await this.evaluateFlag(flagName);\n return this.flags[flagName];\n }\n get(flagName) {\n if (flagName in this.flags) {\n return this.flags[flagName];\n }\n const flagValue = this.evaluateFlag(flagName);\n if (isPromise(flagValue)) {\n throw new Error(`Flag ${flagName} cannot be synchronously evaluated. ` +\n `Please use getAsync() instead.`);\n }\n this.flags[flagName] = flagValue;\n return this.flags[flagName];\n }\n getNumber(flagName) {\n return this.get(flagName);\n }\n getBool(flagName) {\n return this.get(flagName);\n }\n getString(flagName) {\n return this.get(flagName);\n }\n getFlags() {\n return this.flags;\n }\n // For backwards compatibility.\n get features() {\n return this.flags;\n }\n set(flagName, value) {\n if (this.flagRegistry[flagName] == null) {\n throw new Error(`Cannot set flag ${flagName} as it has not been registered.`);\n }\n this.flags[flagName] = value;\n if (this.flagRegistry[flagName].setHook != null) {\n this.flagRegistry[flagName].setHook(value);\n }\n }\n evaluateFlag(flagName) {\n if (this.flagRegistry[flagName] == null) {\n throw new Error(`Cannot evaluate flag '${flagName}': no evaluation function found.`);\n }\n return this.flagRegistry[flagName].evaluationFn();\n }\n setFlags(flags) {\n this.flags = Object.assign({}, flags);\n }\n reset() {\n this.flags = {};\n this.urlFlags = {};\n this.populateURLFlags();\n }\n populateURLFlags() {\n if (typeof this.global === 'undefined' ||\n typeof this.global.location === 'undefined' ||\n typeof this.global.location.search === 'undefined') {\n return;\n }\n const urlParams = this.getQueryParams(this.global.location.search);\n if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) {\n const keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(',');\n keyValues.forEach(keyValue => {\n const [key, value] = keyValue.split(':');\n this.urlFlags[key] = parseValue(key, value);\n });\n }\n }\n}\nexport function getQueryParams(queryString) {\n const params = {};\n queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...t) => {\n decodeParam(params, t[0], t[1]);\n return t.join('=');\n });\n return params;\n}\nfunction decodeParam(params, name, value) {\n params[decodeURIComponent(name)] = decodeURIComponent(value || '');\n}\nfunction parseValue(flagName, value) {\n const lowerCaseValue = value.toLowerCase();\n if (lowerCaseValue === 'true' || lowerCaseValue === 'false') {\n return lowerCaseValue === 'true';\n }\n else if (`${+lowerCaseValue}` === lowerCaseValue) {\n return +lowerCaseValue;\n }\n else {\n return value;\n }\n}\n/**\n * Returns the current environment (a global singleton).\n *\n * The environment object contains the evaluated feature values as well as the\n * active platform.\n *\n * @doc {heading: 'Environment'}\n */\nexport function env() {\n return ENV;\n}\nexport let ENV = null;\nexport function setEnvironmentGlobal(environment) {\n ENV = environment;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZmpzLWNvcmUvc3JjL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUdILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEMsc0VBQXNFO0FBQ3RFLE1BQU0seUJBQXlCLEdBQUcsV0FBVyxDQUFDO0FBWTlDOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBWXRCLG1DQUFtQztJQUNuQyxZQUFtQixNQUFXO1FBQVgsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQVp0QixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQTRDLEVBQUUsQ0FBQztRQUUzRCxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBSzdCLGlEQUFpRDtRQUNqRCxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUk5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLFlBQW9CLEVBQUUsUUFBa0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQ1IsWUFBWSxJQUFJLENBQUMsWUFBWSx5QkFBeUI7b0JBQ3RELGlDQUFpQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUNSLFFBQWdCLEVBQUUsWUFBOEIsRUFDaEQsT0FB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O0FBQ0gsTUFBTSxVQUFVLEdBQUc7SUFDakIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFnQixJQUFJLENBQUM7QUFDbkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQXdCO0lBQzNELEdBQUcsR0FBRyxXQUFXLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDE3IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnLi9wbGF0Zm9ybXMvcGxhdGZvcm0nO1xuaW1wb3J0IHtpc1Byb21pc2V9IGZyb20gJy4vdXRpbF9iYXNlJztcblxuLy8gRXhwZWN0cyBmbGFncyBmcm9tIFVSTCBpbiB0aGUgZm9ybWF0ID90ZmpzZmxhZ3M9RkxBRzE6MSxGTEFHMjp0cnVlLlxuY29uc3QgVEVOU09SRkxPV0pTX0ZMQUdTX1BSRUZJWCA9ICd0ZmpzZmxhZ3MnO1xuXG50eXBlIEZsYWdWYWx1ZSA9IG51bWJlcnxib29sZWFufHN0cmluZztcbnR5cGUgRmxhZ0V2YWx1YXRpb25GbiA9ICgoKSA9PiBGbGFnVmFsdWUpfCgoKSA9PiBQcm9taXNlPEZsYWdWYWx1ZT4pO1xuZXhwb3J0IHR5cGUgRmxhZ3MgPSB7XG4gIFtmZWF0dXJlTmFtZTogc3RyaW5nXTogRmxhZ1ZhbHVlXG59O1xuZXhwb3J0IHR5cGUgRmxhZ1JlZ2lzdHJ5RW50cnkgPSB7XG4gIGV2YWx1YXRpb25GbjogRmxhZ0V2YWx1YXRpb25GbjtcbiAgc2V0SG9vaz86ICh2YWx1ZTogRmxhZ1ZhbHVlKSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgY29udGFpbnMgZXZhbHVhdGVkIGZsYWdzIGFzIHdlbGwgYXMgdGhlIHJlZ2lzdGVyZWQgcGxhdGZvcm0uXG4gKiBUaGlzIGlzIGFsd2F5cyB1c2VkIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbiBhbmQgY2FuIGJlIHJldHJpZXZlZCB3aXRoXG4gKiBgdGYuZW52KClgLlxuICpcbiAqIEBkb2Mge2hlYWRpbmc6ICdFbnZpcm9ubWVudCd9XG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByaXZhdGUgZmxhZ3M6IEZsYWdzID0ge307XG4gIHByaXZhdGUgZmxhZ1JlZ2lzdHJ5OiB7W2ZsYWdOYW1lOiBzdHJpbmddOiBGbGFnUmVnaXN0cnlFbnRyeX0gPSB7fTtcblxuICBwcml2YXRlIHVybEZsYWdzOiBGbGFncyA9IHt9O1xuXG4gIHBsYXRmb3JtTmFtZTogc3RyaW5nO1xuICBwbGF0Zm9ybTogUGxhdGZvcm07XG5cbiAgLy8gSmFzbWluZSBzcGllcyBvbiB0aGlzIGluICdlbnZpcm9ubWVudF90ZXN0LnRzJ1xuICBnZXRRdWVyeVBhcmFtcyA9IGdldFF1ZXJ5UGFyYW1zO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBnbG9iYWw6IGFueSkge1xuICAgIHRoaXMucG9wdWxhdGVVUkxGbGFncygpO1xuICB9XG5cbiAgc2V0UGxhdGZvcm0ocGxhdGZvcm1OYW1lOiBzdHJpbmcsIHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgIGlmICh0aGlzLnBsYXRmb3JtICE9IG51bGwpIHtcbiAgICAgIGlmICghKGVudigpLmdldEJvb2woJ0lTX1RFU1QnKSB8fCBlbnYoKS5nZXRCb29sKCdQUk9EJykpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBQbGF0Zm9ybSAke3RoaXMucGxhdGZvcm1OYW1lfSBoYXMgYWxyZWFkeSBiZWVuIHNldC4gYCArXG4gICAgICAgICAgICBgT3ZlcndyaXRpbmcgdGhlIHBsYXRmb3JtIHdpdGggJHtwbGF0Zm9ybU5hbWV9LmApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBsYXRmb3JtTmFtZSA9IHBsYXRmb3JtTmFtZTtcbiAgICB0aGlzLnBsYXRmb3JtID0gcGxhdGZvcm07XG4gIH1cblxuICByZWdpc3RlckZsYWcoXG4gICAgICBmbGFnTmFtZTogc3RyaW5nLCBldmFsdWF0aW9uRm46IEZsYWdFdmFsdWF0aW9uRm4sXG4gICAgICBzZXRIb29rPzogKHZhbHVlOiBGbGFnVmFsdWUpID0+IHZvaWQpIHtcbiAgICB0aGlzLmZsYWdSZWdpc3RyeVtmbGFnTmFtZV0gPSB7ZXZhbHVhdGlvbkZuLCBzZXRIb29rfTtcblxuICAgIC8vIE92ZXJyaWRlIHRoZSBmbGFnIHZhbHVlIGZyb20gdGhlIFVSTC4gVGhpcyBoYXMgdG8gaGFwcGVuIGhlcmUgYmVjYXVzZVxuICAgIC8vIHRoZSBlbnZpcm9ubWVudCBpcyBpbml0aWFsaXplZCBiZWZvcmUgZmxhZ3MgZ2V0IHJlZ2lzdGVyZWQuXG4gICAgaWYgKHRoaXMudXJsRmxhZ3NbZmxhZ05hbWVdICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGZsYWdWYWx1ZSA9IHRoaXMudXJsRmxhZ3NbZmxhZ05hbWVdO1xuICAgICAgaWYgKCEoZW52KCkuZ2V0Qm9vbCgnSVNfVEVTVCcpIHx8IGVudigpLmdldEJvb2woJ1BST0QnKSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFNldHRpbmcgZmVhdHVyZSBvdmVycmlkZSBmcm9tIFVSTCAke2ZsYWdOYW1lfTogJHtmbGFnVmFsdWV9LmApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXQoZmxhZ05hbWUsIGZsYWdWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0QXN5bmMoZmxhZ05hbWU6IHN0cmluZyk6IFByb21pc2U8RmxhZ1ZhbHVlPiB7XG4gICAgaWYgKGZsYWdOYW1lIGluIHRoaXMuZmxhZ3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsYWdzW2ZsYWdOYW1lXTtcbiAgICB9XG5cbiAgICB0aGlzLmZsYWdzW2ZsYWdOYW1lXSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVGbGFnKGZsYWdOYW1lKTtcbiAgICByZXR1cm4gdGhpcy5mbGFnc1tmbGFnTmFtZV07XG4gIH1cblxuICBnZXQoZmxhZ05hbWU6IHN0cmluZyk6IEZsYWdWYWx1ZSB7XG4gICAgaWYgKGZsYWdOYW1lIGluIHRoaXMuZmxhZ3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsYWdzW2ZsYWdOYW1lXTtcbiAgICB9XG5cbiAgICBjb25zdCBmbGFnVmFsdWUgPSB0aGlzLmV2YWx1YXRlRmxhZyhmbGFnTmFtZSk7XG4gICAgaWYgKGlzUHJvbWlzZShmbGFnVmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZsYWcgJHtmbGFnTmFtZX0gY2Fubm90IGJlIHN5bmNocm9ub3VzbHkgZXZhbHVhdGVkLiBgICtcbiAgICAgICAgICBgUGxlYXNlIHVzZSBnZXRBc3luYygpIGluc3RlYWQuYCk7XG4gICAgfVxuXG4gICAgdGhpcy5mbGFnc1tmbGFnTmFtZV0gPSBmbGFnVmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3NbZmxhZ05hbWVdO1xuICB9XG5cbiAgZ2V0TnVtYmVyKGZsYWdOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldChmbGFnTmFtZSkgYXMgbnVtYmVyO1xuICB9XG5cbiAgZ2V0Qm9vbChmbGFnTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KGZsYWdOYW1lKSBhcyBib29sZWFuO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGZsYWdOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldChmbGFnTmFtZSkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0RmxhZ3MoKTogRmxhZ3Mge1xuICAgIHJldHVybiB0aGlzLmZsYWdzO1xuICB9XG4gIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgZ2V0IGZlYXR1cmVzKCk6IEZsYWdzIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncztcbiAgfVxuXG4gIHNldChmbGFnTmFtZTogc3RyaW5nLCB2YWx1ZTogRmxhZ1ZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmxhZ1JlZ2lzdHJ5W2ZsYWdOYW1lXSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBzZXQgZmxhZyAke2ZsYWdOYW1lfSBhcyBpdCBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZC5gKTtcbiAgICB9XG4gICAgdGhpcy5mbGFnc1tmbGFnTmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5mbGFnUmVnaXN0cnlbZmxhZ05hbWVdLnNldEhvb2sgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mbGFnUmVnaXN0cnlbZmxhZ05hbWVdLnNldEhvb2sodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVGbGFnKGZsYWdOYW1lOiBzdHJpbmcpOiBGbGFnVmFsdWV8UHJvbWlzZTxGbGFnVmFsdWU+IHtcbiAgICBpZiAodGhpcy5mbGFnUmVnaXN0cnlbZmxhZ05hbWVdID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGV2YWx1YXRlIGZsYWcgJyR7ZmxhZ05hbWV9Jzogbm8gZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3VuZC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmxhZ1JlZ2lzdHJ5W2ZsYWdOYW1lXS5ldmFsdWF0aW9uRm4oKTtcbiAgfVxuXG4gIHNldEZsYWdzKGZsYWdzOiBGbGFncykge1xuICAgIHRoaXMuZmxhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBmbGFncyk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmZsYWdzID0ge307XG4gICAgdGhpcy51cmxGbGFncyA9IHt9O1xuICAgIHRoaXMucG9wdWxhdGVVUkxGbGFncygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZVVSTEZsYWdzKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5nbG9iYWwgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAgIHR5cGVvZiB0aGlzLmdsb2JhbC5sb2NhdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICAgdHlwZW9mIHRoaXMuZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxQYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHRoaXMuZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgaWYgKFRFTlNPUkZMT1dKU19GTEFHU19QUkVGSVggaW4gdXJsUGFyYW1zKSB7XG4gICAgICBjb25zdCBrZXlWYWx1ZXMgPSB1cmxQYXJhbXNbVEVOU09SRkxPV0pTX0ZMQUdTX1BSRUZJWF0uc3BsaXQoJywnKTtcbiAgICAgIGtleVZhbHVlcy5mb3JFYWNoKGtleVZhbHVlID0+IHtcbiAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0ga2V5VmFsdWUuc3BsaXQoJzonKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgICB0aGlzLnVybEZsYWdzW2tleV0gPSBwYXJzZVZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVBhcmFtcyhxdWVyeVN0cmluZzogc3RyaW5nKToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgcXVlcnlTdHJpbmcucmVwbGFjZSgvWz8mXShbXj0/Jl0rKSg/Oj0oW14mXSopKT8vZywgKHMsIC4uLnQpID0+IHtcbiAgICBkZWNvZGVQYXJhbShwYXJhbXMsIHRbMF0sIHRbMV0pO1xuICAgIHJldHVybiB0LmpvaW4oJz0nKTtcbiAgfSk7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGRlY29kZVBhcmFtKFxuICAgIHBhcmFtczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sIG5hbWU6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpIHtcbiAgcGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudChuYW1lKV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUgfHwgJycpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVZhbHVlKGZsYWdOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBGbGFnVmFsdWUge1xuICBjb25zdCBsb3dlckNhc2VWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChsb3dlckNhc2VWYWx1ZSA9PT0gJ3RydWUnIHx8IGxvd2VyQ2FzZVZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgcmV0dXJuIGxvd2VyQ2FzZVZhbHVlID09PSAndHJ1ZSc7XG4gIH0gZWxzZSBpZiAoYCR7KyBsb3dlckNhc2VWYWx1ZX1gID09PSBsb3dlckNhc2VWYWx1ZSkge1xuICAgIHJldHVybiArbG93ZXJDYXNlVmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCAoYSBnbG9iYWwgc2luZ2xldG9uKS5cbiAqXG4gKiBUaGUgZW52aXJvbm1lbnQgb2JqZWN0IGNvbnRhaW5zIHRoZSBldmFsdWF0ZWQgZmVhdHVyZSB2YWx1ZXMgYXMgd2VsbCBhcyB0aGVcbiAqIGFjdGl2ZSBwbGF0Zm9ybS5cbiAqXG4gKiBAZG9jIHtoZWFkaW5nOiAnRW52aXJvbm1lbnQnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW52KCkge1xuICByZXR1cm4gRU5WO1xufVxuXG5leHBvcnQgbGV0IEVOVjogRW52aXJvbm1lbnQgPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVudmlyb25tZW50R2xvYmFsKGVudmlyb25tZW50OiBFbnZpcm9ubWVudCkge1xuICBFTlYgPSBlbnZpcm9ubWVudDtcbn1cbiJdfQ=="],"names":["TENSORFLOWJS_FLAGS_PREFIX","Environment","global","getQueryParams","platformName","platform","env","flagName","evaluationFn","setHook","flagValue","isPromise","value","flags","urlParams","keyValue","key","parseValue","queryString","params","t","decodeParam","name","lowerCaseValue","ENV","setEnvironmentGlobal","environment"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "./engine.js";
|
|
2
|
+
import { isBrowser as t } from "./device_util.js";
|
|
3
|
+
import { env as a } from "./environment.js";
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright 2019 Google LLC. All Rights Reserved.
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
* =============================================================================
|
|
19
|
+
*/
|
|
20
|
+
const e = a();
|
|
21
|
+
e.registerFlag("DEBUG", () => !1, (r) => {
|
|
22
|
+
r && console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.");
|
|
23
|
+
});
|
|
24
|
+
e.registerFlag("IS_BROWSER", () => t());
|
|
25
|
+
e.registerFlag("IS_NODE", () => typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u");
|
|
26
|
+
e.registerFlag("IS_CHROME", () => typeof navigator < "u" && navigator != null && navigator.userAgent != null && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));
|
|
27
|
+
e.registerFlag("IS_SAFARI", () => typeof navigator < "u" && navigator != null && navigator.userAgent != null && /Safari/.test(navigator.userAgent) && /Apple/.test(navigator.vendor));
|
|
28
|
+
e.registerFlag("PROD", () => !1);
|
|
29
|
+
e.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY", () => e.getBool("DEBUG"));
|
|
30
|
+
e.registerFlag("DEPRECATION_WARNINGS_ENABLED", () => !0);
|
|
31
|
+
e.registerFlag("IS_TEST", () => !1);
|
|
32
|
+
e.registerFlag("CHECK_COMPUTATION_FOR_ERRORS", () => e.getBool("DEBUG"));
|
|
33
|
+
e.registerFlag("WRAP_TO_IMAGEBITMAP", () => !1);
|
|
34
|
+
e.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU", () => !1);
|
|
35
|
+
e.registerFlag("USE_SETTIMEOUTCUSTOM", () => !1);
|
|
36
|
+
//# sourceMappingURL=flags.js.map
|