public Halloween2014(IEnumerable<string> args)
{
hoursSmall.AddRange("5:00 pm", "9:00 pm");
hoursInside.AddRange("6:00 pm", "10:00 pm");
hoursInside.SetForced(false);
// Logging
hoursSmall.Output.Log("Hours small");
hoursInside.Output.Log("Hours inside");
movingHead.OutputPan.Log("Pan");
movingHead.OutputTilt.Log("Tilt");
hoursSmall
.ControlsMasterPower(catAir)
.ControlsMasterPower(catLights)
.ControlsMasterPower(eyes);
hoursInside.Output.Subscribe(x =>
{
lightInside.Brightness = x ? 1.0 : 0.0;
lightMirrorSkeleton.Brightness = x ? 1.0 : 0.0;
});
flickerEffect.ConnectTo(lightStairs1.InputBrightness);
flickerEffect.ConnectTo(lightStairs2.InputBrightness);
// pulsatingEffect1.ConnectTo(lightBehindHeads.InputBrightness);
// pulsatingEffect1.ConnectTo(lightBehindSheet.InputBrightness);
pulsatingEffect1.ConnectTo(candySpot.InputBrightness);
pulsatingEffect2.ConnectTo(lightSpiderWeb.InputBrightness);
// pulsatingEffect2.ConnectTo(lightMirrorSkeleton.InputBrightness);
// pulsatingEffect2.ConnectTo(lightWindow.InputBrightness);
// pulsatingEffect2.ConnectTo(lightInside.InputBrightness);
// flickerEffect2.ConnectTo(lightInside.InputBrightness);
// pulsatingEffect1.ConnectTo(movingHead.InputBrightness);
// movingHead.InputBrightness.Log("Moving Head Brightness");
// popOut1.AddDevice(lightning1.InputBrightness);
// popOut2.ConnectTo(light.InputBrightness);
popOut1.ConnectTo(lightBehindHeads.InputBrightness);
popOut1.ConnectTo(lightBehindSheet.InputBrightness);
// popOut1 ConnectTo(lightFlash1.InputBrightness);
// popOut2.ConnectTo(lightFlash1.InputBrightness);
popOut2.ConnectTo(lightBehindSheet.InputBrightness);
popOut2.ConnectTo(lightning1.InputBrightness);
popOut3.ConnectTo(lightBehindHeads.InputBrightness);
popOut3.ConnectTo(lightBehindSheet.InputBrightness);
popOut3.ConnectTo(lightEntranceR.InputBrightness);
popOut3.ConnectTo(lightEntranceL.InputBrightness);
popOut3.ConnectTo(new BrightnessPowerAdapter(lightFlash1).InputBrightness);
// popOut3.ConnectTo(lightFlash1.InputBrightness);
// popOut4.ConnectTo(lightEntranceL.InputBrightness);
popOut4.ConnectTo(new BrightnessPowerAdapter(lightFlash1).InputBrightness);
popOut4.ConnectTo(new BrightnessPowerAdapter(lightFlash2).InputBrightness);
popOutBehindHeads.ConnectTo(lightBehindHeads.InputBrightness);
//popOut3.ConnectTo(movingHead.InputBrightness);
raspberryReaper.DigitalInputs[7].Connect(finalBeam, false);
raspberryReaper.DigitalOutputs[2].Connect(spiderEyes1);
raspberryReaper.DigitalOutputs[3].Connect(spiderEyes2);
raspberryCat.DigitalInputs[4].Connect(catMotion, true);
raspberryCat.DigitalInputs[5].Connect(firstBeam, false);
raspberryCat.DigitalOutputs[7].Connect(deadEnd);
raspberryCat.Connect(audioCat);
raspberryCat.Motor.Connect(georgeMotor);
raspberryReaper.Connect(audioReaper);
raspberryOla.Connect(audioOla);
raspberryGeorge.DigitalOutputs[7].Connect(fog);
raspberryGeorge.Connect(audioGeorge);
inputBrightness.ConnectTo(movingHead);
// Map Physical lights
acnOutput.Connect(new Physical.SmallRGBStrobe(reaperLight, 1), 20);
acnOutput.Connect(new Physical.MonopriceRGBWPinSpot(candySpot, 20), 20);
acnOutput.Connect(new Physical.MonopriceMovingHeadLight12chn(movingHead, 200), 20);
acnOutput.Connect(new Physical.GenericDimmer(catAir, 11), 20);
acnOutput.Connect(new Physical.GenericDimmer(eyes, 12), 20);
acnOutput.Connect(new Physical.GenericDimmer(catLights, 10), 20);
//BROKEN acnOutput.Connect(new Physical.GenericDimmer(testLight3, 103), 20);
// acnOutput.Connect(new Physical.GenericDimmer(lightning2, 100), 20);
acnOutput.Connect(new Physical.GenericDimmer(lightStairs1, 101), 20);
acnOutput.Connect(new Physical.GenericDimmer(lightStairs2, 102), 20);
acnOutput.Connect(new Physical.AmericanDJStrobe(lightning1, 5), 20);
acnOutput.Connect(new Physical.RGBStrobe(lightBehindHeads, 40), 20);
acnOutput.Connect(new Physical.RGBStrobe(lightBehindSheet, 60), 20);
acnOutput.Connect(new Physical.RGBStrobe(lightEntranceR, 70), 20);
acnOutput.Connect(new Physical.RGBStrobe(lightEntranceL, 80), 20);
acnOutput.Connect(new Physical.GenericDimmer(lightTree, 50), 20);
acnOutput.Connect(new Physical.GenericDimmer(lightSpiderWeb, 2), 21);
acnOutput.Connect(new Physical.GenericDimmer(lightMirrorSkeleton, 1), 22);
acnOutput.Connect(new Physical.GenericDimmer(lightInside, 2), 22);
acnOutput.Connect(new Physical.GenericDimmer(lightWindow, 3), 22);
acnOutput.Connect(new Physical.GenericDimmer(lightFlash1, 1), 21);
acnOutput.Connect(new Physical.GenericDimmer(lightFlash2, 4), 22);
candySpot.SetOnlyColor(Color.Green);
oscServer.RegisterAction<int>("/mrmr/pushbutton/0/Hakan-iPhone-6", (msg, data) =>
{
if (data.First() != 0)
{
audioOla.PlayTrack("12 Fear of the Dark");
// popOut4.Pop(1.0);
// stateMachine.SetState(States.Stair);
// Exec.Execute(testSeq);
// Exec.Execute(reaperSeq);
// popOut4.Pop(1.0);
// pulsatingEffect2.Start();
}
});
oscServer.RegisterAction<int>("/mrmr/pushbutton/1/Hakan-iPhone-6", (msg, data) =>
{
if (data.Any() && data.First() != 0)
{
audioOla.NextBackgroundTrack();
// stateMachine.SetState(States.George);
// Exec.Execute(georgeSeq);
}
});
oscServer.RegisterAction<int>("/mrmr/pushbutton/2/Hakan-iPhone-6", (msg, data) =>
{
if (data.First() != 0)
{
Exec.Execute(reaperPopSeq);
}
});
oscServer.RegisterAction<int>("/mrmr/pushbutton/3/Hakan-iPhone-6", (msg, data) =>
{
if (data.First() != 0)
{
catLights.Value = true;
switch (random.Next(3))
{
case 0:
audioCat.PlayEffect("386 Demon Creature Growls");
break;
case 1:
audioCat.PlayEffect("348 Spider Hiss");
break;
case 2:
audioCat.PlayEffect("death-scream");
break;
}
Thread.Sleep(2000);
catLights.Value = false;
}
});
finalBeam.WhenOutputChanges(x =>
{
if (x && hoursSmall.IsOpen)
{
Exec.Execute(finalSeq);
}
// lightning1.Brightness = x ? 1.0 : 0.0;
//if (x)
//{
// Exec.Execute(thunderSeq);
//}
});
firstBeam.WhenOutputChanges(x =>
{
if (x && hoursSmall.IsOpen)
{
// Exec.Execute(reaperSeq);
if (stateMachine.CurrentState == States.Background ||
stateMachine.CurrentState == States.StepForward)
stateMachine.SetState(States.Stair);
}
});
buttonTest2.WhenOutputChanges(x =>
{
if (x)
{
audioOla.NextBackgroundTrack();
// Exec.Execute(georgeSeq);
}
});
raspberryOla.AudioTrackStart.Subscribe(x =>
{
// Next track
switch (x)
{
case "12 Fear of the Dark":
// Do nothing
break;
case "Thunder1":
timelineThunder1.Start();
break;
case "Thunder2":
timelineThunder2.Start();
break;
case "Thunder3":
timelineThunder3.Start();
break;
case "Thunder4":
timelineThunder4.Start();
break;
case "Thunder5":
timelineThunder5.Start();
break;
case "Thunder6":
timelineThunder6.Start();
break;
case "Thunder7":
timelineThunder7.Start();
break;
case "Thunder8":
timelineThunder8.Start();
break;
}
});
buttonTest4.WhenOutputChanges(x =>
{
if (x)
audioOla.PlayEffect("125919__klankbeeld__horror-what-are-you-doing-here-cathedral");
// Exec.Execute(reaperSeq);
// lightning2.Brightness = x ? 1.0 : 0.0;
// if (x)
// popOut1.Pop(1.0);
// if (x)
// lightStairs1.Brightness = x ? 1.0 : 0.0;
// testLight3.Brightness = x ? 1.0 : 0.0;
// audioSpider.PlayEffect("348 Spider Hiss");
// Exec.Execute(thunderSeq);
});
buttonTest3.WhenOutputChanges(x =>
{
// fog.Power = x;
if (x)
{
Exec.Execute(reaperPopSeq);
//for (int i = 0; i < 100; i++)
//{
// raspberryReaper.Test(i);
//}
}
// audioGeorge.PlayEffect("242004__junkfood2121__fart-01");
});
raspberryReaper.DigitalOutputs[7].Connect(reaperPopUp);
raspberryReaper.DigitalOutputs[6].Connect(reaperEyes);
raspberryReaper.DigitalOutputs[5].Connect(skullEyes);
forceOpen.WhenOutputChanges(x =>
{
if (x)
hoursSmall.SetForced(true);
else
hoursSmall.SetForced(null);
});
inputH.WhenOutputChanges(x =>
{
movingHead.SetOnlyColor(HSV.ColorFromHSV(x.Value.GetByteScale(), inputS.Value, 1.0));
});
inputS.Output.Subscribe(x =>
{
movingHead.SetOnlyColor(HSV.ColorFromHSV(inputH.Value.GetByteScale(), x.Value, 1.0));
});
inputStrobe.Output.Controls(x => movingHead.StrobeSpeed = x);
//midiInput.Controller(midiChannel, 1).Controls(inputBrightness.Control);
//midiInput.Controller(midiChannel, 2).Controls(inputH.Control);
//midiInput.Controller(midiChannel, 3).Controls(inputS.Control);
//midiInput.Controller(midiChannel, 4).Controls(inputStrobe.Control);
//midiInput.Controller(midiChannel, 5).Controls(Observer.Create<double>(x =>
// {
// inputPan.Control.OnNext(new DoubleZeroToOne(x * 540));
// }));
//midiInput.Controller(midiChannel, 6).Controls(Observer.Create<double>(x =>
//{
// inputTilt.Control.OnNext(new DoubleZeroToOne(x * 270));
//}));
//midiInput.Note(midiChannel, 36).Controls(buttonTest1.Control);
//midiInput.Note(midiChannel, 37).Controls(buttonTest2.Control);
//midiInput.Note(midiChannel, 38).Controls(buttonTest3.Control);
//midiInput.Note(midiChannel, 39).Controls(buttonTest4.Control);
//midiInput.Note(midiChannel, 40).Controls(buttonCatTrigger.Control);
//buttonTest4.Output.Subscribe(x =>
// {
// if (x)
// {
// audioOla.NextBackgroundTrack();
// }
// });
manualHeadMovement.Output.Subscribe(x =>
{
if (x)
{
inputPan.Output.Controls(p => movingHead.Pan = p.Value);
inputTilt.Output.Controls(t => movingHead.Tilt = t.Value);
}
else
{
// inputPan.Output.Dis
}
});
// buttonTest2.Output.Subscribe(reaperPopUp.PowerControl);
catMotion.Output.Subscribe(catLights.Control);
/*
finalBeam.Output.Subscribe(x =>
{
lightning1.Brightness = x ? 1.0 : 0.0;
});
*/
// buttonTest1.Output.Subscribe(pulsatingEffect2.InputRun);
//buttonTest1.Output.Subscribe(x =>
// {
// pulsatingEffect2.Start
// if(x)
// if (x)
// {
// movingHead.Brightness = 1;
// movingHead.Color = Color.Red;
// // testLight4.StrobeSpeed = 1.0;
// }
// else
// {
// movingHead.TurnOff();
// }
// });
catMotion.Output.Subscribe(x =>
{
if (x && hoursSmall.IsOpen)
Executor.Current.Execute(catSeq);
});
buttonCatTrigger.Output.Subscribe(x =>
{
if (x)
{
catLights.Value = true;
switch (random.Next(3))
{
case 0:
audioCat.PlayEffect("386 Demon Creature Growls");
break;
case 1:
audioCat.PlayEffect("348 Spider Hiss");
break;
case 2:
audioCat.PlayEffect("death-scream");
break;
}
Thread.Sleep(2000);
catLights.Value = false;
}
});
buttonTest1.Output.Subscribe(x =>
{
if (x)
audioOla.PlayTrack("12 Fear of the Dark");
//if(x)
// georgeMotor.SetVector(0.9, 0, S(15));
// deadEnd.Power = x;
});
// hoursSmall.Output.Subscribe(catAir.InputPower);
// hoursSmall.Output.Subscribe(flickerEffect.InputRun);
//hoursSmall.Output.Subscribe(pulsatingEffect1.InputRun);
//hoursSmall.Output.Subscribe(pulsatingEffect2.InputRun);
hoursSmall.Output.Subscribe(lightTree.Control);
hoursSmall.Output.Subscribe(x =>
{
if (x)
{
stateMachine.SetBackgroundState(States.Background);
stateMachine.SetState(States.Background);
}
else
{
stateMachine.Hold();
stateMachine.SetBackgroundState(null);
}
});
timelineThunder1.AddMs(500, "A");
timelineThunder1.AddMs(3500, "B");
timelineThunder1.AddMs(4500, "C");
timelineThunder1.TimelineTrigger += TriggerThunderTimeline;
timelineThunder2.AddMs(500, "A");
timelineThunder2.AddMs(1500, "B");
timelineThunder2.AddMs(1600, "C");
timelineThunder2.AddMs(3700, "C");
timelineThunder2.TimelineTrigger += TriggerThunderTimeline;
timelineThunder3.AddMs(100, "A");
timelineThunder3.AddMs(200, "B");
timelineThunder3.AddMs(300, "C");
timelineThunder3.TimelineTrigger += TriggerThunderTimeline;
timelineThunder4.AddMs(0, "A");
timelineThunder4.AddMs(3500, "B");
timelineThunder4.AddMs(4500, "C");
timelineThunder4.TimelineTrigger += TriggerThunderTimeline;
timelineThunder5.AddMs(1100, "A");
timelineThunder5.AddMs(3500, "B");
timelineThunder5.AddMs(4700, "C");
timelineThunder5.TimelineTrigger += TriggerThunderTimeline;
timelineThunder6.AddMs(1000, "A");
timelineThunder6.AddMs(1800, "B");
timelineThunder6.AddMs(6200, "C");
timelineThunder6.TimelineTrigger += TriggerThunderTimeline;
timelineThunder7.AddMs(0, "A");
timelineThunder7.AddMs(200, "B");
timelineThunder7.AddMs(300, "C");
timelineThunder7.TimelineTrigger += TriggerThunderTimeline;
timelineThunder8.AddMs(500, "A");
timelineThunder8.AddMs(4000, "B");
timelineThunder8.AddMs(4200, "C");
timelineThunder8.TimelineTrigger += TriggerThunderTimeline;
stateMachine.ForFromSequence(States.Background, backgroundSeq);
stateMachine.ForFromSequence(States.Stair, reaperSeq);
stateMachine.ForFromSequence(States.George, georgeSeq);
stateMachine.ForFromSequence(States.StepForward, stepForwardSeq);
georgeSeq.WhenExecuted
.Execute(instance =>
{
var controlPan = new Effect.Fader(S(3.8), 106, 150, false);
var controlTilt = new Effect.Fader(S(3.8), 231.8823531, 168.3529407, false);
controlPan.ConnectTo(x => movingHead.Pan = x);
controlTilt.ConnectTo(x => movingHead.Tilt = x);
controlPan.Prime();
controlTilt.Prime();
movingHead.Brightness = 0;
// Make sure George isn't moving
georgeMotor.WaitForVectorReached();
instance.WaitFor(S(1.5));
controlPan.Start();
controlTilt.Start();
georgeMotor.SetVector(1.0, 450, S(10));
instance.WaitFor(S(1.2));
movingHead.SetColor(Color.Red, 0.1);
instance.WaitFor(S(1.0));
audioGeorge.PlayEffect("162 Blood Curdling Scream of Terror");
georgeMotor.WaitForVectorReached();
instance.WaitFor(S(4));
movingHead.Brightness = 0;
georgeMotor.SetVector(0.9, 0, S(15));
movingHead.Pan = 106;
movingHead.Tilt = 31;
//georgeMotor.WaitForVectorReached();
// deadEnd.Power = true;
instance.WaitFor(S(0.5));
// deadEnd.Power = false;
// Exec.Execute(thunderSeq);
stateMachine.NextState();
});
stepForwardSeq.WhenExecuted
.SetUp(() =>
{
audioOla.PlayTrack("152 Haunted Castle");
candySpot.SetOnlyColor(Color.Green);
pulsatingEffect1.Start();
pulsatingEffect2.Start();
})
.Execute(i =>
{
i.WaitFor(S(30.0));
})
.TearDown(() =>
{
audioOla.PauseTrack();
pulsatingEffect1.Stop();
pulsatingEffect2.Stop();
});
reaperSeq.WhenExecuted
.SetUp(() =>
{
flickerEffect.Stop();
pulsatingEffect2.Stop();
})
.Execute(instance =>
{
// switchFog.SetPower(true);
// this.lastFogRun = DateTime.Now;
// Executor.Current.Execute(deadendSeq);
// audioGeorge.PlayEffect("ghostly");
// instance.WaitFor(S(0.5));
// popOutEffect.Pop(1.0);
// instance.WaitFor(S(1.0));
movingHead.Pan = 106;
movingHead.Tilt = 31;
fog.Value = true;
this.lastFogRun = DateTime.Now;
instance.WaitFor(S(0.05));
audioReaper.PlayEffect("348 Spider Hiss", 1.0, 0.0);
instance.WaitFor(S(0.05));
spiderEyes1.Value = true;
instance.WaitFor(S(0.5));
movingHead.SetColor(Color.Turquoise, 0.2);
movingHead.StrobeSpeed = 0.8;
deadEnd.Value = true;
instance.WaitFor(S(0.3));
deadEnd.Value = false;
instance.WaitFor(S(2.5));
movingHead.StrobeSpeed = 0;
movingHead.Brightness = 0;
movingHead.Pan = 80;
movingHead.Tilt = 26;
instance.WaitFor(S(1.0));
audioReaper.PlayNewEffect("laugh", 0.0, 1.0);
instance.WaitFor(S(0.1));
spiderEyes1.Value = false;
reaperPopUp.Value = true;
reaperLight.Color = Color.Red;
reaperLight.Brightness = 1;
reaperLight.StrobeSpeed = 1;
instance.WaitFor(S(0.5));
reaperEyes.Value = true;
instance.WaitFor(S(2.0));
reaperPopUp.Value = false;
reaperEyes.Value = false;
reaperLight.TurnOff();
instance.WaitFor(S(2.0));
audioOla.PlayEffect("424 Coyote Howling", 0.0, 1.0);
audioGeorge.PlayEffect("424 Coyote Howling");
movingHead.SetColor(Color.Orange, 0.2);
instance.WaitFor(S(2.0));
spiderEyes2.Value = true;
popOut2.Pop(0.4);
audioGeorge.PlayEffect("348 Spider Hiss");
audioReaper.PlayEffect("348 Spider Hiss");
movingHead.Brightness = 0.7;
movingHead.Color = Color.Red;
movingHead.StrobeSpeed = 0.8;
movingHead.Pan = 51;
movingHead.Tilt = 61;
instance.WaitFor(S(2.0));
movingHead.StrobeSpeed = 0.0;
movingHead.Brightness = 0;
spiderEyes2.Value = false;
instance.WaitFor(S(2.0));
movingHead.Pan = 106;
movingHead.Tilt = 231;
stateMachine.NextState();
})
.TearDown(() =>
{
flickerEffect.Start();
pulsatingEffect2.Start();
fog.Value = false;
});
reaperPopSeq.WhenExecuted
.Execute(instance =>
{
audioReaper.PlayNewEffect("laugh", 0.0, 1.0);
instance.WaitFor(S(0.1));
reaperPopUp.Value = true;
reaperLight.Color = Color.Red;
reaperLight.Brightness = 1;
reaperLight.StrobeSpeed = 1;
instance.WaitFor(S(0.5));
reaperEyes.Value = true;
instance.WaitFor(S(2.0));
reaperPopUp.Value = false;
reaperEyes.Value = false;
reaperLight.TurnOff();
instance.WaitFor(S(0.5));
});
finalSeq.WhenExecuted
.SetUp(() =>
{
audioOla.PauseTrack();
pulsatingEffect1.Stop();
pulsatingEffect2.Stop();
})
.Execute(i =>
{
skullEyes.Value = true;
candySpot.SetColor(Color.Red);
i.WaitFor(S(1.0));
lightBehindHeads.SetOnlyColor(Color.White);
popOutBehindHeads.Pop(1.0);
audioOla.PlayEffect("125919__klankbeeld__horror-what-are-you-doing-here-cathedral", 0.0, 0.7);
i.WaitFor(S(10));
})
.TearDown(() =>
{
audioOla.PlayBackground();
skullEyes.Value = false;
candySpot.SetOnlyColor(Color.Green);
pulsatingEffect1.Start();
pulsatingEffect2.Start();
// candySpot.SetColor(Color.Green);
// audioOla.PlayBackground();
if (stateMachine.CurrentState == States.StepForward)
stateMachine.SetState(States.Background);
});
thunderSeq.WhenExecuted
.SetUp(() =>
{
audioOla.PauseBackground();
// movingHead.Pan = 0.25;
// movingHead.Tilt = 0.5;
Thread.Sleep(200);
})
.Execute(i =>
{
audioOla.PlayTrack("08 Weather-lightning-strike2");
// movingHead.SetOnlyColor(Color.White);
popOut1.Pop(1.0);
popOut2.Pop(1.0);
popOut3.Pop(1.0);
i.WaitFor(S(4));
})
.TearDown(() =>
{
audioOla.PauseTrack();
audioOla.PlayBackground();
});
backgroundSeq.WhenExecuted
.SetUp(() =>
{
audioOla.NextBackgroundTrack();
flickerEffect.Start();
pulsatingEffect1.Start();
pulsatingEffect2.Start();
})
.Execute(i =>
{
while (!i.IsCancellationRequested)
{
i.WaitFor(S(1));
if (!this.lastFogRun.HasValue || (DateTime.Now - this.lastFogRun.Value).TotalMinutes > 10)
{
// Run the fog for a little while
fog.Value = true;
i.WaitFor(S(4));
fog.Value = false;
this.lastFogRun = DateTime.Now;
}
}
})
.TearDown(() =>
{
flickerEffect.Stop();
pulsatingEffect1.Stop();
pulsatingEffect2.Stop();
audioOla.PauseTrack();
audioOla.PauseBackground();
});
catSeq.WhenExecuted
.Execute(instance =>
{
var maxRuntime = System.Diagnostics.Stopwatch.StartNew();
catLights.Value = true;
while (true)
{
switch (random.Next(4))
{
case 0:
audioCat.PlayEffect("266 Monster Growl 7", 1.0, 1.0);
instance.WaitFor(TimeSpan.FromSeconds(2.0));
break;
case 1:
audioCat.PlayEffect("285 Monster Snarl 2", 1.0, 1.0);
instance.WaitFor(TimeSpan.FromSeconds(3.0));
break;
case 2:
audioCat.PlayEffect("286 Monster Snarl 3", 1.0, 1.0);
instance.WaitFor(TimeSpan.FromSeconds(2.5));
break;
case 3:
audioCat.PlayEffect("287 Monster Snarl 4", 1.0, 1.0);
instance.WaitFor(TimeSpan.FromSeconds(1.5));
break;
default:
instance.WaitFor(TimeSpan.FromSeconds(3.0));
break;
}
instance.CancelToken.ThrowIfCancellationRequested();
if (maxRuntime.Elapsed.TotalSeconds > 10)
break;
}
})
.TearDown(() =>
{
catLights.Value = false;
});
}