From 458db337b66321476491563c0458c0d1b9688d38 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Wed, 26 Jun 2024 19:09:55 -0700 Subject: [PATCH 1/2] Add clock repeater to rig schema --- .../aind_behavior_vr_foraging/rig.py | 1 + src/DataSchemas/aind_vr_foraging_rig.json | 19 ++++++++++---- src/Extensions/AindVrForagingRig.cs | 26 +++++++++++++++++-- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/DataSchemas/aind_behavior_vr_foraging/rig.py b/src/DataSchemas/aind_behavior_vr_foraging/rig.py index a177d51..b9825fd 100644 --- a/src/DataSchemas/aind_behavior_vr_foraging/rig.py +++ b/src/DataSchemas/aind_behavior_vr_foraging/rig.py @@ -47,6 +47,7 @@ class AindVrForagingRig(AindBehaviorRigModel): harp_olfactometer: rig.HarpOlfactometer = Field(..., description="Harp olfactometer") harp_lickometer: rig.HarpLickometer = Field(..., description="Harp lickometer") harp_clock_generator: rig.HarpClockGenerator = Field(..., description="Harp clock generator") + harp_clock_repeaters: List[rig.HarpClockGenerator] = Field(default=[], description="Harp clock repeaters") harp_analog_input: Optional[rig.HarpAnalogInput] = Field(default=None, description="Harp analog input") harp_treadmill: HarpTreadmill = Field(..., description="Harp treadmill") harp_sniff_detector: Optional[rig.HarpSniffDetector] = Field(None, description="Sniff detector settings") diff --git a/src/DataSchemas/aind_vr_foraging_rig.json b/src/DataSchemas/aind_vr_foraging_rig.json index 4b7f390..4a9c4ea 100644 --- a/src/DataSchemas/aind_vr_foraging_rig.json +++ b/src/DataSchemas/aind_vr_foraging_rig.json @@ -867,10 +867,10 @@ "type": "string" }, "brightness": { - "default": 1, + "default": 0, "description": "Brightness", "maximum": 1.0, - "minimum": 0.0, + "minimum": -1.0, "title": "Brightness", "type": "number" }, @@ -878,7 +878,7 @@ "default": 1, "description": "Contrast", "maximum": 1.0, - "minimum": 0.0, + "minimum": -1.0, "title": "Contrast", "type": "number" } @@ -1065,7 +1065,7 @@ "type": "string" }, "output_arguments": { - "default": "-c:v h264_nvenc -vsync 0 -2pass 1 -bf:v 0 -qp 13 -preset medium -b:v 20M -rc:v cbr", + "default": "c:v hevc_nvenc -pix_fmt x2rgb10le -color_range full -tune hq -preset p3 -rc vbr -cq 16 -rc-lookahead 56 -temporal-aq 1 -qmin 0 -qmax 10", "description": "Output arguments", "title": "Output Arguments", "type": "string" @@ -1381,6 +1381,15 @@ ], "description": "Harp clock generator" }, + "harp_clock_repeaters": { + "default": [], + "description": "Harp clock repeaters", + "items": { + "$ref": "#/definitions/HarpClockGenerator" + }, + "title": "Harp Clock Repeaters", + "type": "array" + }, "harp_analog_input": { "default": null, "description": "Harp analog input", @@ -1428,7 +1437,7 @@ "target_update_frequency": 120.0, "calibration_directory": "Calibration\\Monitors\\", "texture_assets_directory": "Textures", - "brightness": 1.0, + "brightness": 0.0, "contrast": 1.0 }, "description": "Screen settings" diff --git a/src/Extensions/AindVrForagingRig.cs b/src/Extensions/AindVrForagingRig.cs index ce8c566..8b01f07 100644 --- a/src/Extensions/AindVrForagingRig.cs +++ b/src/Extensions/AindVrForagingRig.cs @@ -2174,7 +2174,7 @@ public partial class Screen private string _textureAssetsDirectory = "Textures"; - private double _brightness = 1D; + private double _brightness = 0D; private double _contrast = 1D; @@ -2832,7 +2832,7 @@ public partial class VideoWriterFfmpeg : VideoWriter private string _containerExtension = "mp4"; - private string _outputArguments = "-c:v h264_nvenc -vsync 0 -2pass 1 -bf:v 0 -qp 13 -preset medium -b:v 20M -rc:v cbr"; + private string _outputArguments = "c:v hevc_nvenc -pix_fmt x2rgb10le -color_range full -tune hq -preset p3 -rc vbr -cq 16 -rc-lookahead 56 -temporal-aq 1 -qmin 0 -qmax 10"; public VideoWriterFfmpeg() { @@ -3576,6 +3576,8 @@ public partial class AindVrForagingRig private HarpClockGenerator _harpClockGenerator = new HarpClockGenerator(); + private System.Collections.Generic.List _harpClockRepeaters = new System.Collections.Generic.List(); + private HarpAnalogInput _harpAnalogInput; private HarpTreadmill _harpTreadmill = new HarpTreadmill(); @@ -3601,6 +3603,7 @@ protected AindVrForagingRig(AindVrForagingRig other) _harpOlfactometer = other._harpOlfactometer; _harpLickometer = other._harpLickometer; _harpClockGenerator = other._harpClockGenerator; + _harpClockRepeaters = other._harpClockRepeaters; _harpAnalogInput = other._harpAnalogInput; _harpTreadmill = other._harpTreadmill; _harpSniffDetector = other._harpSniffDetector; @@ -3763,6 +3766,24 @@ public HarpClockGenerator HarpClockGenerator } } + /// + /// Harp clock repeaters + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + [Newtonsoft.Json.JsonPropertyAttribute("harp_clock_repeaters")] + [System.ComponentModel.DescriptionAttribute("Harp clock repeaters")] + public System.Collections.Generic.List HarpClockRepeaters + { + get + { + return _harpClockRepeaters; + } + set + { + _harpClockRepeaters = value; + } + } + /// /// Harp analog input /// @@ -3874,6 +3895,7 @@ protected virtual bool PrintMembers(System.Text.StringBuilder stringBuilder) stringBuilder.Append("harp_olfactometer = " + _harpOlfactometer + ", "); stringBuilder.Append("harp_lickometer = " + _harpLickometer + ", "); stringBuilder.Append("harp_clock_generator = " + _harpClockGenerator + ", "); + stringBuilder.Append("harp_clock_repeaters = " + _harpClockRepeaters + ", "); stringBuilder.Append("harp_analog_input = " + _harpAnalogInput + ", "); stringBuilder.Append("harp_treadmill = " + _harpTreadmill + ", "); stringBuilder.Append("harp_sniff_detector = " + _harpSniffDetector + ", "); From deb8f59a91f2198364f19f73109c26530c1d9f0d Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Wed, 26 Jun 2024 19:26:44 -0700 Subject: [PATCH 2/2] Implement repeater instantiation --- src/vr-foraging.bonsai | 686 +++++++++++++++++++++++++++-------------- 1 file changed, 457 insertions(+), 229 deletions(-) diff --git a/src/vr-foraging.bonsai b/src/vr-foraging.bonsai index c92563f..c322f34 100644 --- a/src/vr-foraging.bonsai +++ b/src/vr-foraging.bonsai @@ -7,34 +7,35 @@ xmlns:p3="clr-namespace:AindVrForagingDataSchema.TaskLogic;assembly=Extensions" xmlns:gl="clr-namespace:Bonsai.Shaders;assembly=Bonsai.Shaders" xmlns:res="clr-namespace:Bonsai.Resources;assembly=Bonsai.System" - xmlns:beh="clr-namespace:Harp.Behavior;assembly=Harp.Behavior" xmlns:harp="clr-namespace:Bonsai.Harp;assembly=Bonsai.Harp" + xmlns:p4="clr-namespace:Harp.TimestampGeneratorGen3;assembly=Harp.TimestampGeneratorGen3" + xmlns:beh="clr-namespace:Harp.Behavior;assembly=Harp.Behavior" xmlns:sys="clr-namespace:System;assembly=mscorlib" - xmlns:p4="clr-namespace:AllenNeuralDynamics.Core;assembly=AllenNeuralDynamics.Core" + xmlns:p5="clr-namespace:AllenNeuralDynamics.Core;assembly=AllenNeuralDynamics.Core" xmlns:spk="clr-namespace:Bonsai.Spinnaker;assembly=Bonsai.Spinnaker" xmlns:vid="clr-namespace:Bonsai.Video;assembly=Bonsai.Video" xmlns:num="clr-namespace:Bonsai.Numerics;assembly=Bonsai.Numerics" - xmlns:p5="clr-namespace:Bonsai.Numerics.Distributions;assembly=Bonsai.Numerics" + xmlns:p6="clr-namespace:Bonsai.Numerics.Distributions;assembly=Bonsai.Numerics" xmlns:scr="clr-namespace:Bonsai.Scripting.Expressions;assembly=Bonsai.Scripting.Expressions" - xmlns:p6="clr-namespace:AllenNeuralDynamics.VersionControl;assembly=AllenNeuralDynamics.VersionControl" - xmlns:p7="clr-namespace:System.Reactive;assembly=System.Reactive.Core" - xmlns:p8="clr-namespace:AllenNeuralDynamics.Core.Logging;assembly=AllenNeuralDynamics.Core" - xmlns:p9="clr-namespace:Harp.Olfactometer;assembly=Harp.Olfactometer" + xmlns:p7="clr-namespace:AllenNeuralDynamics.VersionControl;assembly=AllenNeuralDynamics.VersionControl" + xmlns:p8="clr-namespace:System.Reactive;assembly=System.Reactive.Core" + xmlns:p9="clr-namespace:AllenNeuralDynamics.Core.Logging;assembly=AllenNeuralDynamics.Core" + xmlns:p10="clr-namespace:Harp.Olfactometer;assembly=Harp.Olfactometer" xmlns:dsp="clr-namespace:Bonsai.Dsp;assembly=Bonsai.Dsp" - xmlns:p10="clr-namespace:AllenNeuralDynamics.Core.Design;assembly=AllenNeuralDynamics.Core.Design" - xmlns:p11="clr-namespace:AllenNeuralDynamics.HarpUtils;assembly=AllenNeuralDynamics.HarpUtils" - xmlns:p12="clr-namespace:AllenNeuralDynamics.SniffDetector;assembly=AllenNeuralDynamics.SniffDetector" + xmlns:p11="clr-namespace:AllenNeuralDynamics.Core.Design;assembly=AllenNeuralDynamics.Core.Design" + xmlns:p12="clr-namespace:AllenNeuralDynamics.HarpUtils;assembly=AllenNeuralDynamics.HarpUtils" + xmlns:p13="clr-namespace:AllenNeuralDynamics.SniffDetector;assembly=AllenNeuralDynamics.SniffDetector" xmlns:io="clr-namespace:Bonsai.IO;assembly=Bonsai.System" xmlns:cv="clr-namespace:Bonsai.Vision;assembly=Bonsai.Vision" - xmlns:p13="clr-namespace:;assembly=Extensions" + xmlns:p14="clr-namespace:;assembly=Extensions" xmlns:bv="clr-namespace:BonVision;assembly=BonVision" - xmlns:p14="clr-namespace:AllenNeuralDynamics.LicketySplit;assembly=AllenNeuralDynamics.LicketySplit" - xmlns:p15="clr-namespace:AllenNeuralDynamics.Treadmill;assembly=AllenNeuralDynamics.Treadmill" - xmlns:p16="clr-namespace:Bonsai.Numerics.Interpolation;assembly=Bonsai.Numerics" + xmlns:p15="clr-namespace:AllenNeuralDynamics.LicketySplit;assembly=AllenNeuralDynamics.LicketySplit" + xmlns:p16="clr-namespace:AllenNeuralDynamics.Treadmill;assembly=AllenNeuralDynamics.Treadmill" + xmlns:p17="clr-namespace:Bonsai.Numerics.Interpolation;assembly=Bonsai.Numerics" xmlns:gui="clr-namespace:Bonsai.Gui;assembly=Bonsai.Gui" xmlns:gli="clr-namespace:Bonsai.Shaders.Input;assembly=Bonsai.Shaders" - xmlns:p17="clr-namespace:Bonsai.Design;assembly=Bonsai.Design" - xmlns:p18="clr-namespace:Bonsai.Vision.Design;assembly=Bonsai.Vision.Design" + xmlns:p18="clr-namespace:Bonsai.Design;assembly=Bonsai.Design" + xmlns:p19="clr-namespace:Bonsai.Vision.Design;assembly=Bonsai.Vision.Design" xmlns:zg="clr-namespace:Bonsai.Gui.ZedGraph;assembly=Bonsai.Gui.ZedGraph" xmlns="https://bonsai-rx.org/2018/workflow"> @@ -475,6 +476,154 @@ + + RigSchema + + + HarpClockRepeaters + + + + + + CreateRepeaters + + + + Source1 + + + + 1 + + + + ThisHarp + + + ThisHarpClockGenCommands + + + ThisHarp + + + PortName + + + + + + + + + Active + On + true + On + Enabled + false + COMx + + + + ThisHarpClockGenEvents + + + ThisHarpClockGenEvents + + + + + + + Repeater + + + + RepeaterRegisterStatus + + + RepeaterRegisterStatus + + + + + + + Source1 + + + + + + + + + + Write + + Repeater + + + + ThisHarpClockGenCommands + + + RepeaterRegisterStatus + + + + + + Source1 + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + InstantiatedRepeaters + @@ -504,6 +653,13 @@ + + + + + + + @@ -645,14 +801,14 @@ - + Default - 19000 - 0 - 1 - - Mono8 + 19000 + 0 + 1 + + Mono8 @@ -973,13 +1129,13 @@ - - 0 - 10 + + 0 + 10 - + @@ -1015,8 +1171,8 @@ RngSeed - - ../. + + ../. @@ -1131,22 +1287,22 @@ Initialization - + StartExperiment ActiveSite - + SoftwareEvent - + RuntimeLogging - + EndExperiment - + StartLogging @@ -1220,8 +1376,8 @@ Repository - - false + + false @@ -1252,8 +1408,8 @@ - - Repository is not clean! Please discard all local changes. + + Repository is not clean! Please discard all local changes. @@ -1294,8 +1450,8 @@ - - Number of patches does not match transition matrix size. + + Number of patches does not match transition matrix size. @@ -1332,8 +1488,8 @@ HarpOlfactometerEvents - - + + Value @@ -1408,8 +1564,8 @@ it - - Flow on Channel3 is lower than expected. + + Flow on Channel3 is lower than expected. @@ -1520,8 +1676,8 @@ it - - Dropped frame detected during pre-session! + + Dropped frame detected during pre-session! @@ -1636,8 +1792,8 @@ it - - Dropped frame detected during pre-session! + + Dropped frame detected during pre-session! @@ -1661,8 +1817,8 @@ - - TriggeredCameraControl must specify a valid FrameRate property! + + TriggeredCameraControl must specify a valid FrameRate property! @@ -1778,10 +1934,10 @@ - - - Warning - Exclamation + + + Warning + Exclamation @@ -1847,6 +2003,64 @@ + + InstantiatedRepeaters + + + RigSchema + + + HarpClockRepeaters.Count + + + + + + StartExperiment + + + + + + + + + + + + + + Source1 + + + Item1 + + + + + + + + + + + Item2 + + + Unexpected number of instantiated Harp Clock Generators. Expected: {1}, got: {0} + Item1,Item2 + + + + + + it + + + + + + @@ -1875,6 +2089,20 @@ + + + + + + + + + + + + + + @@ -1934,7 +2162,7 @@ - + Modality Behavior @@ -2268,9 +2496,9 @@ - - - + + + @@ -2315,9 +2543,9 @@ - - - + + + @@ -2362,9 +2590,9 @@ - - - + + + @@ -2409,9 +2637,9 @@ - - - + + + @@ -2456,13 +2684,13 @@ - - - + + + - + Modality @@ -2503,9 +2731,9 @@ - - - + + + @@ -2550,9 +2778,9 @@ - - - + + + @@ -2721,7 +2949,7 @@ it.SynchQuadValue.Value as SynchQuadValue) - + HarpTimestampSource @@ -2738,7 +2966,7 @@ it.SynchQuadValue.Value as SynchQuadValue) - + Modality @@ -2774,7 +3002,7 @@ it.SynchQuadValue.Value as SynchQuadValue) - + HarpTimestampSource @@ -2791,7 +3019,7 @@ it.SynchQuadValue.Value as SynchQuadValue) - + Modality @@ -2810,8 +3038,8 @@ it.SynchQuadValue.Value as SynchQuadValue) Annotations - - Annotations + + Annotations @@ -2831,7 +3059,7 @@ it.SynchQuadValue.Value as SynchQuadValue) - + HarpTimestampSource @@ -2848,7 +3076,7 @@ it.SynchQuadValue.Value as SynchQuadValue) - + Modality @@ -2874,8 +3102,8 @@ it.SynchQuadValue.Value as SynchQuadValue) Head - - RepositoryStatus + + RepositoryStatus @@ -2885,8 +3113,8 @@ it.SynchQuadValue.Value as SynchQuadValue) RngSeedValue - - RngSeed + + RngSeed @@ -3064,7 +3292,7 @@ Value as IsStopped) - + Modality BehaviorVideos @@ -3270,9 +3498,9 @@ Value as IsStopped) - - false - 0 + + false + 0 @@ -3778,9 +4006,9 @@ Value as IsStopped) - - false - 0 + + false + 0 @@ -4109,7 +4337,7 @@ Value as IsStopped) - + Modality Other @@ -4281,8 +4509,8 @@ Value as IsStopped) - - SoftwareEvent + + SoftwareEvent @@ -4295,10 +4523,10 @@ Value as IsStopped) - + - + Modality @@ -4335,7 +4563,7 @@ Value as IsStopped) - + HarpTimestampSource @@ -4352,7 +4580,7 @@ Value as IsStopped) - + Modality @@ -4451,8 +4679,8 @@ Value as IsStopped) StopVelocityThreshold - - StopVelocityTreshold + + StopVelocityTreshold @@ -4747,8 +4975,8 @@ Value as IsStopped) Data - - true + + true @@ -4844,13 +5072,13 @@ Value as IsStopped) - - 0 - 1 + + 0 + 1 - + @@ -5354,8 +5582,8 @@ Value as IsStopped) DepletionVariable - - DepletionVariable + + DepletionVariable @@ -5385,8 +5613,8 @@ Value as IsStopped) ActivePatch - - ActivePatch + + ActivePatch @@ -5396,8 +5624,8 @@ Value as IsStopped) PatchRewardAvailable - - PatchRewardAvailable + + PatchRewardAvailable @@ -5407,8 +5635,8 @@ Value as IsStopped) PatchRewardAmount - - PatchRewardAmount + + PatchRewardAmount @@ -5418,8 +5646,8 @@ Value as IsStopped) PatchRewardProbability - - PatchRewardProbability + + PatchRewardProbability @@ -5429,8 +5657,8 @@ Value as IsStopped) DepletionVariable - - DepletionVariable + + DepletionVariable @@ -5516,7 +5744,7 @@ Value as IsStopped) - + Channel3Range FlowRate1000 @@ -5534,7 +5762,7 @@ Value as IsStopped) - + Channel3Range FlowRate100 @@ -5561,28 +5789,28 @@ Value as IsStopped) - + Write - - FlowRate1000 + + FlowRate1000 HarpOlfactometerCommands - + Write - - Flowmeter DI0Trigger ChannelActualFlow + + Flowmeter DI0Trigger ChannelActualFlow HarpOlfactometerCommands - + Write - - Enabled + + Enabled @@ -5612,7 +5840,7 @@ Value as IsStopped) - + Channel3Range FlowRate1000 @@ -5630,7 +5858,7 @@ Value as IsStopped) - + Channel3Range FlowRate100 @@ -5653,7 +5881,7 @@ Value as IsStopped) - + FlowRate1000 @@ -5682,15 +5910,15 @@ Value as IsStopped) - - true - 0 - 0 - 0 - NaN - true - 100 - 1000 + + true + 0 + 0 + 0 + NaN + true + 100 + 1000 @@ -5742,8 +5970,8 @@ Value as IsStopped) ArmOdor - - ArmOdor + + ArmOdor @@ -5789,15 +6017,15 @@ Value as IsStopped) - - false - 0 - 0 - 0 - 0 - false - 100 - 1000 + + false + 0 + 0 + 0 + 0 + false + 100 + 1000 @@ -5872,7 +6100,7 @@ Value as IsStopped) - + EndValvesState EndValve0 @@ -5891,16 +6119,16 @@ Value as IsStopped) - + EndValvesState None - + Write - + HarpOlfactometerCommands @@ -5985,7 +6213,7 @@ Value as IsStopped) HarpBehaviorCommands - + TriggerValve @@ -6174,8 +6402,8 @@ Value as IsStopped) GiveReward - - GiveReward + + GiveReward @@ -6644,7 +6872,7 @@ Value as IsStopped) FeedbackControl - + ChoiceFeedback @@ -6665,8 +6893,8 @@ Value as IsStopped) ChoiceFeedback - - ChoiceFeedback + + ChoiceFeedback @@ -6709,14 +6937,14 @@ Value as IsStopped) HarpLickometerEvents - - + + Value - + Channel0 @@ -6761,8 +6989,8 @@ Value as IsStopped) HarpLickometerEvents - - + + LickometerUntriggerThreshold @@ -6770,8 +6998,8 @@ Value as IsStopped) HarpLickometerEvents - - + + LickometerTriggerThreshold @@ -6848,9 +7076,9 @@ Value as IsStopped) - + Write - + HarpLickometerCommands @@ -6905,9 +7133,9 @@ Value as IsStopped) - + Write - + HarpLickometerCommands @@ -7115,8 +7343,8 @@ Value as IsStopped) HarpSniffDetectorEvents - - + + RigSchema @@ -7219,8 +7447,8 @@ Value as IsStopped) HarpTreadmillEvents - - + + @@ -7314,7 +7542,7 @@ Value as IsStopped) - + @@ -7339,11 +7567,11 @@ Value as IsStopped) - + - + Write - + SendMessage @@ -7363,8 +7591,8 @@ Value as IsStopped) HarpTreadmillEvents - - + + HarpMessage @@ -7482,7 +7710,7 @@ Value as IsStopped) HarpBehaviorCommands - + AudioTrigger @@ -7609,7 +7837,7 @@ Value as IsStopped) VariableUpdaters - + UpdaterEvents @@ -7628,8 +7856,8 @@ Value as IsStopped) StopDurationOffset - - UpdaterStopDurationOffset + + UpdaterStopDurationOffset @@ -7662,8 +7890,8 @@ Value as IsStopped) StopVelocityThreshold - - UpdaterStopVelocityThreshold + + UpdaterStopVelocityThreshold @@ -7685,8 +7913,8 @@ Value as IsStopped) RewardDelayOffset - - UpdaterRewardDelayOffset + + UpdaterRewardDelayOffset @@ -8300,8 +8528,8 @@ Item2 as Start ActiveSite - - ActiveSite + + ActiveSite @@ -8311,8 +8539,8 @@ Item2 as Start VisualCorridorSpecs - - VisualCorridorSpecs + + VisualCorridorSpecs @@ -9046,8 +9274,8 @@ Item2 as Start - - TaskLogic_RewardAvailable + + TaskLogic_RewardAvailable @@ -9192,13 +9420,13 @@ Item2 as Start RngSeed - - 0 - 1 + + 0 + 1 - + @@ -9319,8 +9547,8 @@ Item2 as Start GiveReward - - TaskLogic_RewardDelivery + + TaskLogic_RewardDelivery @@ -9607,7 +9835,7 @@ Item2 as Start StartCondition - + StartExperimentShortcut @@ -10246,7 +10474,7 @@ Item2 as Start Item1,Item2 - + +Trigger @@ -10603,7 +10831,7 @@ Item2 as Start Value.Image - + TriggeredCamerasStream @@ -10625,7 +10853,7 @@ Item2 as Start Value.Image - + MonitoringCamerasStream @@ -10642,7 +10870,7 @@ Item2 as Start Value - + CameraVisualizer @@ -10661,7 +10889,7 @@ Item2 as Start QCDiagnosis - + @@ -10680,7 +10908,7 @@ Item2 as Start - + LickometerState @@ -10886,7 +11114,7 @@ Item2 as Start SoftwareEvent - + DataVisualization @@ -11084,15 +11312,15 @@ Item2 as TotalReward) - - true - 0 - 0 - 0 - NaN - true - 100 - 1000 + + true + 0 + 0 + 0 + NaN + true + 100 + 1000 @@ -11160,7 +11388,7 @@ Item2 as TotalReward) - + CompoundRootPath @@ -11181,10 +11409,10 @@ Item2 as TotalReward) - - true - /E /DCOPY:DAT /R:100 /W:3 /tee - Normal + + true + /E /DCOPY:DAT /R:100 /W:3 /tee + Normal