private ushort VOLUMEPERCENTTOI (  SplusExecutionContext __context__, CrestronString STR ) 
     { 
     ushort FRACTION = 0;
     
     
     __context__.SourceCodeLine = 214;
     FRACTION = (ushort) ( ((Byte( STR , (int)( 3 ) ) * 256) + Byte( STR , (int)( 4 ) )) ) ; 
     __context__.SourceCodeLine = 215;
     if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( FRACTION > 32767 ))  ) ) 
         { 
         __context__.SourceCodeLine = 216;
         _SplusNVRAM.VOLUME = (ushort) ( (((Byte( STR , (int)( 2 ) ) + 1) * 65535) / 100) ) ; 
         } 
     
     else 
         { 
         __context__.SourceCodeLine = 219;
         _SplusNVRAM.VOLUME = (ushort) ( ((Byte( STR , (int)( 2 ) ) * 65535) / 100) ) ; 
         } 
     
     __context__.SourceCodeLine = 221;
     _SplusNVRAM.RETURNI = (ushort) ( _SplusNVRAM.VOLUME ) ; 
     __context__.SourceCodeLine = 223;
     return (ushort)( _SplusNVRAM.RETURNI) ; 
     
     }
 private void SEND (  SplusExecutionContext __context__, CrestronString STR1 ) 
     { 
     
     __context__.SourceCodeLine = 126;
     _SplusNVRAM.CHECKSUM = (ushort) ( 0 ) ; 
     __context__.SourceCodeLine = 127;
     _SplusNVRAM.SENDSTRING  .UpdateValue ( ""  ) ; 
     __context__.SourceCodeLine = 128;
     ushort __FN_FORSTART_VAL__1 = (ushort) ( 1 ) ;
     ushort __FN_FOREND_VAL__1 = (ushort)Functions.Length( STR1 ); 
     int __FN_FORSTEP_VAL__1 = (int)1; 
     for ( _SplusNVRAM.I  = __FN_FORSTART_VAL__1; (__FN_FORSTEP_VAL__1 > 0)  ? ( (_SplusNVRAM.I  >= __FN_FORSTART_VAL__1) && (_SplusNVRAM.I  <= __FN_FOREND_VAL__1) ) : ( (_SplusNVRAM.I  <= __FN_FORSTART_VAL__1) && (_SplusNVRAM.I  >= __FN_FOREND_VAL__1) ) ; _SplusNVRAM.I  += (ushort)__FN_FORSTEP_VAL__1) 
         { 
         __context__.SourceCodeLine = 130;
         _SplusNVRAM.CHECKSUM = (ushort) ( (_SplusNVRAM.CHECKSUM ^ Byte( STR1 , (int)( _SplusNVRAM.I ) )) ) ; 
         __context__.SourceCodeLine = 131;
         if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt (Byte( STR1 , (int)( _SplusNVRAM.I ) ) == 2) ) || Functions.TestForTrue ( Functions.BoolToInt (Byte( STR1 , (int)( _SplusNVRAM.I ) ) == 3) )) ) ) || Functions.TestForTrue ( Functions.BoolToInt (Byte( STR1 , (int)( _SplusNVRAM.I ) ) == 6) )) ) ) || Functions.TestForTrue ( Functions.BoolToInt (Byte( STR1 , (int)( _SplusNVRAM.I ) ) == 21) )) ) ) || Functions.TestForTrue ( Functions.BoolToInt (Byte( STR1 , (int)( _SplusNVRAM.I ) ) == 27) )) ))  ) ) 
             { 
             __context__.SourceCodeLine = 133;
             MakeString ( _SplusNVRAM.SENDSTRING , "{0}\u001B{1}", _SplusNVRAM.SENDSTRING , Functions.Chr (  (int) ( (Byte( STR1 , (int)( _SplusNVRAM.I ) ) + 128) ) ) ) ; 
             } 
         
         else 
             { 
             __context__.SourceCodeLine = 137;
             MakeString ( _SplusNVRAM.SENDSTRING , "{0}{1}", _SplusNVRAM.SENDSTRING , Functions.Chr (  (int) ( Byte( STR1 , (int)( _SplusNVRAM.I ) ) ) ) ) ; 
             } 
         
         __context__.SourceCodeLine = 128;
         } 
     
     __context__.SourceCodeLine = 140;
     if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt (_SplusNVRAM.CHECKSUM == 2) ) || Functions.TestForTrue ( Functions.BoolToInt (_SplusNVRAM.CHECKSUM == 3) )) ) ) || Functions.TestForTrue ( Functions.BoolToInt (_SplusNVRAM.CHECKSUM == 6) )) ) ) || Functions.TestForTrue ( Functions.BoolToInt (_SplusNVRAM.CHECKSUM == 21) )) ) ) || Functions.TestForTrue ( Functions.BoolToInt (_SplusNVRAM.CHECKSUM == 27) )) ))  ) ) 
         { 
         __context__.SourceCodeLine = 142;
         MakeString ( COMTX__DOLLAR__ , "\u0002{0}\u001B{1}\u0003", _SplusNVRAM.SENDSTRING , Functions.Chr (  (int) ( (_SplusNVRAM.CHECKSUM + 128) ) ) ) ; 
         } 
     
     else 
         { 
         __context__.SourceCodeLine = 146;
         MakeString ( COMTX__DOLLAR__ , "\u0002{0}{1}\u0003", _SplusNVRAM.SENDSTRING , Functions.Chr (  (int) ( _SplusNVRAM.CHECKSUM ) ) ) ; 
         } 
     
     
     }
 private CrestronString RECEIVE (  SplusExecutionContext __context__, CrestronString STR2 ) 
     { 
     
     __context__.SourceCodeLine = 153;
     _SplusNVRAM.RECEIVESTRING  .UpdateValue ( ""  ) ; 
     __context__.SourceCodeLine = 154;
     ushort __FN_FORSTART_VAL__1 = (ushort) ( 1 ) ;
     ushort __FN_FOREND_VAL__1 = (ushort)Functions.Length( STR2 ); 
     int __FN_FORSTEP_VAL__1 = (int)1; 
     for ( _SplusNVRAM.J  = __FN_FORSTART_VAL__1; (__FN_FORSTEP_VAL__1 > 0)  ? ( (_SplusNVRAM.J  >= __FN_FORSTART_VAL__1) && (_SplusNVRAM.J  <= __FN_FOREND_VAL__1) ) : ( (_SplusNVRAM.J  <= __FN_FORSTART_VAL__1) && (_SplusNVRAM.J  >= __FN_FOREND_VAL__1) ) ; _SplusNVRAM.J  += (ushort)__FN_FORSTEP_VAL__1) 
         { 
         __context__.SourceCodeLine = 156;
         if ( Functions.TestForTrue  ( ( Functions.BoolToInt (Byte( STR2 , (int)( _SplusNVRAM.J ) ) == 27))  ) ) 
             { 
             __context__.SourceCodeLine = 158;
             _SplusNVRAM.RECEIVESTRING  .UpdateValue ( _SplusNVRAM.RECEIVESTRING + Functions.Chr (  (int) ( (Byte( STR2 , (int)( (_SplusNVRAM.J + 1) ) ) - 128) ) )  ) ; 
             __context__.SourceCodeLine = 159;
             _SplusNVRAM.J = (ushort) ( (_SplusNVRAM.J + 1) ) ; 
             } 
         
         else 
             { 
             __context__.SourceCodeLine = 163;
             _SplusNVRAM.RECEIVESTRING  .UpdateValue ( _SplusNVRAM.RECEIVESTRING + Functions.Chr (  (int) ( Byte( STR2 , (int)( _SplusNVRAM.J ) ) ) )  ) ; 
             } 
         
         __context__.SourceCodeLine = 154;
         } 
     
     __context__.SourceCodeLine = 166;
     while ( Functions.TestForTrue  ( ( Functions.BoolToInt (Byte( _SplusNVRAM.RECEIVESTRING , (int)( 1 ) ) == 6))  ) ) 
         { 
         __context__.SourceCodeLine = 168;
         _SplusNVRAM.RECEIVESTRING  .UpdateValue ( Functions.Right ( _SplusNVRAM.RECEIVESTRING ,  (int) ( (Functions.Length( _SplusNVRAM.RECEIVESTRING ) - 1) ) )  ) ; 
         __context__.SourceCodeLine = 166;
         } 
     
     __context__.SourceCodeLine = 170;
     return ( _SplusNVRAM.RECEIVESTRING ) ; 
     
     }
 private ushort VOLUMEPERCENTROUND (  SplusExecutionContext __context__, CrestronString STR ) 
     { 
     
     __context__.SourceCodeLine = 189;
     _SplusNVRAM.ROUNDPART = (ushort) ( ((Byte( STR , (int)( 3 ) ) * 256) + Byte( STR , (int)( 4 ) )) ) ; 
     __context__.SourceCodeLine = 190;
     if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( _SplusNVRAM.ROUNDPART > 32767 ))  ) ) 
         { 
         __context__.SourceCodeLine = 191;
         _SplusNVRAM.RETURNI = (ushort) ( (Byte( STR , (int)( 2 ) ) + 1) ) ; 
         } 
     
     else 
         { 
         __context__.SourceCodeLine = 194;
         _SplusNVRAM.RETURNI = (ushort) ( Byte( STR , (int)( 2 ) ) ) ; 
         } 
     
     __context__.SourceCodeLine = 196;
     return (ushort)( _SplusNVRAM.RETURNI) ; 
     
     }
 private CrestronString BYTESTOSTRING (  SplusExecutionContext __context__, ushort INTHIGH , ushort INTLOW ) 
     { 
     ushort MASK = 0;
     
     CrestronString NUMBER;
     NUMBER  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 8, this );
     
     
     __context__.SourceCodeLine = 332;
     MASK = (ushort) ( 15 ) ; 
     __context__.SourceCodeLine = 334;
     MakeString ( NUMBER , "{0}{1}{2}{3}{4}{5}{6}{7}", BYTETOSTRING (  __context__ , (ushort)( (Crestron.Logos.SplusLibrary.Functions.RotateRight( (ushort)INTHIGH , 12 ) & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (Crestron.Logos.SplusLibrary.Functions.RotateRight( (ushort)INTHIGH , 8 ) & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (Crestron.Logos.SplusLibrary.Functions.RotateRight( (ushort)INTHIGH , 4 ) & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (INTHIGH & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (Crestron.Logos.SplusLibrary.Functions.RotateRight( (ushort)INTLOW , 12 ) & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (Crestron.Logos.SplusLibrary.Functions.RotateRight( (ushort)INTLOW , 8 ) & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (Crestron.Logos.SplusLibrary.Functions.RotateRight( (ushort)INTLOW , 4 ) & MASK) )) , BYTETOSTRING (  __context__ , (ushort)( (INTLOW & MASK) )) ) ; 
     __context__.SourceCodeLine = 335;
     return ( NUMBER ) ; 
     
     }
 private CrestronString BYTETOSTRING (  SplusExecutionContext __context__, ushort CONVERT ) 
     { 
     CrestronString NUMBER;
     NUMBER  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 1, this );
     
     
     __context__.SourceCodeLine = 259;
     NUMBER  .UpdateValue ( ""  ) ; 
     __context__.SourceCodeLine = 260;
     switch ((int)CONVERT)
     
         { 
         case 0 : 
         
             { 
             __context__.SourceCodeLine = 262;
             NUMBER  .UpdateValue ( "0"  ) ; 
             __context__.SourceCodeLine = 263;
             break ; 
             } 
         
         goto case 1 ;
         case 1 : 
         
             { 
             __context__.SourceCodeLine = 266;
             NUMBER  .UpdateValue ( "1"  ) ; 
             __context__.SourceCodeLine = 267;
             break ; 
             } 
         
         goto case 2 ;
         case 2 : 
         
             { 
             __context__.SourceCodeLine = 270;
             NUMBER  .UpdateValue ( "2"  ) ; 
             __context__.SourceCodeLine = 271;
             break ; 
             } 
         
         goto case 3 ;
         case 3 : 
         
             { 
             __context__.SourceCodeLine = 274;
             NUMBER  .UpdateValue ( "3"  ) ; 
             __context__.SourceCodeLine = 275;
             break ; 
             } 
         
         goto case 4 ;
         case 4 : 
         
             { 
             __context__.SourceCodeLine = 278;
             NUMBER  .UpdateValue ( "4"  ) ; 
             __context__.SourceCodeLine = 279;
             break ; 
             } 
         
         goto case 5 ;
         case 5 : 
         
             { 
             __context__.SourceCodeLine = 282;
             NUMBER  .UpdateValue ( "5"  ) ; 
             __context__.SourceCodeLine = 283;
             break ; 
             } 
         
         goto case 6 ;
         case 6 : 
         
             { 
             __context__.SourceCodeLine = 286;
             NUMBER  .UpdateValue ( "6"  ) ; 
             __context__.SourceCodeLine = 287;
             break ; 
             } 
         
         goto case 7 ;
         case 7 : 
         
             { 
             __context__.SourceCodeLine = 290;
             NUMBER  .UpdateValue ( "7"  ) ; 
             __context__.SourceCodeLine = 291;
             break ; 
             } 
         
         goto case 8 ;
         case 8 : 
         
             { 
             __context__.SourceCodeLine = 294;
             NUMBER  .UpdateValue ( "8"  ) ; 
             __context__.SourceCodeLine = 295;
             break ; 
             } 
         
         goto case 9 ;
         case 9 : 
         
             { 
             __context__.SourceCodeLine = 298;
             NUMBER  .UpdateValue ( "9"  ) ; 
             __context__.SourceCodeLine = 299;
             break ; 
             } 
         
         goto case 10 ;
         case 10 : 
         
             { 
             __context__.SourceCodeLine = 302;
             NUMBER  .UpdateValue ( "#"  ) ; 
             __context__.SourceCodeLine = 303;
             break ; 
             } 
         
         goto case 11 ;
         case 11 : 
         
             { 
             __context__.SourceCodeLine = 306;
             NUMBER  .UpdateValue ( "*"  ) ; 
             __context__.SourceCodeLine = 307;
             break ; 
             } 
         
         goto case 12 ;
         case 12 : 
         
             { 
             __context__.SourceCodeLine = 310;
             NUMBER  .UpdateValue ( ","  ) ; 
             __context__.SourceCodeLine = 311;
             break ; 
             } 
         
         goto case 13 ;
         case 13 : 
         
             { 
             __context__.SourceCodeLine = 314;
             NUMBER  .UpdateValue ( "+"  ) ; 
             __context__.SourceCodeLine = 315;
             break ; 
             } 
         
         goto case 14 ;
         case 14 : 
         
             { 
             __context__.SourceCodeLine = 318;
             NUMBER  .UpdateValue ( ""  ) ; 
             __context__.SourceCodeLine = 319;
             break ; 
             } 
         
         goto case 15 ;
         case 15 : 
         
             { 
             __context__.SourceCodeLine = 322;
             NUMBER  .UpdateValue ( ""  ) ; 
             __context__.SourceCodeLine = 323;
             break ; 
             } 
         
         break;
         } 
         
     
     __context__.SourceCodeLine = 326;
     return ( NUMBER ) ; 
     
     }
 private ushort WORDTOI (  SplusExecutionContext __context__, CrestronString SSOURCESTRING , ushort IHIGHBYTE , ushort ILOWBYTE ) 
     { 
     ushort IWORD = 0;
     
     
     __context__.SourceCodeLine = 250;
     if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt (Byte( SSOURCESTRING , (int)( IHIGHBYTE ) ) != 65535) ) && Functions.TestForTrue ( Functions.BoolToInt (Byte( SSOURCESTRING , (int)( ILOWBYTE ) ) != 65535) )) ))  ) ) 
         {
         __context__.SourceCodeLine = 251;
         IWORD = (ushort) ( ((Byte( SSOURCESTRING , (int)( IHIGHBYTE ) ) * 256) + Byte( SSOURCESTRING , (int)( ILOWBYTE ) )) ) ; 
         }
     
     else 
         {
         __context__.SourceCodeLine = 253;
         IWORD = (ushort) ( 65535 ) ; 
         }
     
     __context__.SourceCodeLine = 254;
     return (ushort)( IWORD) ; 
     
     }
        public void READJOINS( )
        {
            CrestronString DMX64;
            DMX64  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 192, this );

            ushort Y = 0;

            ushort X = 0;

            ushort I = 0;

            int TIMES = 0;

            ushort CHUNKS = 0;

            ushort Z = 0;

            try
            {
                SplusExecutionContext __context__ = SplusSimplSharpDelegateThreadStartCode();

                __context__.SourceCodeLine = 91;
                CHUNKS = (ushort) ( 4 ) ;
                __context__.SourceCodeLine = 92;
                Z = (ushort) ( (CHUNKS - 1) ) ;
                __context__.SourceCodeLine = 94;
                ushort __FN_FORSTART_VAL__1 = (ushort) ( 0 ) ;
                ushort __FN_FOREND_VAL__1 = (ushort)Z;
                int __FN_FORSTEP_VAL__1 = (int)1;
                for ( X  = __FN_FORSTART_VAL__1; (__FN_FORSTEP_VAL__1 > 0)  ? ( (X  >= __FN_FORSTART_VAL__1) && (X  <= __FN_FOREND_VAL__1) ) : ( (X  <= __FN_FORSTART_VAL__1) && (X  >= __FN_FOREND_VAL__1) ) ; X  += (ushort)__FN_FORSTEP_VAL__1)
                    {
                    __context__.SourceCodeLine = 96;
                    TIMES = (int) ( SLAVE.GetTime() ) ;
                    __context__.SourceCodeLine = 97;
                    Print( "S+ start Block {0:d} of {1:d}: {2:d}\r\n", (short)(X + 1), (short)CHUNKS, (int)TIMES) ;
                    __context__.SourceCodeLine = 99;
                    Y = (ushort) ( ((X * 512) / CHUNKS) ) ;
                    __context__.SourceCodeLine = 100;
                    DMX64  =  ( ""  )  .ToString() ;
                    __context__.SourceCodeLine = 101;
                    ushort __FN_FORSTART_VAL__2 = (ushort) ( Y ) ;
                    ushort __FN_FOREND_VAL__2 = (ushort)(Y + ((512 / CHUNKS) - 1));
                    int __FN_FORSTEP_VAL__2 = (int)1;
                    for ( I  = __FN_FORSTART_VAL__2; (__FN_FORSTEP_VAL__2 > 0)  ? ( (I  >= __FN_FORSTART_VAL__2) && (I  <= __FN_FOREND_VAL__2) ) : ( (I  <= __FN_FORSTART_VAL__2) && (I  >= __FN_FOREND_VAL__2) ) ; I  += (ushort)__FN_FORSTEP_VAL__2)
                        {
                        __context__.SourceCodeLine = 105;
                        MakeString ( DMX64 , "{0}{1:x2}", DMX64 , SLAVE.DmxData[ I ]) ;
                        __context__.SourceCodeLine = 101;
                        }

                    __context__.SourceCodeLine = 107;
                    SLOTS [ (X + 1)]  .UpdateValue ( DMX64  ) ;
                    __context__.SourceCodeLine = 94;
                    }

                __context__.SourceCodeLine = 110;
                TIMES = (int) ( SLAVE.GetTime() ) ;
                __context__.SourceCodeLine = 111;
                Print( "S+ end: {0:d}\r\n", (int)TIMES) ;

            }
            finally { ObjectFinallyHandler(); }
        }
        object ROOM_ON_OnRelease_1( Object __EventInfo__ )
        {
            Crestron.Logos.SplusObjects.SignalEventArgs __SignalEventArg__ = (Crestron.Logos.SplusObjects.SignalEventArgs)__EventInfo__;
            try
            {
            SplusExecutionContext __context__ = SplusThreadStartCode(__SignalEventArg__);
            CrestronString TEMP;
            TEMP  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 500, this );

            ushort I = 0;

            __context__.SourceCodeLine = 86;
            I = (ushort) ( Functions.GetLastModifiedArrayIndex( __SignalEventArg__ ) ) ;
            __context__.SourceCodeLine = 87;
            MakeString ( TEMP , "<P align=\u0022center\u0022><FONT size=\u0022{0:d}\u0022 face=\u0022Arial\u0022 color=\u0022{1}\u0022>{2}</FONT></P>", (short)FONTSIZE  .Value, OFF_COLOR , ROOM [ I ] ) ;
            __context__.SourceCodeLine = 88;
            OUTPUT [ I]  .UpdateValue ( TEMP  ) ;

            }
            catch(Exception e) { ObjectCatchHandler(e); }
            finally { ObjectFinallyHandler( __SignalEventArg__ ); }
            return this;
        }
        public override void LogosSplusInitialize()
        {
            _SplusNVRAM = new SplusNVRAM( this );
            STEMP  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 50, this );

            VOLUME_UP = new Crestron.Logos.SplusObjects.DigitalInput( VOLUME_UP__DigitalInput__, this );
            m_DigitalInputList.Add( VOLUME_UP__DigitalInput__, VOLUME_UP );

            VOLUME_DOWN = new Crestron.Logos.SplusObjects.DigitalInput( VOLUME_DOWN__DigitalInput__, this );
            m_DigitalInputList.Add( VOLUME_DOWN__DigitalInput__, VOLUME_DOWN );

            CONTRAST_UP = new Crestron.Logos.SplusObjects.DigitalInput( CONTRAST_UP__DigitalInput__, this );
            m_DigitalInputList.Add( CONTRAST_UP__DigitalInput__, CONTRAST_UP );

            CONTRAST_DOWN = new Crestron.Logos.SplusObjects.DigitalInput( CONTRAST_DOWN__DigitalInput__, this );
            m_DigitalInputList.Add( CONTRAST_DOWN__DigitalInput__, CONTRAST_DOWN );

            BRIGHTNESS_UP = new Crestron.Logos.SplusObjects.DigitalInput( BRIGHTNESS_UP__DigitalInput__, this );
            m_DigitalInputList.Add( BRIGHTNESS_UP__DigitalInput__, BRIGHTNESS_UP );

            BRIGHTNESS_DOWN = new Crestron.Logos.SplusObjects.DigitalInput( BRIGHTNESS_DOWN__DigitalInput__, this );
            m_DigitalInputList.Add( BRIGHTNESS_DOWN__DigitalInput__, BRIGHTNESS_DOWN );

            SATURATION_UP = new Crestron.Logos.SplusObjects.DigitalInput( SATURATION_UP__DigitalInput__, this );
            m_DigitalInputList.Add( SATURATION_UP__DigitalInput__, SATURATION_UP );

            SATURATION_DOWN = new Crestron.Logos.SplusObjects.DigitalInput( SATURATION_DOWN__DigitalInput__, this );
            m_DigitalInputList.Add( SATURATION_DOWN__DigitalInput__, SATURATION_DOWN );

            TINT_UP = new Crestron.Logos.SplusObjects.DigitalInput( TINT_UP__DigitalInput__, this );
            m_DigitalInputList.Add( TINT_UP__DigitalInput__, TINT_UP );

            TINT_DOWN = new Crestron.Logos.SplusObjects.DigitalInput( TINT_DOWN__DigitalInput__, this );
            m_DigitalInputList.Add( TINT_DOWN__DigitalInput__, TINT_DOWN );

            RAMPING = new Crestron.Logos.SplusObjects.DigitalInput( RAMPING__DigitalInput__, this );
            m_DigitalInputList.Add( RAMPING__DigitalInput__, RAMPING );

            RAMP_DONE = new Crestron.Logos.SplusObjects.DigitalInput( RAMP_DONE__DigitalInput__, this );
            m_DigitalInputList.Add( RAMP_DONE__DigitalInput__, RAMP_DONE );

            POLL_SENT = new Crestron.Logos.SplusObjects.AnalogInput( POLL_SENT__AnalogSerialInput__, this );
            m_AnalogInputList.Add( POLL_SENT__AnalogSerialInput__, POLL_SENT );

            POWER_IN = new Crestron.Logos.SplusObjects.AnalogOutput( POWER_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( POWER_IN__AnalogSerialOutput__, POWER_IN );

            INPUT_IN = new Crestron.Logos.SplusObjects.AnalogOutput( INPUT_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( INPUT_IN__AnalogSerialOutput__, INPUT_IN );

            VOLUME_IN = new Crestron.Logos.SplusObjects.AnalogOutput( VOLUME_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( VOLUME_IN__AnalogSerialOutput__, VOLUME_IN );

            VOLUME_MUTE_IN = new Crestron.Logos.SplusObjects.AnalogOutput( VOLUME_MUTE_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( VOLUME_MUTE_IN__AnalogSerialOutput__, VOLUME_MUTE_IN );

            CONTRAST_IN = new Crestron.Logos.SplusObjects.AnalogOutput( CONTRAST_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( CONTRAST_IN__AnalogSerialOutput__, CONTRAST_IN );

            BRIGHTNESS_IN = new Crestron.Logos.SplusObjects.AnalogOutput( BRIGHTNESS_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( BRIGHTNESS_IN__AnalogSerialOutput__, BRIGHTNESS_IN );

            SATURATION_IN = new Crestron.Logos.SplusObjects.AnalogOutput( SATURATION_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( SATURATION_IN__AnalogSerialOutput__, SATURATION_IN );

            TINT_IN = new Crestron.Logos.SplusObjects.AnalogOutput( TINT_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( TINT_IN__AnalogSerialOutput__, TINT_IN );

            AUTO_COLOR_CONTROL_IN = new Crestron.Logos.SplusObjects.AnalogOutput( AUTO_COLOR_CONTROL_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( AUTO_COLOR_CONTROL_IN__AnalogSerialOutput__, AUTO_COLOR_CONTROL_IN );

            COLOR_TEMPERATURE_IN = new Crestron.Logos.SplusObjects.AnalogOutput( COLOR_TEMPERATURE_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( COLOR_TEMPERATURE_IN__AnalogSerialOutput__, COLOR_TEMPERATURE_IN );

            CHANNEL_IN = new Crestron.Logos.SplusObjects.AnalogOutput( CHANNEL_IN__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( CHANNEL_IN__AnalogSerialOutput__, CHANNEL_IN );

            TO_DEVICE__DOLLAR__ = new Crestron.Logos.SplusObjects.StringOutput( TO_DEVICE__DOLLAR____AnalogSerialOutput__, this );
            m_StringOutputList.Add( TO_DEVICE__DOLLAR____AnalogSerialOutput__, TO_DEVICE__DOLLAR__ );

            FROM_DEVICE__DOLLAR__ = new Crestron.Logos.SplusObjects.BufferInput( FROM_DEVICE__DOLLAR____AnalogSerialInput__, 100, this );
            m_StringInputList.Add( FROM_DEVICE__DOLLAR____AnalogSerialInput__, FROM_DEVICE__DOLLAR__ );

            VOLUME_UP.OnDigitalPush.Add( new InputChangeHandlerWrapper( VOLUME_UP_OnPush_0, false ) );
            VOLUME_DOWN.OnDigitalPush.Add( new InputChangeHandlerWrapper( VOLUME_DOWN_OnPush_1, false ) );
            CONTRAST_UP.OnDigitalPush.Add( new InputChangeHandlerWrapper( CONTRAST_UP_OnPush_2, false ) );
            CONTRAST_DOWN.OnDigitalPush.Add( new InputChangeHandlerWrapper( CONTRAST_DOWN_OnPush_3, false ) );
            BRIGHTNESS_UP.OnDigitalPush.Add( new InputChangeHandlerWrapper( BRIGHTNESS_UP_OnPush_4, false ) );
            BRIGHTNESS_DOWN.OnDigitalPush.Add( new InputChangeHandlerWrapper( BRIGHTNESS_DOWN_OnPush_5, false ) );
            SATURATION_UP.OnDigitalPush.Add( new InputChangeHandlerWrapper( SATURATION_UP_OnPush_6, false ) );
            SATURATION_DOWN.OnDigitalPush.Add( new InputChangeHandlerWrapper( SATURATION_DOWN_OnPush_7, false ) );
            TINT_UP.OnDigitalPush.Add( new InputChangeHandlerWrapper( TINT_UP_OnPush_8, false ) );
            TINT_DOWN.OnDigitalPush.Add( new InputChangeHandlerWrapper( TINT_DOWN_OnPush_9, false ) );
            RAMP_DONE.OnDigitalPush.Add( new InputChangeHandlerWrapper( RAMP_DONE_OnPush_10, false ) );
            POLL_SENT.OnAnalogChange.Add( new InputChangeHandlerWrapper( POLL_SENT_OnChange_11, false ) );
            FROM_DEVICE__DOLLAR__.OnSerialChange.Add( new InputChangeHandlerWrapper( FROM_DEVICE__DOLLAR___OnChange_12, false ) );

            _SplusNVRAM.PopulateCustomAttributeList( true );

            NVRAM = _SplusNVRAM;
        }
        private CrestronString SENDSTRING(  SplusExecutionContext __context__, CrestronString STRINGSEND )
        {
            ushort A = 0;
            ushort ICS = 0;

            CrestronString SSTRINGFINAL;
            SSTRINGFINAL  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 50, this );

            __context__.SourceCodeLine = 136;
            ICS = (ushort) ( 0 ) ;
            __context__.SourceCodeLine = 137;
            ushort __FN_FORSTART_VAL__1 = (ushort) ( 1 ) ;
            ushort __FN_FOREND_VAL__1 = (ushort)Functions.Length( STRINGSEND );
            int __FN_FORSTEP_VAL__1 = (int)1;
            for ( A  = __FN_FORSTART_VAL__1; (__FN_FORSTEP_VAL__1 > 0)  ? ( (A  >= __FN_FORSTART_VAL__1) && (A  <= __FN_FOREND_VAL__1) ) : ( (A  <= __FN_FORSTART_VAL__1) && (A  >= __FN_FOREND_VAL__1) ) ; A  += (ushort)__FN_FORSTEP_VAL__1)
                {
                __context__.SourceCodeLine = 139;
                ICS = (ushort) ( (ICS + Byte( STRINGSEND , (int)( A ) )) ) ;
                __context__.SourceCodeLine = 137;
                }

            __context__.SourceCodeLine = 141;
            ICS = (ushort) ( (256 - ICS) ) ;
            __context__.SourceCodeLine = 142;
            SSTRINGFINAL  .UpdateValue ( STRINGSEND + Functions.Chr (  (int) ( ICS ) )  ) ;
            __context__.SourceCodeLine = 143;
            return ( SSTRINGFINAL ) ;
        }
        public override void LogosSplusInitialize()
        {
            _SplusNVRAM = new SplusNVRAM( this );
            OPTIONSMENUMAP  = new ushort[ 8 ];
            OPTIONSMENUICONS  = new ushort[ 8 ];
            GROUPSMENUMAP  = new ushort[ 7 ];
            OPTIONSMENU__DOLLAR__  = new CrestronString[ 8 ];
            for( uint i = 0; i < 8; i++ )
            OPTIONSMENU__DOLLAR__ [i] = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 32, this );
            EQPRESETNAMES__DOLLAR__  = new CrestronString[ 7 ];
            for( uint i = 0; i < 7; i++ )
            EQPRESETNAMES__DOLLAR__ [i] = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 11, this );

            ROOMANDSOURCEMENUINITIALIZED = new Crestron.Logos.SplusObjects.DigitalInput( ROOMANDSOURCEMENUINITIALIZED__DigitalInput__, this );
            m_DigitalInputList.Add( ROOMANDSOURCEMENUINITIALIZED__DigitalInput__, ROOMANDSOURCEMENUINITIALIZED );

            SOURCELISTHASONEITEM = new Crestron.Logos.SplusObjects.DigitalInput( SOURCELISTHASONEITEM__DigitalInput__, this );
            m_DigitalInputList.Add( SOURCELISTHASONEITEM__DigitalInput__, SOURCELISTHASONEITEM );

            REFRESHOPTIONSMENU = new Crestron.Logos.SplusObjects.DigitalInput( REFRESHOPTIONSMENU__DigitalInput__, this );
            m_DigitalInputList.Add( REFRESHOPTIONSMENU__DigitalInput__, REFRESHOPTIONSMENU );

            ROOMISON = new Crestron.Logos.SplusObjects.DigitalInput( ROOMISON__DigitalInput__, this );
            m_DigitalInputList.Add( ROOMISON__DigitalInput__, ROOMISON );

            HASSOURCES = new Crestron.Logos.SplusObjects.DigitalInput( HASSOURCES__DigitalInput__, this );
            m_DigitalInputList.Add( HASSOURCES__DigitalInput__, HASSOURCES );

            SOURCESHAREAVAILABLE = new Crestron.Logos.SplusObjects.DigitalInput( SOURCESHAREAVAILABLE__DigitalInput__, this );
            m_DigitalInputList.Add( SOURCESHAREAVAILABLE__DigitalInput__, SOURCESHAREAVAILABLE );

            HASROOMS = new Crestron.Logos.SplusObjects.DigitalInput( HASROOMS__DigitalInput__, this );
            m_DigitalInputList.Add( HASROOMS__DigitalInput__, HASROOMS );

            HASSLEEP = new Crestron.Logos.SplusObjects.DigitalInput( HASSLEEP__DigitalInput__, this );
            m_DigitalInputList.Add( HASSLEEP__DigitalInput__, HASSLEEP );

            HASGROUPS = new Crestron.Logos.SplusObjects.DigitalInput( HASGROUPS__DigitalInput__, this );
            m_DigitalInputList.Add( HASGROUPS__DigitalInput__, HASGROUPS );

            TOOLSMENUENABLED = new Crestron.Logos.SplusObjects.DigitalInput( TOOLSMENUENABLED__DigitalInput__, this );
            m_DigitalInputList.Add( TOOLSMENUENABLED__DigitalInput__, TOOLSMENUENABLED );

            GROUPSMENUENABLED = new Crestron.Logos.SplusObjects.DigitalInput( GROUPSMENUENABLED__DigitalInput__, this );
            m_DigitalInputList.Add( GROUPSMENUENABLED__DigitalInput__, GROUPSMENUENABLED );

            SLEEPISON = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPISON__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPISON__DigitalInput__, SLEEPISON );

            SLEEPISOFF = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPISOFF__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPISOFF__DigitalInput__, SLEEPISOFF );

            SLEEPWARNINGACTIVATED = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPWARNINGACTIVATED__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPWARNINGACTIVATED__DigitalInput__, SLEEPWARNINGACTIVATED );

            SLEEPWARNINGISACTIVE = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPWARNINGISACTIVE__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPWARNINGISACTIVE__DigitalInput__, SLEEPWARNINGISACTIVE );

            LOUDNESSISON = new Crestron.Logos.SplusObjects.DigitalInput( LOUDNESSISON__DigitalInput__, this );
            m_DigitalInputList.Add( LOUDNESSISON__DigitalInput__, LOUDNESSISON );

            LOUDNESSISOFF = new Crestron.Logos.SplusObjects.DigitalInput( LOUDNESSISOFF__DigitalInput__, this );
            m_DigitalInputList.Add( LOUDNESSISOFF__DigitalInput__, LOUDNESSISOFF );

            ONSLEEPPAGE = new Crestron.Logos.SplusObjects.DigitalInput( ONSLEEPPAGE__DigitalInput__, this );
            m_DigitalInputList.Add( ONSLEEPPAGE__DigitalInput__, ONSLEEPPAGE );

            ONTOOLSPAGE = new Crestron.Logos.SplusObjects.DigitalInput( ONTOOLSPAGE__DigitalInput__, this );
            m_DigitalInputList.Add( ONTOOLSPAGE__DigitalInput__, ONTOOLSPAGE );

            SLEEPSELECTBUTTON = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPSELECTBUTTON__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPSELECTBUTTON__DigitalInput__, SLEEPSELECTBUTTON );

            TOOLSSELECTBUTTON = new Crestron.Logos.SplusObjects.DigitalInput( TOOLSSELECTBUTTON__DigitalInput__, this );
            m_DigitalInputList.Add( TOOLSSELECTBUTTON__DigitalInput__, TOOLSSELECTBUTTON );

            SLEEPBACKBUTTON = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPBACKBUTTON__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPBACKBUTTON__DigitalInput__, SLEEPBACKBUTTON );

            TOOLSBACKBUTTON = new Crestron.Logos.SplusObjects.DigitalInput( TOOLSBACKBUTTON__DigitalInput__, this );
            m_DigitalInputList.Add( TOOLSBACKBUTTON__DigitalInput__, TOOLSBACKBUTTON );

            GROUPSCONFIGURED = new InOutArray<DigitalInput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            GROUPSCONFIGURED[i+1] = new Crestron.Logos.SplusObjects.DigitalInput( GROUPSCONFIGURED__DigitalInput__ + i, GROUPSCONFIGURED__DigitalInput__, this );
            m_DigitalInputList.Add( GROUPSCONFIGURED__DigitalInput__ + i, GROUPSCONFIGURED[i+1] );
            }

            GROUPSACTIVE = new InOutArray<DigitalInput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            GROUPSACTIVE[i+1] = new Crestron.Logos.SplusObjects.DigitalInput( GROUPSACTIVE__DigitalInput__ + i, GROUPSACTIVE__DigitalInput__, this );
            m_DigitalInputList.Add( GROUPSACTIVE__DigitalInput__ + i, GROUPSACTIVE[i+1] );
            }

            OPTIONSLINESELECTED = new InOutArray<DigitalInput>( 7, this );
            for( uint i = 0; i < 7; i++ )
            {
            OPTIONSLINESELECTED[i+1] = new Crestron.Logos.SplusObjects.DigitalInput( OPTIONSLINESELECTED__DigitalInput__ + i, OPTIONSLINESELECTED__DigitalInput__, this );
            m_DigitalInputList.Add( OPTIONSLINESELECTED__DigitalInput__ + i, OPTIONSLINESELECTED[i+1] );
            }

            SLEEPLINESELECTED = new InOutArray<DigitalInput>( 2, this );
            for( uint i = 0; i < 2; i++ )
            {
            SLEEPLINESELECTED[i+1] = new Crestron.Logos.SplusObjects.DigitalInput( SLEEPLINESELECTED__DigitalInput__ + i, SLEEPLINESELECTED__DigitalInput__, this );
            m_DigitalInputList.Add( SLEEPLINESELECTED__DigitalInput__ + i, SLEEPLINESELECTED[i+1] );
            }

            TOOLSLINESELECTED = new InOutArray<DigitalInput>( 5, this );
            for( uint i = 0; i < 5; i++ )
            {
            TOOLSLINESELECTED[i+1] = new Crestron.Logos.SplusObjects.DigitalInput( TOOLSLINESELECTED__DigitalInput__ + i, TOOLSLINESELECTED__DigitalInput__, this );
            m_DigitalInputList.Add( TOOLSLINESELECTED__DigitalInput__ + i, TOOLSLINESELECTED[i+1] );
            }

            GROUPSLINESELECTED = new InOutArray<DigitalInput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            GROUPSLINESELECTED[i+1] = new Crestron.Logos.SplusObjects.DigitalInput( GROUPSLINESELECTED__DigitalInput__ + i, GROUPSLINESELECTED__DigitalInput__, this );
            m_DigitalInputList.Add( GROUPSLINESELECTED__DigitalInput__ + i, GROUPSLINESELECTED[i+1] );
            }

            GOTOAUDIOMENUPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOAUDIOMENUPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOAUDIOMENUPAGE__DigitalOutput__, GOTOAUDIOMENUPAGE );

            GOTOSOURCESPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOSOURCESPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOSOURCESPAGE__DigitalOutput__, GOTOSOURCESPAGE );

            GOTOSOURCESHARINGPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOSOURCESHARINGPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOSOURCESHARINGPAGE__DigitalOutput__, GOTOSOURCESHARINGPAGE );

            GOTOROOMSPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOROOMSPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOROOMSPAGE__DigitalOutput__, GOTOROOMSPAGE );

            GOTOSLEEPPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOSLEEPPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOSLEEPPAGE__DigitalOutput__, GOTOSLEEPPAGE );

            GOTOTOOLSPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOTOOLSPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOTOOLSPAGE__DigitalOutput__, GOTOTOOLSPAGE );

            GOTOGROUPSPAGE = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOGROUPSPAGE__DigitalOutput__, this );
            m_DigitalOutputList.Add( GOTOGROUPSPAGE__DigitalOutput__, GOTOGROUPSPAGE );

            SLEEPTIMEADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( SLEEPTIMEADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( SLEEPTIMEADJUSTACTIVE__DigitalOutput__, SLEEPTIMEADJUSTACTIVE );

            SLEEPENABLEADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( SLEEPENABLEADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( SLEEPENABLEADJUSTACTIVE__DigitalOutput__, SLEEPENABLEADJUSTACTIVE );

            BASSADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( BASSADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( BASSADJUSTACTIVE__DigitalOutput__, BASSADJUSTACTIVE );

            TREBLEADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( TREBLEADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( TREBLEADJUSTACTIVE__DigitalOutput__, TREBLEADJUSTACTIVE );

            EQPRESETADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( EQPRESETADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( EQPRESETADJUSTACTIVE__DigitalOutput__, EQPRESETADJUSTACTIVE );

            BALANCEADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( BALANCEADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( BALANCEADJUSTACTIVE__DigitalOutput__, BALANCEADJUSTACTIVE );

            LOUDNESSADJUSTACTIVE = new Crestron.Logos.SplusObjects.DigitalOutput( LOUDNESSADJUSTACTIVE__DigitalOutput__, this );
            m_DigitalOutputList.Add( LOUDNESSADJUSTACTIVE__DigitalOutput__, LOUDNESSADJUSTACTIVE );

            SELECTSINGLESOURCE = new Crestron.Logos.SplusObjects.DigitalOutput( SELECTSINGLESOURCE__DigitalOutput__, this );
            m_DigitalOutputList.Add( SELECTSINGLESOURCE__DigitalOutput__, SELECTSINGLESOURCE );

            SHIFTOPTIONSHIGHLIGHTTOTOP = new Crestron.Logos.SplusObjects.DigitalOutput( SHIFTOPTIONSHIGHLIGHTTOTOP__DigitalOutput__, this );
            m_DigitalOutputList.Add( SHIFTOPTIONSHIGHLIGHTTOTOP__DigitalOutput__, SHIFTOPTIONSHIGHLIGHTTOTOP );

            TOGGLEGROUPS = new InOutArray<DigitalOutput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            TOGGLEGROUPS[i+1] = new Crestron.Logos.SplusObjects.DigitalOutput( TOGGLEGROUPS__DigitalOutput__ + i, this );
            m_DigitalOutputList.Add( TOGGLEGROUPS__DigitalOutput__ + i, TOGGLEGROUPS[i+1] );
            }

            GOTOSOURCECONTROLPAGE = new InOutArray<DigitalOutput>( 24, this );
            for( uint i = 0; i < 24; i++ )
            {
            GOTOSOURCECONTROLPAGE[i+1] = new Crestron.Logos.SplusObjects.DigitalOutput( GOTOSOURCECONTROLPAGE__DigitalOutput__ + i, this );
            m_DigitalOutputList.Add( GOTOSOURCECONTROLPAGE__DigitalOutput__ + i, GOTOSOURCECONTROLPAGE[i+1] );
            }

            OPTIONSITEMSACTIVE = new InOutArray<DigitalOutput>( 7, this );
            for( uint i = 0; i < 7; i++ )
            {
            OPTIONSITEMSACTIVE[i+1] = new Crestron.Logos.SplusObjects.DigitalOutput( OPTIONSITEMSACTIVE__DigitalOutput__ + i, this );
            m_DigitalOutputList.Add( OPTIONSITEMSACTIVE__DigitalOutput__ + i, OPTIONSITEMSACTIVE[i+1] );
            }

            SLEEPITEMSACTIVE = new InOutArray<DigitalOutput>( 2, this );
            for( uint i = 0; i < 2; i++ )
            {
            SLEEPITEMSACTIVE[i+1] = new Crestron.Logos.SplusObjects.DigitalOutput( SLEEPITEMSACTIVE__DigitalOutput__ + i, this );
            m_DigitalOutputList.Add( SLEEPITEMSACTIVE__DigitalOutput__ + i, SLEEPITEMSACTIVE[i+1] );
            }

            TOOLSITEMSACTIVE = new InOutArray<DigitalOutput>( 5, this );
            for( uint i = 0; i < 5; i++ )
            {
            TOOLSITEMSACTIVE[i+1] = new Crestron.Logos.SplusObjects.DigitalOutput( TOOLSITEMSACTIVE__DigitalOutput__ + i, this );
            m_DigitalOutputList.Add( TOOLSITEMSACTIVE__DigitalOutput__ + i, TOOLSITEMSACTIVE[i+1] );
            }

            SINGLESOURCE = new Crestron.Logos.SplusObjects.AnalogInput( SINGLESOURCE__AnalogSerialInput__, this );
            m_AnalogInputList.Add( SINGLESOURCE__AnalogSerialInput__, SINGLESOURCE );

            ACTIVESOURCE = new Crestron.Logos.SplusObjects.AnalogInput( ACTIVESOURCE__AnalogSerialInput__, this );
            m_AnalogInputList.Add( ACTIVESOURCE__AnalogSerialInput__, ACTIVESOURCE );

            SLEEPTIME = new Crestron.Logos.SplusObjects.AnalogInput( SLEEPTIME__AnalogSerialInput__, this );
            m_AnalogInputList.Add( SLEEPTIME__AnalogSerialInput__, SLEEPTIME );

            BASS_DB = new Crestron.Logos.SplusObjects.AnalogInput( BASS_DB__AnalogSerialInput__, this );
            m_AnalogInputList.Add( BASS_DB__AnalogSerialInput__, BASS_DB );

            TREBLE_DB = new Crestron.Logos.SplusObjects.AnalogInput( TREBLE_DB__AnalogSerialInput__, this );
            m_AnalogInputList.Add( TREBLE_DB__AnalogSerialInput__, TREBLE_DB );

            EQPRESET = new Crestron.Logos.SplusObjects.AnalogInput( EQPRESET__AnalogSerialInput__, this );
            m_AnalogInputList.Add( EQPRESET__AnalogSerialInput__, EQPRESET );

            BALANCE = new Crestron.Logos.SplusObjects.AnalogInput( BALANCE__AnalogSerialInput__, this );
            m_AnalogInputList.Add( BALANCE__AnalogSerialInput__, BALANCE );

            SINGLESOURCEICON = new Crestron.Logos.SplusObjects.AnalogInput( SINGLESOURCEICON__AnalogSerialInput__, this );
            m_AnalogInputList.Add( SINGLESOURCEICON__AnalogSerialInput__, SINGLESOURCEICON );

            ACTIVESOURCEICON = new Crestron.Logos.SplusObjects.AnalogInput( ACTIVESOURCEICON__AnalogSerialInput__, this );
            m_AnalogInputList.Add( ACTIVESOURCEICON__AnalogSerialInput__, ACTIVESOURCEICON );

            OPTIONSHIGHLIGHTOUT = new Crestron.Logos.SplusObjects.AnalogOutput( OPTIONSHIGHLIGHTOUT__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( OPTIONSHIGHLIGHTOUT__AnalogSerialOutput__, OPTIONSHIGHLIGHTOUT );

            OPTIONSITEMCOUNTOUT = new Crestron.Logos.SplusObjects.AnalogOutput( OPTIONSITEMCOUNTOUT__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( OPTIONSITEMCOUNTOUT__AnalogSerialOutput__, OPTIONSITEMCOUNTOUT );

            SLEEPITEMCOUNTOUT = new Crestron.Logos.SplusObjects.AnalogOutput( SLEEPITEMCOUNTOUT__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( SLEEPITEMCOUNTOUT__AnalogSerialOutput__, SLEEPITEMCOUNTOUT );

            TOOLSITEMCOUNTOUT = new Crestron.Logos.SplusObjects.AnalogOutput( TOOLSITEMCOUNTOUT__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( TOOLSITEMCOUNTOUT__AnalogSerialOutput__, TOOLSITEMCOUNTOUT );

            GROUPSITEMCOUNTOUT = new Crestron.Logos.SplusObjects.AnalogOutput( GROUPSITEMCOUNTOUT__AnalogSerialOutput__, this );
            m_AnalogOutputList.Add( GROUPSITEMCOUNTOUT__AnalogSerialOutput__, GROUPSITEMCOUNTOUT );

            OPTIONSICONSOUT = new InOutArray<AnalogOutput>( 7, this );
            for( uint i = 0; i < 7; i++ )
            {
            OPTIONSICONSOUT[i+1] = new Crestron.Logos.SplusObjects.AnalogOutput( OPTIONSICONSOUT__AnalogSerialOutput__ + i, this );
            m_AnalogOutputList.Add( OPTIONSICONSOUT__AnalogSerialOutput__ + i, OPTIONSICONSOUT[i+1] );
            }

            GROUPSICONSOUT = new InOutArray<AnalogOutput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            GROUPSICONSOUT[i+1] = new Crestron.Logos.SplusObjects.AnalogOutput( GROUPSICONSOUT__AnalogSerialOutput__ + i, this );
            m_AnalogOutputList.Add( GROUPSICONSOUT__AnalogSerialOutput__ + i, GROUPSICONSOUT[i+1] );
            }

            SINGLESOURCENAME = new Crestron.Logos.SplusObjects.StringInput( SINGLESOURCENAME__AnalogSerialInput__, 32, this );
            m_StringInputList.Add( SINGLESOURCENAME__AnalogSerialInput__, SINGLESOURCENAME );

            ACTIVESOURCENAME__DOLLAR__ = new Crestron.Logos.SplusObjects.StringInput( ACTIVESOURCENAME__DOLLAR____AnalogSerialInput__, 32, this );
            m_StringInputList.Add( ACTIVESOURCENAME__DOLLAR____AnalogSerialInput__, ACTIVESOURCENAME__DOLLAR__ );

            GROUPSNAMES = new InOutArray<StringInput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            GROUPSNAMES[i+1] = new Crestron.Logos.SplusObjects.StringInput( GROUPSNAMES__AnalogSerialInput__ + i, GROUPSNAMES__AnalogSerialInput__, 32, this );
            m_StringInputList.Add( GROUPSNAMES__AnalogSerialInput__ + i, GROUPSNAMES[i+1] );
            }

            OPTIONSLABEL__DOLLAR__ = new Crestron.Logos.SplusObjects.StringOutput( OPTIONSLABEL__DOLLAR____AnalogSerialOutput__, this );
            m_StringOutputList.Add( OPTIONSLABEL__DOLLAR____AnalogSerialOutput__, OPTIONSLABEL__DOLLAR__ );

            SLEEPLABEL__DOLLAR__ = new Crestron.Logos.SplusObjects.StringOutput( SLEEPLABEL__DOLLAR____AnalogSerialOutput__, this );
            m_StringOutputList.Add( SLEEPLABEL__DOLLAR____AnalogSerialOutput__, SLEEPLABEL__DOLLAR__ );

            TOOLSLABEL__DOLLAR__ = new Crestron.Logos.SplusObjects.StringOutput( TOOLSLABEL__DOLLAR____AnalogSerialOutput__, this );
            m_StringOutputList.Add( TOOLSLABEL__DOLLAR____AnalogSerialOutput__, TOOLSLABEL__DOLLAR__ );

            GROUPSLABEL__DOLLAR__ = new Crestron.Logos.SplusObjects.StringOutput( GROUPSLABEL__DOLLAR____AnalogSerialOutput__, this );
            m_StringOutputList.Add( GROUPSLABEL__DOLLAR____AnalogSerialOutput__, GROUPSLABEL__DOLLAR__ );

            SLEEPWARNINGMESSAGE = new Crestron.Logos.SplusObjects.StringOutput( SLEEPWARNINGMESSAGE__AnalogSerialOutput__, this );
            m_StringOutputList.Add( SLEEPWARNINGMESSAGE__AnalogSerialOutput__, SLEEPWARNINGMESSAGE );

            OPTIONSITEMS__DOLLAR__ = new InOutArray<StringOutput>( 7, this );
            for( uint i = 0; i < 7; i++ )
            {
            OPTIONSITEMS__DOLLAR__[i+1] = new Crestron.Logos.SplusObjects.StringOutput( OPTIONSITEMS__DOLLAR____AnalogSerialOutput__ + i, this );
            m_StringOutputList.Add( OPTIONSITEMS__DOLLAR____AnalogSerialOutput__ + i, OPTIONSITEMS__DOLLAR__[i+1] );
            }

            SLEEPITEMS__DOLLAR__ = new InOutArray<StringOutput>( 2, this );
            for( uint i = 0; i < 2; i++ )
            {
            SLEEPITEMS__DOLLAR__[i+1] = new Crestron.Logos.SplusObjects.StringOutput( SLEEPITEMS__DOLLAR____AnalogSerialOutput__ + i, this );
            m_StringOutputList.Add( SLEEPITEMS__DOLLAR____AnalogSerialOutput__ + i, SLEEPITEMS__DOLLAR__[i+1] );
            }

            TOOLSITEMS__DOLLAR__ = new InOutArray<StringOutput>( 5, this );
            for( uint i = 0; i < 5; i++ )
            {
            TOOLSITEMS__DOLLAR__[i+1] = new Crestron.Logos.SplusObjects.StringOutput( TOOLSITEMS__DOLLAR____AnalogSerialOutput__ + i, this );
            m_StringOutputList.Add( TOOLSITEMS__DOLLAR____AnalogSerialOutput__ + i, TOOLSITEMS__DOLLAR__[i+1] );
            }

            GROUPSITEMS__DOLLAR__ = new InOutArray<StringOutput>( 6, this );
            for( uint i = 0; i < 6; i++ )
            {
            GROUPSITEMS__DOLLAR__[i+1] = new Crestron.Logos.SplusObjects.StringOutput( GROUPSITEMS__DOLLAR____AnalogSerialOutput__ + i, this );
            m_StringOutputList.Add( GROUPSITEMS__DOLLAR____AnalogSerialOutput__ + i, GROUPSITEMS__DOLLAR__[i+1] );
            }

            ROOMANDSOURCEMENUINITIALIZED.OnDigitalPush.Add( new InputChangeHandlerWrapper( ROOMANDSOURCEMENUINITIALIZED_OnPush_0, false ) );
            REFRESHOPTIONSMENU.OnDigitalPush.Add( new InputChangeHandlerWrapper( REFRESHOPTIONSMENU_OnPush_1, false ) );
            HASSLEEP.OnDigitalChange.Add( new InputChangeHandlerWrapper( HASSLEEP_OnChange_2, false ) );
            TOOLSMENUENABLED.OnDigitalChange.Add( new InputChangeHandlerWrapper( TOOLSMENUENABLED_OnChange_3, false ) );
            SLEEPISON.OnDigitalPush.Add( new InputChangeHandlerWrapper( SLEEPISON_OnPush_4, false ) );
            SLEEPISOFF.OnDigitalPush.Add( new InputChangeHandlerWrapper( SLEEPISOFF_OnPush_5, false ) );
            LOUDNESSISON.OnDigitalPush.Add( new InputChangeHandlerWrapper( LOUDNESSISON_OnPush_6, false ) );
            LOUDNESSISOFF.OnDigitalPush.Add( new InputChangeHandlerWrapper( LOUDNESSISOFF_OnPush_7, false ) );
            ONSLEEPPAGE.OnDigitalRelease.Add( new InputChangeHandlerWrapper( ONSLEEPPAGE_OnRelease_8, false ) );
            ONTOOLSPAGE.OnDigitalRelease.Add( new InputChangeHandlerWrapper( ONTOOLSPAGE_OnRelease_9, false ) );
            SLEEPWARNINGACTIVATED.OnDigitalPush.Add( new InputChangeHandlerWrapper( SLEEPWARNINGACTIVATED_OnPush_10, false ) );
            SLEEPSELECTBUTTON.OnDigitalPush.Add( new InputChangeHandlerWrapper( SLEEPSELECTBUTTON_OnPush_11, false ) );
            TOOLSSELECTBUTTON.OnDigitalPush.Add( new InputChangeHandlerWrapper( TOOLSSELECTBUTTON_OnPush_12, false ) );
            SLEEPBACKBUTTON.OnDigitalPush.Add( new InputChangeHandlerWrapper( SLEEPBACKBUTTON_OnPush_13, false ) );
            TOOLSBACKBUTTON.OnDigitalPush.Add( new InputChangeHandlerWrapper( TOOLSBACKBUTTON_OnPush_14, false ) );
            SLEEPTIME.OnAnalogChange.Add( new InputChangeHandlerWrapper( SLEEPTIME_OnChange_15, false ) );
            BASS_DB.OnAnalogChange.Add( new InputChangeHandlerWrapper( BASS_DB_OnChange_16, false ) );
            TREBLE_DB.OnAnalogChange.Add( new InputChangeHandlerWrapper( TREBLE_DB_OnChange_17, false ) );
            EQPRESET.OnAnalogChange.Add( new InputChangeHandlerWrapper( EQPRESET_OnChange_18, false ) );
            BALANCE.OnAnalogChange.Add( new InputChangeHandlerWrapper( BALANCE_OnChange_19, false ) );
            for( uint i = 0; i < 7; i++ )
            OPTIONSLINESELECTED[i+1].OnDigitalPush.Add( new InputChangeHandlerWrapper( OPTIONSLINESELECTED_OnPush_20, false ) );

            for( uint i = 0; i < 2; i++ )
            SLEEPLINESELECTED[i+1].OnDigitalPush.Add( new InputChangeHandlerWrapper( SLEEPLINESELECTED_OnPush_21, false ) );

            for( uint i = 0; i < 5; i++ )
            TOOLSLINESELECTED[i+1].OnDigitalPush.Add( new InputChangeHandlerWrapper( TOOLSLINESELECTED_OnPush_22, false ) );

            for( uint i = 0; i < 6; i++ )
            GROUPSLINESELECTED[i+1].OnDigitalPush.Add( new InputChangeHandlerWrapper( GROUPSLINESELECTED_OnPush_23, false ) );

            ACTIVESOURCEICON.OnAnalogChange.Add( new InputChangeHandlerWrapper( ACTIVESOURCEICON_OnChange_24, false ) );
            for( uint i = 0; i < 6; i++ )
            GROUPSACTIVE[i+1].OnDigitalChange.Add( new InputChangeHandlerWrapper( GROUPSACTIVE_OnChange_25, false ) );

            _SplusNVRAM.PopulateCustomAttributeList( true );

            NVRAM = _SplusNVRAM;
        }
        object PROCESS_OnPush_0( Object __EventInfo__ )
        {
            Crestron.Logos.SplusObjects.SignalEventArgs __SignalEventArg__ = (Crestron.Logos.SplusObjects.SignalEventArgs)__EventInfo__;
            try
            {
                SplusExecutionContext __context__ = SplusThreadStartCode(__SignalEventArg__);
                ushort I = 0;
                ushort ROOMNUMBER = 0;

                CrestronString TEMPNUMBERSTRING;
                TEMPNUMBERSTRING  = new CrestronString( Crestron.Logos.SplusObjects.CrestronStringEncoding.eEncodingASCII, 20, this );

                __context__.SourceCodeLine = 79;
                ushort __FN_FORSTART_VAL__1 = (ushort) ( 1 ) ;
                ushort __FN_FOREND_VAL__1 = (ushort)6;
                int __FN_FORSTEP_VAL__1 = (int)1;
                for ( I  = __FN_FORSTART_VAL__1; (__FN_FORSTEP_VAL__1 > 0)  ? ( (I  >= __FN_FORSTART_VAL__1) && (I  <= __FN_FOREND_VAL__1) ) : ( (I  <= __FN_FORSTART_VAL__1) && (I  >= __FN_FOREND_VAL__1) ) ; I  += (ushort)__FN_FORSTEP_VAL__1)
                    {
                    __context__.SourceCodeLine = 81;
                    CURRENTGROUP  .Value = (ushort) ( I ) ;
                    __context__.SourceCodeLine = 82;
                    Functions.ProcessLogic ( ) ;
                    __context__.SourceCodeLine = 84;
                    while ( Functions.TestForTrue  ( ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( 0 < Functions.Length( GROUPLISTIN[ I ] ) ) ) && Functions.TestForTrue ( Functions.BoolToInt ( 0 < Functions.Atoi( GROUPLISTIN[ I ] ) ) )) ))  ) )
                        {
                        __context__.SourceCodeLine = 86;
                        if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( Functions.Find( "," , GROUPLISTIN[ I ] ) > 0 ))  ) )
                            {
                            __context__.SourceCodeLine = 88;
                            TEMPNUMBERSTRING  .UpdateValue ( Functions.Remove ( "," , GROUPLISTIN [ I ] )  ) ;
                            __context__.SourceCodeLine = 89;
                            ROOMNUMBER = (ushort) ( Functions.Atoi( TEMPNUMBERSTRING ) ) ;
                            __context__.SourceCodeLine = 90;
                            if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( 0 < ROOMNUMBER ) ) && Functions.TestForTrue ( Functions.BoolToInt ( ROOMNUMBER <= 72 ) )) ))  ) )
                                {
                                __context__.SourceCodeLine = 91;
                                ROOMOUT [ ROOMNUMBER]  .Value = (ushort) ( 1 ) ;
                                }

                            }

                        else
                            {
                            __context__.SourceCodeLine = 95;
                            ROOMNUMBER = (ushort) ( Functions.Atoi( GROUPLISTIN[ I ] ) ) ;
                            __context__.SourceCodeLine = 96;
                            if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( (Functions.TestForTrue ( Functions.BoolToInt ( 0 < ROOMNUMBER ) ) && Functions.TestForTrue ( Functions.BoolToInt ( ROOMNUMBER <= 72 ) )) ))  ) )
                                {
                                __context__.SourceCodeLine = 97;
                                ROOMOUT [ ROOMNUMBER]  .Value = (ushort) ( 1 ) ;
                                }

                            __context__.SourceCodeLine = 98;
                            break ;
                            }

                        __context__.SourceCodeLine = 84;
                        }

                    __context__.SourceCodeLine = 102;
                    if ( Functions.TestForTrue  ( ( Functions.BoolToInt ( 0 < Functions.Length( GROUPNAMESIN[ I ] ) ))  ) )
                        {
                        __context__.SourceCodeLine = 103;
                        ROOMNAMEVALID  .Value = (ushort) ( 1 ) ;
                        }

                    __context__.SourceCodeLine = 105;
                    Functions.ProcessLogic ( ) ;
                    __context__.SourceCodeLine = 106;
                    RESETOUTPUTS (  __context__  ) ;
                    __context__.SourceCodeLine = 79;
                    }

                __context__.SourceCodeLine = 109;
                GROUPSINITIALIZED  .Value = (ushort) ( 1 ) ;

            }
            catch(Exception e) { ObjectCatchHandler(e); }
            finally { ObjectFinallyHandler( __SignalEventArg__ ); }
            return this;
        }